diff options
Diffstat (limited to 'src')
165 files changed, 8296 insertions, 2894 deletions
diff --git a/src/actions/index.js b/src/actions/index.js index fc525afeb..336344d76 100644 --- a/src/actions/index.js +++ b/src/actions/index.js | |||
@@ -13,6 +13,7 @@ import settings from './settings'; | |||
13 | import requests from './requests'; | 13 | import requests from './requests'; |
14 | import announcements from '../features/announcements/actions'; | 14 | import announcements from '../features/announcements/actions'; |
15 | import workspaces from '../features/workspaces/actions'; | 15 | import workspaces from '../features/workspaces/actions'; |
16 | import todos from '../features/todos/actions'; | ||
16 | 17 | ||
17 | const actions = Object.assign({}, { | 18 | const actions = Object.assign({}, { |
18 | service, | 19 | service, |
@@ -31,4 +32,5 @@ export default Object.assign( | |||
31 | defineActions(actions, PropTypes.checkPropTypes), | 32 | defineActions(actions, PropTypes.checkPropTypes), |
32 | { announcements }, | 33 | { announcements }, |
33 | { workspaces }, | 34 | { workspaces }, |
35 | { todos }, | ||
34 | ); | 36 | ); |
diff --git a/src/actions/user.js b/src/actions/user.js index ccf1fa56a..5d7d9a899 100644 --- a/src/actions/user.js +++ b/src/actions/user.js | |||
@@ -17,6 +17,9 @@ export default { | |||
17 | retrievePassword: { | 17 | retrievePassword: { |
18 | email: PropTypes.string.isRequired, | 18 | email: PropTypes.string.isRequired, |
19 | }, | 19 | }, |
20 | activateTrial: { | ||
21 | planId: PropTypes.string.isRequired, | ||
22 | }, | ||
20 | invite: { | 23 | invite: { |
21 | invites: PropTypes.array.isRequired, | 24 | invites: PropTypes.array.isRequired, |
22 | }, | 25 | }, |
diff --git a/src/api/UserApi.js b/src/api/UserApi.js index edfb88988..8ba8cd1e9 100644 --- a/src/api/UserApi.js +++ b/src/api/UserApi.js | |||
@@ -25,6 +25,10 @@ export default class UserApi { | |||
25 | return this.server.retrievePassword(email); | 25 | return this.server.retrievePassword(email); |
26 | } | 26 | } |
27 | 27 | ||
28 | activateTrial(data) { | ||
29 | return this.server.activateTrial(data); | ||
30 | } | ||
31 | |||
28 | invite(data) { | 32 | invite(data) { |
29 | return this.server.inviteUser(data); | 33 | return this.server.inviteUser(data); |
30 | } | 34 | } |
diff --git a/src/api/server/LocalApi.js b/src/api/server/LocalApi.js index ab1604a27..c4abc00e9 100644 --- a/src/api/server/LocalApi.js +++ b/src/api/server/LocalApi.js | |||
@@ -3,7 +3,7 @@ import du from 'du'; | |||
3 | 3 | ||
4 | import { getServicePartitionsDirectory } from '../../helpers/service-helpers.js'; | 4 | import { getServicePartitionsDirectory } from '../../helpers/service-helpers.js'; |
5 | 5 | ||
6 | const debug = require('debug')('Franz:LocalApi'); | 6 | const debug = require('debug')('Ferdi:LocalApi'); |
7 | 7 | ||
8 | const { session } = remote; | 8 | const { session } = remote; |
9 | 9 | ||
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js index efac5ca19..3d973e586 100644 --- a/src/api/server/ServerApi.js +++ b/src/api/server/ServerApi.js | |||
@@ -28,7 +28,7 @@ import { | |||
28 | removeServicePartitionDirectory, | 28 | removeServicePartitionDirectory, |
29 | } from '../../helpers/service-helpers.js'; | 29 | } from '../../helpers/service-helpers.js'; |
30 | 30 | ||
31 | const debug = require('debug')('Franz:ServerApi'); | 31 | const debug = require('debug')('Ferdi:ServerApi'); |
32 | 32 | ||
33 | module.paths.unshift( | 33 | module.paths.unshift( |
34 | getDevRecipeDirectory(), | 34 | getDevRecipeDirectory(), |
@@ -76,6 +76,20 @@ export default class ServerApi { | |||
76 | return u.token; | 76 | return u.token; |
77 | } | 77 | } |
78 | 78 | ||
79 | async activateTrial(data) { | ||
80 | const request = await sendAuthRequest(`${apiBase()}/payment/trial`, { | ||
81 | method: 'POST', | ||
82 | body: JSON.stringify(data), | ||
83 | }); | ||
84 | if (!request.ok) { | ||
85 | throw request; | ||
86 | } | ||
87 | const trial = await request.json(); | ||
88 | |||
89 | debug('ServerApi::signup resolves', trial); | ||
90 | return true; | ||
91 | } | ||
92 | |||
79 | async inviteUser(data) { | 93 | async inviteUser(data) { |
80 | const request = await sendAuthRequest(`${apiBase()}/invite`, { | 94 | const request = await sendAuthRequest(`${apiBase()}/invite`, { |
81 | method: 'POST', | 95 | method: 'POST', |
@@ -468,7 +482,7 @@ export default class ServerApi { | |||
468 | return services; | 482 | return services; |
469 | } | 483 | } |
470 | } catch (err) { | 484 | } catch (err) { |
471 | throw (new Error('ServerApi::getLegacyServices no config found')); | 485 | console.error('ServerApi::getLegacyServices no config found'); |
472 | } | 486 | } |
473 | 487 | ||
474 | return []; | 488 | return []; |
diff --git a/src/components/TrialActivationInfoBar.js b/src/components/TrialActivationInfoBar.js new file mode 100644 index 000000000..77ab97565 --- /dev/null +++ b/src/components/TrialActivationInfoBar.js | |||
@@ -0,0 +1,94 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { defineMessages, intlShape } from 'react-intl'; | ||
4 | import ms from 'ms'; | ||
5 | import injectSheet from 'react-jss'; | ||
6 | import classnames from 'classnames'; | ||
7 | |||
8 | import InfoBar from './ui/InfoBar'; | ||
9 | |||
10 | const messages = defineMessages({ | ||
11 | message: { | ||
12 | id: 'infobar.trialActivated', | ||
13 | defaultMessage: '!!!Your trial was successfully activated. Happy messaging!', | ||
14 | }, | ||
15 | }); | ||
16 | |||
17 | const styles = { | ||
18 | notification: { | ||
19 | height: 'auto', | ||
20 | position: 'absolute', | ||
21 | top: -50, | ||
22 | transition: 'top 0.3s', | ||
23 | zIndex: 500, | ||
24 | width: 'calc(100% - 300px)', | ||
25 | }, | ||
26 | show: { | ||
27 | top: 0, | ||
28 | }, | ||
29 | }; | ||
30 | |||
31 | @injectSheet(styles) | ||
32 | class TrialActivationInfoBar extends Component { | ||
33 | static propTypes = { | ||
34 | // eslint-disable-next-line | ||
35 | classes: PropTypes.object.isRequired, | ||
36 | }; | ||
37 | |||
38 | static contextTypes = { | ||
39 | intl: intlShape, | ||
40 | }; | ||
41 | |||
42 | state = { | ||
43 | showing: false, | ||
44 | removed: false, | ||
45 | } | ||
46 | |||
47 | componentDidMount() { | ||
48 | setTimeout(() => { | ||
49 | this.setState({ | ||
50 | showing: true, | ||
51 | }); | ||
52 | }, 0); | ||
53 | |||
54 | setTimeout(() => { | ||
55 | this.setState({ | ||
56 | showing: false, | ||
57 | }); | ||
58 | }, ms('6s')); | ||
59 | |||
60 | setTimeout(() => { | ||
61 | this.setState({ | ||
62 | removed: true, | ||
63 | }); | ||
64 | }, ms('7s')); | ||
65 | } | ||
66 | |||
67 | render() { | ||
68 | const { classes } = this.props; | ||
69 | const { showing, removed } = this.state; | ||
70 | const { intl } = this.context; | ||
71 | |||
72 | if (removed) return null; | ||
73 | |||
74 | return ( | ||
75 | <div | ||
76 | className={classnames({ | ||
77 | [classes.notification]: true, | ||
78 | [classes.show]: showing, | ||
79 | })} | ||
80 | > | ||
81 | <InfoBar | ||
82 | type="primary" | ||
83 | position="top" | ||
84 | sticky | ||
85 | > | ||
86 | <span className="mdi mdi-information" /> | ||
87 | {intl.formatMessage(messages.message)} | ||
88 | </InfoBar> | ||
89 | </div> | ||
90 | ); | ||
91 | } | ||
92 | } | ||
93 | |||
94 | export default TrialActivationInfoBar; | ||
diff --git a/src/components/auth/Pricing.js b/src/components/auth/Pricing.js index 13a1e2351..a77ad7742 100644 --- a/src/components/auth/Pricing.js +++ b/src/components/auth/Pricing.js | |||
@@ -1,40 +1,107 @@ | |||
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 { observer, PropTypes as MobxPropTypes } 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 { Link } from 'react-router'; | 5 | import injectSheet from 'react-jss'; |
6 | import { H2, Loader } from '@meetfranz/ui'; | ||
7 | import classnames from 'classnames'; | ||
8 | |||
9 | import { Button } from '@meetfranz/forms'; | ||
10 | import { FeatureItem } from '../ui/FeatureItem'; | ||
11 | import { FeatureList } from '../ui/FeatureList'; | ||
6 | 12 | ||
7 | // import Button from '../ui/Button'; | ||
8 | import Loader from '../ui/Loader'; | ||
9 | import Appear from '../ui/effects/Appear'; | ||
10 | import SubscriptionForm from '../../containers/subscription/SubscriptionFormScreen'; | ||
11 | 13 | ||
12 | const messages = defineMessages({ | 14 | const messages = defineMessages({ |
13 | headline: { | 15 | headline: { |
14 | id: 'pricing.headline', | 16 | id: 'pricing.trial.headline', |
15 | defaultMessage: '!!!Support Ferdi', | 17 | defaultMessage: '!!!Franz Professional', |
18 | }, | ||
19 | personalOffer: { | ||
20 | id: 'pricing.trial.subheadline', | ||
21 | defaultMessage: '!!!Your personal welcome offer:', | ||
22 | }, | ||
23 | noStringsAttachedHeadline: { | ||
24 | id: 'pricing.trial.terms.headline', | ||
25 | defaultMessage: '!!!No strings attached', | ||
26 | }, | ||
27 | noCreditCard: { | ||
28 | id: 'pricing.trial.terms.noCreditCard', | ||
29 | defaultMessage: '!!!No credit card required', | ||
16 | }, | 30 | }, |
17 | monthlySupportLabel: { | 31 | automaticTrialEnd: { |
18 | id: 'pricing.support.label', | 32 | id: 'pricing.trial.terms.automaticTrialEnd', |
19 | defaultMessage: '!!!Select your support plan', | 33 | defaultMessage: '!!!Your free trial ends automatically after 14 days', |
20 | }, | 34 | }, |
21 | submitButtonLabel: { | 35 | activationError: { |
22 | id: 'pricing.submit.label', | 36 | id: 'pricing.trial.error', |
23 | defaultMessage: '!!!Support the development of Ferdi', | 37 | defaultMessage: '!!!Sorry, we could not activate your trial!', |
24 | }, | 38 | }, |
25 | skipPayment: { | 39 | ctaAccept: { |
26 | id: 'pricing.link.skipPayment', | 40 | id: 'pricing.trial.cta.accept', |
27 | defaultMessage: '!!!I don\'t want to support the development of Ferdi.', | 41 | defaultMessage: '!!!Yes, upgrade my account to Franz Professional', |
42 | }, | ||
43 | ctaSkip: { | ||
44 | id: 'pricing.trial.cta.skip', | ||
45 | defaultMessage: '!!!Continue to Ferdi', | ||
46 | }, | ||
47 | featuresHeadline: { | ||
48 | id: 'pricing.trial.features.headline', | ||
49 | defaultMessage: '!!!Franz Professional includes:', | ||
28 | }, | 50 | }, |
29 | }); | 51 | }); |
30 | 52 | ||
31 | export default @observer class Signup extends Component { | 53 | const styles = theme => ({ |
54 | container: { | ||
55 | position: 'relative', | ||
56 | marginLeft: -150, | ||
57 | }, | ||
58 | welcomeOffer: { | ||
59 | textAlign: 'center', | ||
60 | fontWeight: 'bold', | ||
61 | }, | ||
62 | keyTerms: { | ||
63 | textAlign: 'center', | ||
64 | }, | ||
65 | content: { | ||
66 | position: 'relative', | ||
67 | zIndex: 20, | ||
68 | }, | ||
69 | featureContainer: { | ||
70 | width: 300, | ||
71 | position: 'absolute', | ||
72 | left: 'calc(100% / 2 + 225px)', | ||
73 | top: 155, | ||
74 | background: theme.signup.pricing.feature.background, | ||
75 | height: 'auto', | ||
76 | padding: 20, | ||
77 | borderTopRightRadius: theme.borderRadius, | ||
78 | borderBottomRightRadius: theme.borderRadius, | ||
79 | zIndex: 10, | ||
80 | }, | ||
81 | featureItem: { | ||
82 | borderBottom: [1, 'solid', theme.signup.pricing.feature.border], | ||
83 | }, | ||
84 | cta: { | ||
85 | marginTop: 40, | ||
86 | width: '100%', | ||
87 | }, | ||
88 | skipLink: { | ||
89 | textAlign: 'center', | ||
90 | marginTop: 10, | ||
91 | }, | ||
92 | error: { | ||
93 | margin: [20, 0, 0], | ||
94 | color: theme.styleTypes.danger.accent, | ||
95 | }, | ||
96 | }); | ||
97 | |||
98 | export default @observer @injectSheet(styles) class Signup extends Component { | ||
32 | static propTypes = { | 99 | static propTypes = { |
33 | donor: MobxPropTypes.objectOrObservableObject.isRequired, | 100 | onSubmit: PropTypes.func.isRequired, |
34 | isLoading: PropTypes.bool.isRequired, | 101 | isLoadingRequiredData: PropTypes.bool.isRequired, |
35 | isLoadingUser: PropTypes.bool.isRequired, | 102 | isActivatingTrial: PropTypes.bool.isRequired, |
36 | onCloseSubscriptionWindow: PropTypes.func.isRequired, | 103 | trialActivationError: PropTypes.bool.isRequired, |
37 | skipAction: PropTypes.func.isRequired, | 104 | classes: PropTypes.object.isRequired, |
38 | }; | 105 | }; |
39 | 106 | ||
40 | static contextTypes = { | 107 | static contextTypes = { |
@@ -43,70 +110,37 @@ export default @observer class Signup extends Component { | |||
43 | 110 | ||
44 | render() { | 111 | render() { |
45 | const { | 112 | const { |
46 | donor, | 113 | onSubmit, |
47 | isLoading, | 114 | isLoadingRequiredData, |
48 | isLoadingUser, | 115 | isActivatingTrial, |
49 | onCloseSubscriptionWindow, | 116 | trialActivationError, |
50 | skipAction, | 117 | classes, |
51 | } = this.props; | 118 | } = this.props; |
52 | const { intl } = this.context; | 119 | const { intl } = this.context; |
53 | 120 | ||
54 | return ( | 121 | return ( |
55 | <div className="auth__scroll-container"> | 122 | <div className={classnames('auth__scroll-container', classes.container)}> |
56 | <div className="auth__container auth__container--signup"> | 123 | <div className={classnames('auth__container', 'auth__container--signup', classes.content)}> |
57 | <form className="Ferdi-form auth__form"> | 124 | <form className="franz-form auth__form"> |
58 | <img | 125 | {isLoadingRequiredData ? <Loader /> : ( |
59 | src="./assets/images/sm.png" | 126 | <img |
60 | className="auth__logo auth__logo--sm" | 127 | src="./assets/images/sm.png" |
61 | alt="" | 128 | className="auth__logo auth__logo--sm" |
62 | /> | 129 | alt="" |
130 | /> | ||
131 | )} | ||
132 | <p className={classes.welcomeOffer}>{intl.formatMessage(messages.personalOffer)}</p> | ||
63 | <h1>{intl.formatMessage(messages.headline)}</h1> | 133 | <h1>{intl.formatMessage(messages.headline)}</h1> |
64 | <div className="auth__letter"> | 134 | <div className="auth__letter"> |
65 | {isLoadingUser && ( | 135 | <p> |
66 | <p>Loading</p> | 136 | We built Franz with a lot of effort, manpower and love, |
67 | )} | 137 | to boost up your messaging experience. |
68 | {!isLoadingUser && ( | 138 | <br /> |
69 | donor.amount ? ( | 139 | </p> |
70 | <span> | 140 | <p> |
71 | <p> | 141 | Get the free 14 day Franz Professional trial and see your communication evolving. |
72 | Thank you so much for your previous donation of | 142 | <br /> |
73 | {' '} | 143 | </p> |
74 | <strong> | ||
75 | $ | ||
76 | {donor.amount} | ||
77 | </strong> | ||
78 | . | ||
79 | <br /> | ||
80 | Your support allowed us to get where we are today. | ||
81 | <br /> | ||
82 | </p> | ||
83 | <p> | ||
84 | As an early supporter, you get | ||
85 | {' '} | ||
86 | <strong>a lifetime premium supporter license</strong> | ||
87 | {' '} | ||
88 | without any | ||
89 | additional charges. | ||
90 | </p> | ||
91 | <p> | ||
92 | However, If you want to keep supporting us, you are more than welcome to subscribe to a plan. | ||
93 | <br /> | ||
94 | <br /> | ||
95 | </p> | ||
96 | </span> | ||
97 | ) : ( | ||
98 | <span> | ||
99 | <p> | ||
100 | We built Ferdi with a lot of effort, manpower and love, | ||
101 | to bring you the best messaging experience. | ||
102 | <br /> | ||
103 | </p> | ||
104 | <p> | ||
105 | Getting a Ferdi Premium Supporter License will allow us to keep improving Ferdi for you. | ||
106 | </p> | ||
107 | </span> | ||
108 | ) | ||
109 | )} | ||
110 | <p> | 144 | <p> |
111 | Thanks for being a hero. | 145 | Thanks for being a hero. |
112 | </p> | 146 | </p> |
@@ -114,20 +148,48 @@ export default @observer class Signup extends Component { | |||
114 | <strong>Stefan Malzner</strong> | 148 | <strong>Stefan Malzner</strong> |
115 | </p> | 149 | </p> |
116 | </div> | 150 | </div> |
117 | <Loader loaded={!isLoading}> | 151 | <div className={classes.keyTerms}> |
118 | <Appear transitionName="slideDown"> | 152 | <H2> |
119 | <span className="label">{intl.formatMessage(messages.monthlySupportLabel)}</span> | 153 | {intl.formatMessage(messages.noStringsAttachedHeadline)} |
120 | <SubscriptionForm | 154 | </H2> |
121 | onCloseWindow={onCloseSubscriptionWindow} | 155 | <ul className={classes.keyTermsList}> |
122 | showSkipOption | 156 | <FeatureItem icon="👉" name={intl.formatMessage(messages.noCreditCard)} /> |
123 | skipAction={skipAction} | 157 | <FeatureItem icon="👉" name={intl.formatMessage(messages.automaticTrialEnd)} /> |
124 | hideInfo={Boolean(donor.amount)} | 158 | </ul> |
125 | skipButtonLabel={intl.formatMessage(messages.skipPayment)} | 159 | </div> |
126 | /> | 160 | {trialActivationError && ( |
127 | </Appear> | 161 | <p className={classes.error}>{intl.formatMessage(messages.activationError)}</p> |
128 | </Loader> | 162 | )} |
163 | <Button | ||
164 | label={intl.formatMessage(messages.ctaAccept)} | ||
165 | className={classes.cta} | ||
166 | onClick={onSubmit} | ||
167 | busy={isActivatingTrial} | ||
168 | disabled={isLoadingRequiredData || isActivatingTrial} | ||
169 | /> | ||
170 | <p className={classes.skipLink}> | ||
171 | <a href="#/">{intl.formatMessage(messages.ctaSkip)}</a> | ||
172 | </p> | ||
129 | </form> | 173 | </form> |
130 | </div> | 174 | </div> |
175 | <div className={classes.featureContainer}> | ||
176 | <H2> | ||
177 | {intl.formatMessage(messages.featuresHeadline)} | ||
178 | </H2> | ||
179 | {/* <ul className={classes.features}> | ||
180 | <FeatureItem name="Add unlimited services" className={classes.featureItem} /> | ||
181 | <FeatureItem name="Spellchecker support" className={classes.featureItem} /> | ||
182 | <FeatureItem name="Workspaces" className={classes.featureItem} /> | ||
183 | <FeatureItem name="Add Custom Websites" className={classes.featureItem} /> | ||
184 | <FeatureItem name="On-premise & other Hosted Services" className={classes.featureItem} /> | ||
185 | <FeatureItem name="Install 3rd party services" className={classes.featureItem} /> | ||
186 | <FeatureItem name="Service Proxies" className={classes.featureItem} /> | ||
187 | <FeatureItem name="Team Management" className={classes.featureItem} /> | ||
188 | <FeatureItem name="No Waiting Screens" className={classes.featureItem} /> | ||
189 | <FeatureItem name="Forever ad-free" className={classes.featureItem} /> | ||
190 | </ul> */} | ||
191 | <FeatureList /> | ||
192 | </div> | ||
131 | </div> | 193 | </div> |
132 | ); | 194 | ); |
133 | } | 195 | } |
diff --git a/src/components/auth/Signup.js b/src/components/auth/Signup.js index 2aedbe6ea..b36e71ce1 100644 --- a/src/components/auth/Signup.js +++ b/src/components/auth/Signup.js | |||
@@ -7,7 +7,6 @@ import { isDevMode, useLiveAPI } from '../../environment'; | |||
7 | import Form from '../../lib/Form'; | 7 | import Form from '../../lib/Form'; |
8 | import { required, email, minLength } from '../../helpers/validation-helpers'; | 8 | import { required, email, minLength } from '../../helpers/validation-helpers'; |
9 | import Input from '../ui/Input'; | 9 | import Input from '../ui/Input'; |
10 | import Radio from '../ui/Radio'; | ||
11 | import Button from '../ui/Button'; | 10 | import Button from '../ui/Button'; |
12 | import Link from '../ui/Link'; | 11 | import Link from '../ui/Link'; |
13 | import Infobox from '../ui/Infobox'; | 12 | import Infobox from '../ui/Infobox'; |
@@ -31,10 +30,10 @@ const messages = defineMessages({ | |||
31 | id: 'signup.email.label', | 30 | id: 'signup.email.label', |
32 | defaultMessage: '!!!Email address', | 31 | defaultMessage: '!!!Email address', |
33 | }, | 32 | }, |
34 | companyLabel: { | 33 | // companyLabel: { |
35 | id: 'signup.company.label', | 34 | // id: 'signup.company.label', |
36 | defaultMessage: '!!!Company', | 35 | // defaultMessage: '!!!Company', |
37 | }, | 36 | // }, |
38 | passwordLabel: { | 37 | passwordLabel: { |
39 | id: 'signup.password.label', | 38 | id: 'signup.password.label', |
40 | defaultMessage: '!!!Password', | 39 | defaultMessage: '!!!Password', |
@@ -79,20 +78,6 @@ export default @observer class Signup extends Component { | |||
79 | 78 | ||
80 | form = new Form({ | 79 | form = new Form({ |
81 | fields: { | 80 | fields: { |
82 | accountType: { | ||
83 | value: 'individual', | ||
84 | validators: [required], | ||
85 | options: [{ | ||
86 | value: 'individual', | ||
87 | label: 'Individual', | ||
88 | }, { | ||
89 | value: 'non-profit', | ||
90 | label: 'Non-Profit', | ||
91 | }, { | ||
92 | value: 'company', | ||
93 | label: 'Company', | ||
94 | }], | ||
95 | }, | ||
96 | firstname: { | 81 | firstname: { |
97 | label: this.context.intl.formatMessage(messages.firstnameLabel), | 82 | label: this.context.intl.formatMessage(messages.firstnameLabel), |
98 | value: '', | 83 | value: '', |
@@ -108,10 +93,6 @@ export default @observer class Signup extends Component { | |||
108 | value: '', | 93 | value: '', |
109 | validators: [required, email], | 94 | validators: [required, email], |
110 | }, | 95 | }, |
111 | organization: { | ||
112 | label: this.context.intl.formatMessage(messages.companyLabel), | ||
113 | value: '', // TODO: make required when accountType: company | ||
114 | }, | ||
115 | password: { | 96 | password: { |
116 | label: this.context.intl.formatMessage(messages.passwordLabel), | 97 | label: this.context.intl.formatMessage(messages.passwordLabel), |
117 | value: '', | 98 | value: '', |
@@ -153,7 +134,6 @@ export default @observer class Signup extends Component { | |||
153 | In Dev Mode your data is not persistent. Please use the live app for accesing the production API. | 134 | In Dev Mode your data is not persistent. Please use the live app for accesing the production API. |
154 | </Infobox> | 135 | </Infobox> |
155 | )} | 136 | )} |
156 | <Radio field={form.$('accountType')} showLabel={false} /> | ||
157 | <div className="grid__row"> | 137 | <div className="grid__row"> |
158 | <Input field={form.$('firstname')} focus /> | 138 | <Input field={form.$('firstname')} focus /> |
159 | <Input field={form.$('lastname')} /> | 139 | <Input field={form.$('lastname')} /> |
@@ -164,9 +144,6 @@ export default @observer class Signup extends Component { | |||
164 | showPasswordToggle | 144 | showPasswordToggle |
165 | scorePassword | 145 | scorePassword |
166 | /> | 146 | /> |
167 | {form.$('accountType').value === 'company' && ( | ||
168 | <Input field={form.$('organization')} /> | ||
169 | )} | ||
170 | {error.code === 'email-duplicate' && ( | 147 | {error.code === 'email-duplicate' && ( |
171 | <p className="error-message center">{intl.formatMessage(messages.emailDuplicate)}</p> | 148 | <p className="error-message center">{intl.formatMessage(messages.emailDuplicate)}</p> |
172 | )} | 149 | )} |
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index 5c3d301e0..e82275b9f 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js | |||
@@ -16,6 +16,8 @@ import { isWindows } from '../../environment'; | |||
16 | import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator'; | 16 | import WorkspaceSwitchingIndicator from '../../features/workspaces/components/WorkspaceSwitchingIndicator'; |
17 | import { workspaceStore } from '../../features/workspaces'; | 17 | import { workspaceStore } from '../../features/workspaces'; |
18 | import AppUpdateInfoBar from '../AppUpdateInfoBar'; | 18 | import AppUpdateInfoBar from '../AppUpdateInfoBar'; |
19 | import TrialActivationInfoBar from '../TrialActivationInfoBar'; | ||
20 | import Todos from '../../features/todos/containers/TodosScreen'; | ||
19 | 21 | ||
20 | function createMarkup(HTMLString) { | 22 | function createMarkup(HTMLString) { |
21 | return { __html: HTMLString }; | 23 | return { __html: HTMLString }; |
@@ -42,7 +44,8 @@ const messages = defineMessages({ | |||
42 | 44 | ||
43 | const styles = theme => ({ | 45 | const styles = theme => ({ |
44 | appContent: { | 46 | appContent: { |
45 | width: `calc(100% + ${theme.workspaces.drawer.width}px)`, | 47 | // width: `calc(100% + ${theme.workspaces.drawer.width}px)`, |
48 | width: '100%', | ||
46 | transition: 'transform 0.5s ease', | 49 | transition: 'transform 0.5s ease', |
47 | transform() { | 50 | transform() { |
48 | return workspaceStore.isWorkspaceDrawerOpen ? 'translateX(0)' : `translateX(-${theme.workspaces.drawer.width}px)`; | 51 | return workspaceStore.isWorkspaceDrawerOpen ? 'translateX(0)' : `translateX(-${theme.workspaces.drawer.width}px)`; |
@@ -60,7 +63,6 @@ class AppLayout extends Component { | |||
60 | services: PropTypes.element.isRequired, | 63 | services: PropTypes.element.isRequired, |
61 | children: PropTypes.element, | 64 | children: PropTypes.element, |
62 | news: MobxPropTypes.arrayOrObservableArray.isRequired, | 65 | news: MobxPropTypes.arrayOrObservableArray.isRequired, |
63 | // isOnline: PropTypes.bool.isRequired, | ||
64 | showServicesUpdatedInfoBar: PropTypes.bool.isRequired, | 66 | showServicesUpdatedInfoBar: PropTypes.bool.isRequired, |
65 | appUpdateIsDownloaded: PropTypes.bool.isRequired, | 67 | appUpdateIsDownloaded: PropTypes.bool.isRequired, |
66 | nextAppReleaseVersion: PropTypes.string, | 68 | nextAppReleaseVersion: PropTypes.string, |
@@ -72,6 +74,7 @@ class AppLayout extends Component { | |||
72 | areRequiredRequestsSuccessful: PropTypes.bool.isRequired, | 74 | areRequiredRequestsSuccessful: PropTypes.bool.isRequired, |
73 | retryRequiredRequests: PropTypes.func.isRequired, | 75 | retryRequiredRequests: PropTypes.func.isRequired, |
74 | areRequiredRequestsLoading: PropTypes.bool.isRequired, | 76 | areRequiredRequestsLoading: PropTypes.bool.isRequired, |
77 | hasActivatedTrial: PropTypes.bool.isRequired, | ||
75 | }; | 78 | }; |
76 | 79 | ||
77 | static defaultProps = { | 80 | static defaultProps = { |
@@ -91,7 +94,6 @@ class AppLayout extends Component { | |||
91 | sidebar, | 94 | sidebar, |
92 | services, | 95 | services, |
93 | children, | 96 | children, |
94 | // isOnline, | ||
95 | news, | 97 | news, |
96 | showServicesUpdatedInfoBar, | 98 | showServicesUpdatedInfoBar, |
97 | appUpdateIsDownloaded, | 99 | appUpdateIsDownloaded, |
@@ -104,6 +106,7 @@ class AppLayout extends Component { | |||
104 | areRequiredRequestsSuccessful, | 106 | areRequiredRequestsSuccessful, |
105 | retryRequiredRequests, | 107 | retryRequiredRequests, |
106 | areRequiredRequestsLoading, | 108 | areRequiredRequestsLoading, |
109 | hasActivatedTrial, | ||
107 | } = this.props; | 110 | } = this.props; |
108 | 111 | ||
109 | const { intl } = this.context; | 112 | const { intl } = this.context; |
@@ -125,29 +128,31 @@ class AppLayout extends Component { | |||
125 | sticky={item.sticky} | 128 | sticky={item.sticky} |
126 | onHide={() => removeNewsItem({ newsId: item.id })} | 129 | onHide={() => removeNewsItem({ newsId: item.id })} |
127 | > | 130 | > |
128 | <span dangerouslySetInnerHTML={createMarkup(item.message)} /> | 131 | <span |
132 | dangerouslySetInnerHTML={createMarkup(item.message)} | ||
133 | onClick={(event) => { | ||
134 | const { target } = event; | ||
135 | if (target && target.hasAttribute('data-is-news-cta')) { | ||
136 | removeNewsItem({ newsId: item.id }); | ||
137 | } | ||
138 | }} | ||
139 | /> | ||
129 | </InfoBar> | 140 | </InfoBar> |
130 | ))} | 141 | ))} |
131 | {/* {!isOnline && ( | 142 | {hasActivatedTrial && ( |
132 | <InfoBar | 143 | <TrialActivationInfoBar /> |
133 | type="danger" | 144 | )} |
134 | sticky | ||
135 | > | ||
136 | <span className="mdi mdi-flash" /> | ||
137 | {intl.formatMessage(globalMessages.notConnectedToTheInternet)} | ||
138 | </InfoBar> | ||
139 | )} */} | ||
140 | {!areRequiredRequestsSuccessful && showRequiredRequestsError && ( | 145 | {!areRequiredRequestsSuccessful && showRequiredRequestsError && ( |
141 | <InfoBar | 146 | <InfoBar |
142 | type="danger" | 147 | type="danger" |
143 | ctaLabel="Try again" | 148 | ctaLabel="Try again" |
144 | ctaLoading={areRequiredRequestsLoading} | 149 | ctaLoading={areRequiredRequestsLoading} |
145 | sticky | 150 | sticky |
146 | onClick={retryRequiredRequests} | 151 | onClick={retryRequiredRequests} |
147 | > | 152 | > |
148 | <span className="mdi mdi-flash" /> | 153 | <span className="mdi mdi-flash" /> |
149 | {intl.formatMessage(messages.requiredRequestsFailed)} | 154 | {intl.formatMessage(messages.requiredRequestsFailed)} |
150 | </InfoBar> | 155 | </InfoBar> |
151 | )} | 156 | )} |
152 | {authRequestFailed && ( | 157 | {authRequestFailed && ( |
153 | <InfoBar | 158 | <InfoBar |
@@ -183,6 +188,7 @@ class AppLayout extends Component { | |||
183 | {services} | 188 | {services} |
184 | {children} | 189 | {children} |
185 | </div> | 190 | </div> |
191 | <Todos /> | ||
186 | </div> | 192 | </div> |
187 | </div> | 193 | </div> |
188 | </ErrorBoundary> | 194 | </ErrorBoundary> |
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js index 1bf2554b5..729bd35af 100644 --- a/src/components/layout/Sidebar.js +++ b/src/components/layout/Sidebar.js | |||
@@ -8,6 +8,8 @@ import { Link } from 'react-router'; | |||
8 | import Tabbar from '../services/tabs/Tabbar'; | 8 | import Tabbar from '../services/tabs/Tabbar'; |
9 | import { ctrlKey } from '../../environment'; | 9 | import { ctrlKey } from '../../environment'; |
10 | import { workspaceStore } from '../../features/workspaces'; | 10 | import { workspaceStore } from '../../features/workspaces'; |
11 | import { todosStore } from '../../features/todos'; | ||
12 | import { todoActions } from '../../features/todos/actions'; | ||
11 | 13 | ||
12 | const messages = defineMessages({ | 14 | const messages = defineMessages({ |
13 | settings: { | 15 | settings: { |
@@ -34,6 +36,14 @@ const messages = defineMessages({ | |||
34 | id: 'sidebar.closeWorkspaceDrawer', | 36 | id: 'sidebar.closeWorkspaceDrawer', |
35 | defaultMessage: '!!!Close workspace drawer', | 37 | defaultMessage: '!!!Close workspace drawer', |
36 | }, | 38 | }, |
39 | openTodosDrawer: { | ||
40 | id: 'sidebar.openTodosDrawer', | ||
41 | defaultMessage: '!!!Open Franz Todos', | ||
42 | }, | ||
43 | closeTodosDrawer: { | ||
44 | id: 'sidebar.closeTodosDrawer', | ||
45 | defaultMessage: '!!!Close Franz Todos', | ||
46 | }, | ||
37 | }); | 47 | }); |
38 | 48 | ||
39 | export default @observer class Sidebar extends Component { | 49 | export default @observer class Sidebar extends Component { |
@@ -79,6 +89,10 @@ export default @observer class Sidebar extends Component { | |||
79 | toggleWorkspaceDrawer, | 89 | toggleWorkspaceDrawer, |
80 | } = this.props; | 90 | } = this.props; |
81 | const { intl } = this.context; | 91 | const { intl } = this.context; |
92 | const todosToggleMessage = ( | ||
93 | todosStore.isTodosPanelVisible ? messages.closeTodosDrawer : messages.openTodosDrawer | ||
94 | ); | ||
95 | |||
82 | const workspaceToggleMessage = ( | 96 | const workspaceToggleMessage = ( |
83 | isWorkspaceDrawerOpen ? messages.closeWorkspaceDrawer : messages.openWorkspaceDrawer | 97 | isWorkspaceDrawerOpen ? messages.closeWorkspaceDrawer : messages.openWorkspaceDrawer |
84 | ); | 98 | ); |
@@ -91,54 +105,63 @@ export default @observer class Sidebar extends Component { | |||
91 | enableToolTip={() => this.enableToolTip()} | 105 | enableToolTip={() => this.enableToolTip()} |
92 | disableToolTip={() => this.disableToolTip()} | 106 | disableToolTip={() => this.disableToolTip()} |
93 | /> | 107 | /> |
94 | { | 108 | { isLoggedIn ? ( |
95 | isLoggedIn ? ( | 109 | <> |
96 | <> | 110 | {todosStore.isFeatureEnabled && todosStore.isFeatureEnabledByUser ? ( |
97 | {workspaceStore.isFeatureEnabled ? ( | ||
98 | <button | ||
99 | type="button" | ||
100 | onClick={() => { | ||
101 | toggleWorkspaceDrawer(); | ||
102 | this.updateToolTip(); | ||
103 | }} | ||
104 | className={`sidebar__button sidebar__button--workspaces ${isWorkspaceDrawerOpen ? 'is-active' : ''}`} | ||
105 | data-tip={`${intl.formatMessage(workspaceToggleMessage)} (${ctrlKey}+D)`} | ||
106 | > | ||
107 | <i className="mdi mdi-view-grid" /> | ||
108 | </button> | ||
109 | ) : null} | ||
110 | |||
111 | <button | 111 | <button |
112 | type="button" | 112 | type="button" |
113 | onClick={() => { | 113 | onClick={() => { |
114 | toggleMuteApp(); | 114 | todoActions.toggleTodosPanel(); |
115 | this.updateToolTip(); | 115 | this.updateToolTip(); |
116 | }} | 116 | }} |
117 | className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`} | 117 | className="sidebar__button sidebar__button--workspaces" |
118 | data-tip={`${intl.formatMessage(isAppMuted ? messages.unmute : messages.mute)} (${ctrlKey}+Shift+M)`} | 118 | data-tip={`${intl.formatMessage(todosToggleMessage)} (${ctrlKey}+T)`} |
119 | > | 119 | > |
120 | <i className={`mdi mdi-bell${isAppMuted ? '-off' : ''}`} /> | 120 | <i className="mdi mdi-check-all" /> |
121 | </button> | 121 | </button> |
122 | ) : null} | ||
123 | {workspaceStore.isFeatureEnabled ? ( | ||
122 | <button | 124 | <button |
123 | type="button" | 125 | type="button" |
124 | onClick={() => openSettings({ path: 'recipes' })} | 126 | onClick={() => { |
125 | className="sidebar__button sidebar__button--new-service" | 127 | toggleWorkspaceDrawer(); |
126 | data-tip={`${intl.formatMessage(messages.addNewService)} (${ctrlKey}+N)`} | 128 | this.updateToolTip(); |
129 | }} | ||
130 | className={`sidebar__button sidebar__button--workspaces ${isWorkspaceDrawerOpen ? 'is-active' : ''}`} | ||
131 | data-tip={`${intl.formatMessage(workspaceToggleMessage)} (${ctrlKey}+D)`} | ||
127 | > | 132 | > |
128 | <i className="mdi mdi-plus-box" /> | 133 | <i className="mdi mdi-view-grid" /> |
129 | </button> | 134 | </button> |
130 | </> | 135 | ) : null} |
131 | ) : ( | 136 | <button |
132 | <Link | 137 | type="button" |
133 | to="/auth/welcome" | 138 | onClick={() => { |
139 | toggleMuteApp(); | ||
140 | this.updateToolTip(); | ||
141 | }} | ||
142 | className={`sidebar__button sidebar__button--audio ${isAppMuted ? 'is-muted' : ''}`} | ||
143 | data-tip={`${intl.formatMessage(isAppMuted ? messages.unmute : messages.mute)} (${ctrlKey}+Shift+M)`} | ||
144 | > | ||
145 | <i className={`mdi mdi-bell${isAppMuted ? '-off' : ''}`} /> | ||
146 | </button> | ||
147 | <button | ||
148 | type="button" | ||
149 | onClick={() => openSettings({ path: 'recipes' })} | ||
134 | className="sidebar__button sidebar__button--new-service" | 150 | className="sidebar__button sidebar__button--new-service" |
135 | data-tip="Login" | 151 | data-tip={`${intl.formatMessage(messages.addNewService)} (${ctrlKey}+N)`} |
136 | > | 152 | > |
137 | <i className="mdi mdi-login-variant" /> | 153 | <i className="mdi mdi-plus-box" /> |
138 | </Link> | 154 | </button> |
139 | ) | 155 | </> |
140 | } | 156 | ) : ( |
141 | 157 | <Link | |
158 | to="/auth/welcome" | ||
159 | className="sidebar__button sidebar__button--new-service" | ||
160 | data-tip="Login" | ||
161 | > | ||
162 | <i className="mdi mdi-login-variant" /> | ||
163 | </Link> | ||
164 | )} | ||
142 | <button | 165 | <button |
143 | type="button" | 166 | type="button" |
144 | onClick={() => openSettings({ path: 'app' })} | 167 | onClick={() => openSettings({ path: 'app' })} |
diff --git a/src/components/services/content/ServiceRestricted.js b/src/components/services/content/ServiceRestricted.js new file mode 100644 index 000000000..4b8d926aa --- /dev/null +++ b/src/components/services/content/ServiceRestricted.js | |||
@@ -0,0 +1,78 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import { defineMessages, intlShape } from 'react-intl'; | ||
5 | |||
6 | import { serviceLimitStore } from '../../../features/serviceLimit'; | ||
7 | import Button from '../../ui/Button'; | ||
8 | import { RESTRICTION_TYPES } from '../../../models/Service'; | ||
9 | |||
10 | const messages = defineMessages({ | ||
11 | headlineServiceLimit: { | ||
12 | id: 'service.restrictedHandler.serviceLimit.headline', | ||
13 | defaultMessage: '!!!You have reached your service limit.', | ||
14 | }, | ||
15 | textServiceLimit: { | ||
16 | id: 'service.restrictedHandler.serviceLimit.text', | ||
17 | defaultMessage: '!!!Please upgrade your account to use more than {count} services.', | ||
18 | }, | ||
19 | headlineCustomUrl: { | ||
20 | id: 'service.restrictedHandler.customUrl.headline', | ||
21 | defaultMessage: '!!!Franz Professional Plan required', | ||
22 | }, | ||
23 | textCustomUrl: { | ||
24 | id: 'service.restrictedHandler.customUrl.text', | ||
25 | defaultMessage: '!!!Please upgrade to the Franz Professional plan to use custom urls & self hosted services.', | ||
26 | }, | ||
27 | action: { | ||
28 | id: 'service.restrictedHandler.action', | ||
29 | defaultMessage: '!!!Upgrade Account', | ||
30 | }, | ||
31 | }); | ||
32 | |||
33 | export default @observer class ServiceRestricted extends Component { | ||
34 | static propTypes = { | ||
35 | name: PropTypes.string.isRequired, | ||
36 | upgrade: PropTypes.func.isRequired, | ||
37 | type: PropTypes.number.isRequired, | ||
38 | }; | ||
39 | |||
40 | static contextTypes = { | ||
41 | intl: intlShape, | ||
42 | }; | ||
43 | |||
44 | countdownInterval = null; | ||
45 | |||
46 | countdownIntervalTimeout = 1000; | ||
47 | |||
48 | render() { | ||
49 | const { | ||
50 | name, | ||
51 | upgrade, | ||
52 | type, | ||
53 | } = this.props; | ||
54 | const { intl } = this.context; | ||
55 | |||
56 | return ( | ||
57 | <div className="services__info-layer"> | ||
58 | {type === RESTRICTION_TYPES.SERVICE_LIMIT && ( | ||
59 | <> | ||
60 | <h1>{intl.formatMessage(messages.headlineServiceLimit)}</h1> | ||
61 | <p>{intl.formatMessage(messages.textServiceLimit, { count: serviceLimitStore.serviceLimit })}</p> | ||
62 | </> | ||
63 | )} | ||
64 | {type === RESTRICTION_TYPES.CUSTOM_URL && ( | ||
65 | <> | ||
66 | <h1>{intl.formatMessage(messages.headlineCustomUrl)}</h1> | ||
67 | <p>{intl.formatMessage(messages.textCustomUrl)}</p> | ||
68 | </> | ||
69 | )} | ||
70 | <Button | ||
71 | label={intl.formatMessage(messages.action, { name })} | ||
72 | buttonType="inverted" | ||
73 | onClick={() => upgrade()} | ||
74 | /> | ||
75 | </div> | ||
76 | ); | ||
77 | } | ||
78 | } | ||
diff --git a/src/components/services/content/ServiceView.js b/src/components/services/content/ServiceView.js index 13148b9b3..59d1c1dc3 100644 --- a/src/components/services/content/ServiceView.js +++ b/src/components/services/content/ServiceView.js | |||
@@ -99,7 +99,7 @@ export default @observer class ServiceView extends Component { | |||
99 | reload={reload} | 99 | reload={reload} |
100 | /> | 100 | /> |
101 | )} | 101 | )} |
102 | {service.isEnabled && service.isLoading && service.isFirstLoad && ( | 102 | {service.isEnabled && service.isLoading && service.isFirstLoad && !service.isServiceAccessRestricted && ( |
103 | <WebviewLoader | 103 | <WebviewLoader |
104 | loaded={false} | 104 | loaded={false} |
105 | name={service.name} | 105 | name={service.name} |
@@ -126,11 +126,13 @@ export default @observer class ServiceView extends Component { | |||
126 | )} | 126 | )} |
127 | </Fragment> | 127 | </Fragment> |
128 | ) : ( | 128 | ) : ( |
129 | <ServiceWebview | 129 | <> |
130 | service={service} | 130 | <ServiceWebview |
131 | setWebviewReference={setWebviewReference} | 131 | service={service} |
132 | detachService={detachService} | 132 | setWebviewReference={setWebviewReference} |
133 | /> | 133 | detachService={detachService} |
134 | /> | ||
135 | </> | ||
134 | )} | 136 | )} |
135 | {statusBar} | 137 | {statusBar} |
136 | </div> | 138 | </div> |
diff --git a/src/components/services/content/Services.js b/src/components/services/content/Services.js index 5fad070f0..1afbaabc4 100644 --- a/src/components/services/content/Services.js +++ b/src/components/services/content/Services.js | |||
@@ -3,6 +3,9 @@ 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 { 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 | import Confetti from 'react-confetti'; | ||
7 | import ms from 'ms'; | ||
8 | import injectSheet from 'react-jss'; | ||
6 | 9 | ||
7 | import ServiceView from './ServiceView'; | 10 | import ServiceView from './ServiceView'; |
8 | import Appear from '../../ui/effects/Appear'; | 11 | import Appear from '../../ui/effects/Appear'; |
@@ -26,7 +29,17 @@ const messages = defineMessages({ | |||
26 | }, | 29 | }, |
27 | }); | 30 | }); |
28 | 31 | ||
29 | export default @observer class Services extends Component { | 32 | |
33 | const styles = { | ||
34 | confettiContainer: { | ||
35 | position: 'absolute', | ||
36 | width: '100%', | ||
37 | zIndex: 9999, | ||
38 | pointerEvents: 'none', | ||
39 | }, | ||
40 | }; | ||
41 | |||
42 | export default @observer @injectSheet(styles) class Services extends Component { | ||
30 | static propTypes = { | 43 | static propTypes = { |
31 | services: MobxPropTypes.arrayOrObservableArray, | 44 | services: MobxPropTypes.arrayOrObservableArray, |
32 | setWebviewReference: PropTypes.func.isRequired, | 45 | setWebviewReference: PropTypes.func.isRequired, |
@@ -36,6 +49,9 @@ export default @observer class Services extends Component { | |||
36 | reload: PropTypes.func.isRequired, | 49 | reload: PropTypes.func.isRequired, |
37 | openSettings: PropTypes.func.isRequired, | 50 | openSettings: PropTypes.func.isRequired, |
38 | update: PropTypes.func.isRequired, | 51 | update: PropTypes.func.isRequired, |
52 | userHasCompletedSignup: PropTypes.bool.isRequired, | ||
53 | hasActivatedTrial: PropTypes.bool.isRequired, | ||
54 | classes: PropTypes.object.isRequired, | ||
39 | }; | 55 | }; |
40 | 56 | ||
41 | static defaultProps = { | 57 | static defaultProps = { |
@@ -46,6 +62,18 @@ export default @observer class Services extends Component { | |||
46 | intl: intlShape, | 62 | intl: intlShape, |
47 | }; | 63 | }; |
48 | 64 | ||
65 | state = { | ||
66 | showConfetti: true, | ||
67 | } | ||
68 | |||
69 | componentDidMount() { | ||
70 | window.setTimeout(() => { | ||
71 | this.setState({ | ||
72 | showConfetti: false, | ||
73 | }); | ||
74 | }, ms('8s')); | ||
75 | } | ||
76 | |||
49 | render() { | 77 | render() { |
50 | const { | 78 | const { |
51 | services, | 79 | services, |
@@ -56,12 +84,29 @@ export default @observer class Services extends Component { | |||
56 | reload, | 84 | reload, |
57 | openSettings, | 85 | openSettings, |
58 | update, | 86 | update, |
87 | userHasCompletedSignup, | ||
88 | hasActivatedTrial, | ||
89 | classes, | ||
59 | } = this.props; | 90 | } = this.props; |
91 | |||
92 | const { | ||
93 | showConfetti, | ||
94 | } = this.state; | ||
95 | |||
60 | const { intl } = this.context; | 96 | const { intl } = this.context; |
61 | const isLoggedIn = Boolean(localStorage.getItem('authToken')); | 97 | const isLoggedIn = Boolean(localStorage.getItem('authToken')); |
62 | 98 | ||
63 | return ( | 99 | return ( |
64 | <div className="services"> | 100 | <div className="services"> |
101 | {(userHasCompletedSignup || hasActivatedTrial) && ( | ||
102 | <div className={classes.confettiContainer}> | ||
103 | <Confetti | ||
104 | width={window.width} | ||
105 | height={window.height} | ||
106 | numberOfPieces={showConfetti ? 200 : 0} | ||
107 | /> | ||
108 | </div> | ||
109 | )} | ||
65 | {services.length === 0 && ( | 110 | {services.length === 0 && ( |
66 | <Appear | 111 | <Appear |
67 | timeout={1500} | 112 | timeout={1500} |
@@ -104,6 +149,7 @@ export default @observer class Services extends Component { | |||
104 | }, | 149 | }, |
105 | redirect: false, | 150 | redirect: false, |
106 | })} | 151 | })} |
152 | upgrade={() => openSettings({ path: 'user' })} | ||
107 | /> | 153 | /> |
108 | ))} | 154 | ))} |
109 | </div> | 155 | </div> |
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index 4b7637637..f588449f4 100644 --- a/src/components/settings/account/AccountDashboard.js +++ b/src/components/settings/account/AccountDashboard.js | |||
@@ -1,14 +1,18 @@ | |||
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 { 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 ReactTooltip from 'react-tooltip'; | 5 | import ReactTooltip from 'react-tooltip'; |
6 | import { ProBadge } from '@meetfranz/ui'; | 6 | import { |
7 | ProBadge, H1, H2, | ||
8 | } from '@meetfranz/ui'; | ||
9 | import moment from 'moment'; | ||
7 | 10 | ||
8 | import Loader from '../../ui/Loader'; | 11 | import Loader from '../../ui/Loader'; |
9 | import Button from '../../ui/Button'; | 12 | import Button from '../../ui/Button'; |
10 | import Infobox from '../../ui/Infobox'; | 13 | import Infobox from '../../ui/Infobox'; |
11 | import SubscriptionForm from '../../../containers/subscription/SubscriptionFormScreen'; | 14 | import SubscriptionForm from '../../../containers/subscription/SubscriptionFormScreen'; |
15 | import { i18nPlanName } from '../../../helpers/plan-helpers'; | ||
12 | 16 | ||
13 | const messages = defineMessages({ | 17 | const messages = defineMessages({ |
14 | headline: { | 18 | headline: { |
@@ -19,10 +23,6 @@ const messages = defineMessages({ | |||
19 | id: 'settings.account.headlineSubscription', | 23 | id: 'settings.account.headlineSubscription', |
20 | defaultMessage: '!!!Your Subscription', | 24 | defaultMessage: '!!!Your Subscription', |
21 | }, | 25 | }, |
22 | headlineUpgrade: { | ||
23 | id: 'settings.account.headlineUpgrade', | ||
24 | defaultMessage: '!!!Upgrade your Account', | ||
25 | }, | ||
26 | headlineDangerZone: { | 26 | headlineDangerZone: { |
27 | id: 'settings.account.headlineDangerZone', | 27 | id: 'settings.account.headlineDangerZone', |
28 | defaultMessage: '!!Danger Zone', | 28 | defaultMessage: '!!Danger Zone', |
@@ -31,6 +31,10 @@ const messages = defineMessages({ | |||
31 | id: 'settings.account.manageSubscription.label', | 31 | id: 'settings.account.manageSubscription.label', |
32 | defaultMessage: '!!!Manage your subscription', | 32 | defaultMessage: '!!!Manage your subscription', |
33 | }, | 33 | }, |
34 | upgradeAccountToPro: { | ||
35 | id: 'settings.account.upgradeToPro.label', | ||
36 | defaultMessage: '!!!Upgrade to Franz Professional', | ||
37 | }, | ||
34 | accountTypeBasic: { | 38 | accountTypeBasic: { |
35 | id: 'settings.account.accountType.basic', | 39 | id: 'settings.account.accountType.basic', |
36 | defaultMessage: '!!!Basic Account', | 40 | defaultMessage: '!!!Basic Account', |
@@ -71,21 +75,39 @@ const messages = defineMessages({ | |||
71 | id: 'settings.account.deleteEmailSent', | 75 | id: 'settings.account.deleteEmailSent', |
72 | defaultMessage: '!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!', | 76 | defaultMessage: '!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!', |
73 | }, | 77 | }, |
78 | trial: { | ||
79 | id: 'settings.account.trial', | ||
80 | defaultMessage: '!!!Free Trial', | ||
81 | }, | ||
82 | yourLicense: { | ||
83 | id: 'settings.account.yourLicense', | ||
84 | defaultMessage: '!!!Your Franz License:', | ||
85 | }, | ||
86 | trialEndsIn: { | ||
87 | id: 'settings.account.trialEndsIn', | ||
88 | defaultMessage: '!!!Your free trial ends in {duration}.', | ||
89 | }, | ||
90 | trialUpdateBillingInformation: { | ||
91 | id: 'settings.account.trialUpdateBillingInfo', | ||
92 | defaultMessage: '!!!Please update your billing info to continue using {license} after your trial period.', | ||
93 | }, | ||
74 | }); | 94 | }); |
75 | 95 | ||
76 | export default @observer class AccountDashboard extends Component { | 96 | @observer |
97 | class AccountDashboard extends Component { | ||
77 | static propTypes = { | 98 | static propTypes = { |
78 | user: MobxPropTypes.observableObject.isRequired, | 99 | user: MobxPropTypes.observableObject.isRequired, |
100 | isPremiumOverrideUser: PropTypes.bool.isRequired, | ||
101 | isProUser: PropTypes.bool.isRequired, | ||
79 | isLoading: PropTypes.bool.isRequired, | 102 | isLoading: PropTypes.bool.isRequired, |
80 | isLoadingPlans: PropTypes.bool.isRequired, | ||
81 | userInfoRequestFailed: PropTypes.bool.isRequired, | 103 | userInfoRequestFailed: PropTypes.bool.isRequired, |
82 | retryUserInfoRequest: PropTypes.func.isRequired, | 104 | retryUserInfoRequest: PropTypes.func.isRequired, |
83 | onCloseSubscriptionWindow: PropTypes.func.isRequired, | ||
84 | deleteAccount: PropTypes.func.isRequired, | 105 | deleteAccount: PropTypes.func.isRequired, |
85 | isLoadingDeleteAccount: PropTypes.bool.isRequired, | 106 | isLoadingDeleteAccount: PropTypes.bool.isRequired, |
86 | isDeleteAccountSuccessful: PropTypes.bool.isRequired, | 107 | isDeleteAccountSuccessful: PropTypes.bool.isRequired, |
87 | openEditAccount: PropTypes.func.isRequired, | 108 | openEditAccount: PropTypes.func.isRequired, |
88 | openBilling: PropTypes.func.isRequired, | 109 | openBilling: PropTypes.func.isRequired, |
110 | upgradeToPro: PropTypes.func.isRequired, | ||
89 | openInvoices: PropTypes.func.isRequired, | 111 | openInvoices: PropTypes.func.isRequired, |
90 | }; | 112 | }; |
91 | 113 | ||
@@ -96,20 +118,27 @@ export default @observer class AccountDashboard extends Component { | |||
96 | render() { | 118 | render() { |
97 | const { | 119 | const { |
98 | user, | 120 | user, |
121 | isPremiumOverrideUser, | ||
122 | isProUser, | ||
99 | isLoading, | 123 | isLoading, |
100 | isLoadingPlans, | ||
101 | userInfoRequestFailed, | 124 | userInfoRequestFailed, |
102 | retryUserInfoRequest, | 125 | retryUserInfoRequest, |
103 | onCloseSubscriptionWindow, | ||
104 | deleteAccount, | 126 | deleteAccount, |
105 | isLoadingDeleteAccount, | 127 | isLoadingDeleteAccount, |
106 | isDeleteAccountSuccessful, | 128 | isDeleteAccountSuccessful, |
107 | openEditAccount, | 129 | openEditAccount, |
108 | openBilling, | 130 | openBilling, |
131 | upgradeToPro, | ||
109 | openInvoices, | 132 | openInvoices, |
110 | } = this.props; | 133 | } = this.props; |
111 | const { intl } = this.context; | 134 | const { intl } = this.context; |
112 | 135 | ||
136 | let planName = ''; | ||
137 | |||
138 | if (user.team && user.team.plan) { | ||
139 | planName = i18nPlanName(user.team.plan, intl); | ||
140 | } | ||
141 | |||
113 | return ( | 142 | return ( |
114 | <div className="settings__main"> | 143 | <div className="settings__main"> |
115 | <div className="settings__header"> | 144 | <div className="settings__header"> |
@@ -135,82 +164,115 @@ export default @observer class AccountDashboard extends Component { | |||
135 | )} | 164 | )} |
136 | 165 | ||
137 | {!userInfoRequestFailed && ( | 166 | {!userInfoRequestFailed && ( |
138 | <Fragment> | 167 | <> |
139 | {!isLoading && ( | 168 | {!isLoading && ( |
140 | <div className="account"> | 169 | <> |
141 | <div className="account__box account__box--flex"> | 170 | <div className="account"> |
142 | <div className="account__avatar"> | 171 | <div className="account__box account__box--flex"> |
143 | <img | 172 | <div className="account__avatar"> |
144 | src="./assets/images/logo.svg" | 173 | <img |
145 | alt="" | 174 | src="./assets/images/logo.svg" |
146 | /> | 175 | alt="" |
147 | </div> | 176 | /> |
148 | <div className="account__info"> | 177 | </div> |
149 | <h2> | 178 | <div className="account__info"> |
150 | <span className="username">{`${user.firstname} ${user.lastname}`}</span> | 179 | <H1> |
180 | <span className="username">{`${user.firstname} ${user.lastname}`}</span> | ||
181 | {user.isPremium && ( | ||
182 | <> | ||
183 | {' '} | ||
184 | <ProBadge /> | ||
185 | </> | ||
186 | )} | ||
187 | </H1> | ||
188 | <p> | ||
189 | {user.organization && `${user.organization}, `} | ||
190 | {user.email} | ||
191 | </p> | ||
151 | {user.isPremium && ( | 192 | {user.isPremium && ( |
193 | <div className="manage-user-links"> | ||
194 | <Button | ||
195 | label={intl.formatMessage(messages.accountEditButton)} | ||
196 | className="franz-form__button--inverted" | ||
197 | onClick={openEditAccount} | ||
198 | /> | ||
199 | </div> | ||
200 | )} | ||
201 | </div> | ||
202 | {!user.isPremium && ( | ||
203 | <Button | ||
204 | label={intl.formatMessage(messages.accountEditButton)} | ||
205 | className="franz-form__button--inverted" | ||
206 | onClick={openEditAccount} | ||
207 | /> | ||
208 | )} | ||
209 | </div> | ||
210 | </div> | ||
211 | {user.isPremium && user.isSubscriptionOwner && ( | ||
212 | <div className="account"> | ||
213 | <div className="account__box"> | ||
214 | <H2> | ||
215 | {intl.formatMessage(messages.yourLicense)} | ||
216 | </H2> | ||
217 | <p> | ||
218 | {isPremiumOverrideUser ? 'Franz Premium' : planName} | ||
219 | {user.team.isTrial && ( | ||
220 | <> | ||
221 | {' – '} | ||
222 | {intl.formatMessage(messages.trial)} | ||
223 | </> | ||
224 | )} | ||
225 | </p> | ||
226 | {user.team.isTrial && ( | ||
152 | <> | 227 | <> |
153 | {' '} | 228 | <br /> |
154 | <ProBadge /> | 229 | <p> |
155 | <span className="badge badge--premium">{intl.formatMessage(messages.accountTypePremium)}</span> | 230 | {intl.formatMessage(messages.trialEndsIn, { |
231 | duration: moment.duration(moment().diff(user.team.trialEnd)).humanize(), | ||
232 | })} | ||
233 | </p> | ||
234 | <p> | ||
235 | {intl.formatMessage(messages.trialUpdateBillingInformation, { | ||
236 | license: planName, | ||
237 | })} | ||
238 | </p> | ||
156 | </> | 239 | </> |
157 | )} | 240 | )} |
158 | </h2> | ||
159 | {user.organization && `${user.organization}, `} | ||
160 | {user.email} | ||
161 | {user.isPremium && ( | ||
162 | <div className="manage-user-links"> | 241 | <div className="manage-user-links"> |
242 | {!isProUser && ( | ||
243 | <Button | ||
244 | label={intl.formatMessage(messages.upgradeAccountToPro)} | ||
245 | className="franz-form__button--primary" | ||
246 | onClick={upgradeToPro} | ||
247 | /> | ||
248 | )} | ||
163 | <Button | 249 | <Button |
164 | label={intl.formatMessage(messages.accountEditButton)} | 250 | label={intl.formatMessage(messages.manageSubscriptionButtonLabel)} |
165 | className="franz-form__button--inverted" | 251 | className="franz-form__button--inverted" |
166 | onClick={openEditAccount} | 252 | onClick={openBilling} |
253 | /> | ||
254 | <Button | ||
255 | label={intl.formatMessage(messages.invoicesButton)} | ||
256 | className="franz-form__button--inverted" | ||
257 | onClick={openInvoices} | ||
167 | /> | 258 | /> |
168 | {user.isSubscriptionOwner && ( | ||
169 | <> | ||
170 | <Button | ||
171 | label={intl.formatMessage(messages.manageSubscriptionButtonLabel)} | ||
172 | className="franz-form__button--inverted" | ||
173 | onClick={openBilling} | ||
174 | /> | ||
175 | <Button | ||
176 | label={intl.formatMessage(messages.invoicesButton)} | ||
177 | className="franz-form__button--inverted" | ||
178 | onClick={openInvoices} | ||
179 | /> | ||
180 | </> | ||
181 | )} | ||
182 | </div> | 259 | </div> |
183 | )} | 260 | </div> |
184 | </div> | 261 | </div> |
185 | {!user.isPremium && ( | 262 | )} |
186 | <Button | 263 | {!user.isPremium && ( |
187 | label={intl.formatMessage(messages.accountEditButton)} | 264 | <div className="account franz-form"> |
188 | className="franz-form__button--inverted" | 265 | <div className="account__box"> |
189 | onClick={openEditAccount} | 266 | <SubscriptionForm /> |
190 | /> | 267 | </div> |
191 | )} | ||
192 | </div> | ||
193 | </div> | ||
194 | )} | ||
195 | |||
196 | {!user.isPremium && ( | ||
197 | isLoadingPlans ? ( | ||
198 | <Loader /> | ||
199 | ) : ( | ||
200 | <div className="account franz-form"> | ||
201 | <div className="account__box"> | ||
202 | <h2>{intl.formatMessage(messages.headlineUpgrade)}</h2> | ||
203 | <SubscriptionForm | ||
204 | onCloseWindow={onCloseSubscriptionWindow} | ||
205 | /> | ||
206 | </div> | 268 | </div> |
207 | </div> | 269 | )} |
208 | ) | 270 | </> |
209 | )} | 271 | )} |
210 | 272 | ||
211 | <div className="account franz-form"> | 273 | <div className="account franz-form"> |
212 | <div className="account__box"> | 274 | <div className="account__box"> |
213 | <h2>{intl.formatMessage(messages.headlineDangerZone)}</h2> | 275 | <H2>{intl.formatMessage(messages.headlineDangerZone)}</H2> |
214 | {!isDeleteAccountSuccessful && ( | 276 | {!isDeleteAccountSuccessful && ( |
215 | <div className="account__subscription"> | 277 | <div className="account__subscription"> |
216 | <p>{intl.formatMessage(messages.deleteInfo)}</p> | 278 | <p>{intl.formatMessage(messages.deleteInfo)}</p> |
@@ -227,7 +289,7 @@ export default @observer class AccountDashboard extends Component { | |||
227 | )} | 289 | )} |
228 | </div> | 290 | </div> |
229 | </div> | 291 | </div> |
230 | </Fragment> | 292 | </> |
231 | )} | 293 | )} |
232 | </div> | 294 | </div> |
233 | <ReactTooltip place="right" type="dark" effect="solid" /> | 295 | <ReactTooltip place="right" type="dark" effect="solid" /> |
@@ -235,3 +297,5 @@ export default @observer class AccountDashboard extends Component { | |||
235 | ); | 297 | ); |
236 | } | 298 | } |
237 | } | 299 | } |
300 | |||
301 | export default AccountDashboard; | ||
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js index 6aa9bda03..201819526 100644 --- a/src/components/settings/navigation/SettingsNavigation.js +++ b/src/components/settings/navigation/SettingsNavigation.js | |||
@@ -8,6 +8,7 @@ import Link from '../../ui/Link'; | |||
8 | import { workspaceStore } from '../../../features/workspaces'; | 8 | import { workspaceStore } from '../../../features/workspaces'; |
9 | import UIStore from '../../../stores/UIStore'; | 9 | import UIStore from '../../../stores/UIStore'; |
10 | import UserStore from '../../../stores/UserStore'; | 10 | import UserStore from '../../../stores/UserStore'; |
11 | import { serviceLimitStore } from '../../../features/serviceLimit'; | ||
11 | 12 | ||
12 | const messages = defineMessages({ | 13 | const messages = defineMessages({ |
13 | availableServices: { | 14 | availableServices: { |
@@ -81,7 +82,12 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp | |||
81 | > | 82 | > |
82 | {intl.formatMessage(messages.yourServices)} | 83 | {intl.formatMessage(messages.yourServices)} |
83 | {' '} | 84 | {' '} |
84 | <span className="badge">{serviceCount}</span> | 85 | <span className="badge"> |
86 | {serviceCount} | ||
87 | {serviceLimitStore.serviceLimit !== 0 && ( | ||
88 | `/${serviceLimitStore.serviceLimit}` | ||
89 | )} | ||
90 | </span> | ||
85 | </Link> | 91 | </Link> |
86 | {workspaceStore.isFeatureEnabled ? ( | 92 | {workspaceStore.isFeatureEnabled ? ( |
87 | <Link | 93 | <Link |
diff --git a/src/components/settings/recipes/RecipeItem.js b/src/components/settings/recipes/RecipeItem.js index 3bb0852b2..12e3775f6 100644 --- a/src/components/settings/recipes/RecipeItem.js +++ b/src/components/settings/recipes/RecipeItem.js | |||
@@ -19,7 +19,7 @@ export default @observer class RecipeItem extends Component { | |||
19 | className="recipe-teaser" | 19 | className="recipe-teaser" |
20 | onClick={onClick} | 20 | onClick={onClick} |
21 | > | 21 | > |
22 | {recipe.local && ( | 22 | {recipe.isDevRecipe && ( |
23 | <span className="recipe-teaser__dev-badge">dev</span> | 23 | <span className="recipe-teaser__dev-badge">dev</span> |
24 | )} | 24 | )} |
25 | <img | 25 | <img |
diff --git a/src/components/settings/recipes/RecipesDashboard.js b/src/components/settings/recipes/RecipesDashboard.js index 00cd725cf..877cbc588 100644 --- a/src/components/settings/recipes/RecipesDashboard.js +++ b/src/components/settings/recipes/RecipesDashboard.js | |||
@@ -4,12 +4,17 @@ 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 | ||
7 | import { Button, Input } from '@meetfranz/forms'; | ||
8 | import injectSheet from 'react-jss'; | ||
9 | import { H3, H2, ProBadge } from '@meetfranz/ui'; | ||
7 | import SearchInput from '../../ui/SearchInput'; | 10 | import SearchInput from '../../ui/SearchInput'; |
8 | import Infobox from '../../ui/Infobox'; | 11 | import Infobox from '../../ui/Infobox'; |
9 | import RecipeItem from './RecipeItem'; | 12 | import RecipeItem from './RecipeItem'; |
10 | import Loader from '../../ui/Loader'; | 13 | import Loader from '../../ui/Loader'; |
11 | import Appear from '../../ui/effects/Appear'; | 14 | import Appear from '../../ui/effects/Appear'; |
12 | import { FRANZ_SERVICE_REQUEST } from '../../../config'; | 15 | import { FRANZ_SERVICE_REQUEST } from '../../../config'; |
16 | import LimitReachedInfobox from '../../../features/serviceLimit/components/LimitReachedInfobox'; | ||
17 | import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer'; | ||
13 | 18 | ||
14 | const messages = defineMessages({ | 19 | const messages = defineMessages({ |
15 | headline: { | 20 | headline: { |
@@ -28,9 +33,9 @@ const messages = defineMessages({ | |||
28 | id: 'settings.recipes.all', | 33 | id: 'settings.recipes.all', |
29 | defaultMessage: '!!!All services', | 34 | defaultMessage: '!!!All services', |
30 | }, | 35 | }, |
31 | devRecipes: { | 36 | customRecipes: { |
32 | id: 'settings.recipes.dev', | 37 | id: 'settings.recipes.custom', |
33 | defaultMessage: '!!!Development', | 38 | defaultMessage: '!!!Custom Services', |
34 | }, | 39 | }, |
35 | nothingFound: { | 40 | nothingFound: { |
36 | id: 'settings.recipes.nothingFound', | 41 | id: 'settings.recipes.nothingFound', |
@@ -44,9 +49,61 @@ const messages = defineMessages({ | |||
44 | id: 'settings.recipes.missingService', | 49 | id: 'settings.recipes.missingService', |
45 | defaultMessage: '!!!Missing a service?', | 50 | defaultMessage: '!!!Missing a service?', |
46 | }, | 51 | }, |
52 | customRecipeIntro: { | ||
53 | id: 'settings.recipes.customService.intro', | ||
54 | defaultMessage: '!!!To add a custom service, copy the recipe folder into:', | ||
55 | }, | ||
56 | openFolder: { | ||
57 | id: 'settings.recipes.customService.openFolder', | ||
58 | defaultMessage: '!!!Open directory', | ||
59 | }, | ||
60 | openDevDocs: { | ||
61 | id: 'settings.recipes.customService.openDevDocs', | ||
62 | defaultMessage: '!!!Developer Documentation', | ||
63 | }, | ||
64 | headlineCustomRecipes: { | ||
65 | id: 'settings.recipes.customService.headline.customRecipes', | ||
66 | defaultMessage: '!!!Custom 3rd Party Recipes', | ||
67 | }, | ||
68 | headlineCommunityRecipes: { | ||
69 | id: 'settings.recipes.customService.headline.communityRecipes', | ||
70 | defaultMessage: '!!!Community 3rd Party Recipes', | ||
71 | }, | ||
72 | headlineDevRecipes: { | ||
73 | id: 'settings.recipes.customService.headline.devRecipes', | ||
74 | defaultMessage: '!!!Your Development Service Recipes', | ||
75 | }, | ||
47 | }); | 76 | }); |
48 | 77 | ||
49 | export default @observer class RecipesDashboard extends Component { | 78 | const styles = { |
79 | devRecipeIntroContainer: { | ||
80 | textAlign: 'center', | ||
81 | width: '100%', | ||
82 | height: 'auto', | ||
83 | margin: [40, 0], | ||
84 | }, | ||
85 | path: { | ||
86 | marginTop: 20, | ||
87 | |||
88 | '& > div': { | ||
89 | fontFamily: 'SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace', | ||
90 | }, | ||
91 | }, | ||
92 | actionContainer: { | ||
93 | '& button': { | ||
94 | margin: [0, 10], | ||
95 | }, | ||
96 | }, | ||
97 | devRecipeList: { | ||
98 | marginTop: 20, | ||
99 | height: 'auto', | ||
100 | }, | ||
101 | proBadge: { | ||
102 | marginLeft: '10px !important', | ||
103 | }, | ||
104 | }; | ||
105 | |||
106 | export default @injectSheet(styles) @observer class RecipesDashboard extends Component { | ||
50 | static propTypes = { | 107 | static propTypes = { |
51 | recipes: MobxPropTypes.arrayOrObservableArray.isRequired, | 108 | recipes: MobxPropTypes.arrayOrObservableArray.isRequired, |
52 | isLoading: PropTypes.bool.isRequired, | 109 | isLoading: PropTypes.bool.isRequired, |
@@ -55,12 +112,18 @@ export default @observer class RecipesDashboard extends Component { | |||
55 | searchRecipes: PropTypes.func.isRequired, | 112 | searchRecipes: PropTypes.func.isRequired, |
56 | resetSearch: PropTypes.func.isRequired, | 113 | resetSearch: PropTypes.func.isRequired, |
57 | serviceStatus: MobxPropTypes.arrayOrObservableArray.isRequired, | 114 | serviceStatus: MobxPropTypes.arrayOrObservableArray.isRequired, |
58 | devRecipesCount: PropTypes.number.isRequired, | ||
59 | searchNeedle: PropTypes.string, | 115 | searchNeedle: PropTypes.string, |
116 | recipeFilter: PropTypes.string, | ||
117 | recipeDirectory: PropTypes.string.isRequired, | ||
118 | openRecipeDirectory: PropTypes.func.isRequired, | ||
119 | openDevDocs: PropTypes.func.isRequired, | ||
120 | classes: PropTypes.object.isRequired, | ||
121 | isCommunityRecipesIncludedInCurrentPlan: PropTypes.bool.isRequired, | ||
60 | }; | 122 | }; |
61 | 123 | ||
62 | static defaultProps = { | 124 | static defaultProps = { |
63 | searchNeedle: '', | 125 | searchNeedle: '', |
126 | recipeFilter: 'all', | ||
64 | } | 127 | } |
65 | 128 | ||
66 | static contextTypes = { | 129 | static contextTypes = { |
@@ -76,16 +139,26 @@ export default @observer class RecipesDashboard extends Component { | |||
76 | searchRecipes, | 139 | searchRecipes, |
77 | resetSearch, | 140 | resetSearch, |
78 | serviceStatus, | 141 | serviceStatus, |
79 | devRecipesCount, | ||
80 | searchNeedle, | 142 | searchNeedle, |
143 | recipeFilter, | ||
144 | recipeDirectory, | ||
145 | openRecipeDirectory, | ||
146 | openDevDocs, | ||
147 | classes, | ||
148 | isCommunityRecipesIncludedInCurrentPlan, | ||
81 | } = this.props; | 149 | } = this.props; |
82 | const { intl } = this.context; | 150 | const { intl } = this.context; |
83 | 151 | ||
152 | |||
153 | const communityRecipes = recipes.filter(r => !r.isDevRecipe); | ||
154 | const devRecipes = recipes.filter(r => r.isDevRecipe); | ||
155 | |||
84 | return ( | 156 | return ( |
85 | <div className="settings__main"> | 157 | <div className="settings__main"> |
86 | <div className="settings__header"> | 158 | <div className="settings__header"> |
87 | <h1>{intl.formatMessage(messages.headline)}</h1> | 159 | <h1>{intl.formatMessage(messages.headline)}</h1> |
88 | </div> | 160 | </div> |
161 | <LimitReachedInfobox /> | ||
89 | <div className="settings__body recipes"> | 162 | <div className="settings__body recipes"> |
90 | {serviceStatus.length > 0 && serviceStatus.includes('created') && ( | 163 | {serviceStatus.length > 0 && serviceStatus.includes('created') && ( |
91 | <Appear> | 164 | <Appear> |
@@ -122,20 +195,14 @@ export default @observer class RecipesDashboard extends Component { | |||
122 | > | 195 | > |
123 | {intl.formatMessage(messages.allRecipes)} | 196 | {intl.formatMessage(messages.allRecipes)} |
124 | </Link> | 197 | </Link> |
125 | {devRecipesCount > 0 && ( | 198 | <Link |
126 | <Link | 199 | to="/settings/recipes/dev" |
127 | to="/settings/recipes/dev" | 200 | className="badge" |
128 | className="badge" | 201 | activeClassName={`${!searchNeedle ? 'badge--primary' : ''}`} |
129 | activeClassName={`${!searchNeedle ? 'badge--primary' : ''}`} | 202 | onClick={() => resetSearch()} |
130 | onClick={() => resetSearch()} | 203 | > |
131 | > | 204 | {intl.formatMessage(messages.customRecipes)} |
132 | {intl.formatMessage(messages.devRecipes)} | 205 | </Link> |
133 | {' '} | ||
134 | ( | ||
135 | {devRecipesCount} | ||
136 | ) | ||
137 | </Link> | ||
138 | )} | ||
139 | <a href={FRANZ_SERVICE_REQUEST} target="_blank" className="link recipes__service-request"> | 206 | <a href={FRANZ_SERVICE_REQUEST} target="_blank" className="link recipes__service-request"> |
140 | {intl.formatMessage(messages.missingService)} | 207 | {intl.formatMessage(messages.missingService)} |
141 | {' '} | 208 | {' '} |
@@ -146,23 +213,78 @@ export default @observer class RecipesDashboard extends Component { | |||
146 | {isLoading ? ( | 213 | {isLoading ? ( |
147 | <Loader /> | 214 | <Loader /> |
148 | ) : ( | 215 | ) : ( |
149 | <div className="recipes__list"> | 216 | <> |
150 | {hasLoadedRecipes && recipes.length === 0 && ( | 217 | {recipeFilter === 'dev' && ( |
151 | <p className="align-middle settings__empty-state"> | 218 | <> |
152 | <span className="emoji"> | 219 | <H2> |
153 | <img src="./assets/images/emoji/dontknow.png" alt="" /> | 220 | {intl.formatMessage(messages.headlineCustomRecipes)} |
154 | </span> | 221 | {!isCommunityRecipesIncludedInCurrentPlan && ( |
155 | {intl.formatMessage(messages.nothingFound)} | 222 | <ProBadge className={classes.proBadge} /> |
156 | </p> | 223 | )} |
224 | </H2> | ||
225 | <div className={classes.devRecipeIntroContainer}> | ||
226 | <p> | ||
227 | {intl.formatMessage(messages.customRecipeIntro)} | ||
228 | </p> | ||
229 | <Input | ||
230 | value={recipeDirectory} | ||
231 | className={classes.path} | ||
232 | showLabel={false} | ||
233 | /> | ||
234 | <div className={classes.actionContainer}> | ||
235 | <Button | ||
236 | onClick={openRecipeDirectory} | ||
237 | buttonType="secondary" | ||
238 | label={intl.formatMessage(messages.openFolder)} | ||
239 | /> | ||
240 | <Button | ||
241 | onClick={openDevDocs} | ||
242 | buttonType="secondary" | ||
243 | label={intl.formatMessage(messages.openDevDocs)} | ||
244 | /> | ||
245 | </div> | ||
246 | </div> | ||
247 | </> | ||
248 | )} | ||
249 | <PremiumFeatureContainer | ||
250 | condition={(recipeFilter === 'dev' && communityRecipes.length > 0) && !isCommunityRecipesIncludedInCurrentPlan} | ||
251 | > | ||
252 | {recipeFilter === 'dev' && communityRecipes.length > 0 && ( | ||
253 | <H3>{intl.formatMessage(messages.headlineCommunityRecipes)}</H3> | ||
254 | )} | ||
255 | <div className="recipes__list"> | ||
256 | {hasLoadedRecipes && recipes.length === 0 && recipeFilter !== 'dev' && ( | ||
257 | <p className="align-middle settings__empty-state"> | ||
258 | <span className="emoji"> | ||
259 | <img src="./assets/images/emoji/dontknow.png" alt="" /> | ||
260 | </span> | ||
261 | {intl.formatMessage(messages.nothingFound)} | ||
262 | </p> | ||
263 | )} | ||
264 | {communityRecipes.map(recipe => ( | ||
265 | <RecipeItem | ||
266 | key={recipe.id} | ||
267 | recipe={recipe} | ||
268 | onClick={() => showAddServiceInterface({ recipeId: recipe.id })} | ||
269 | /> | ||
270 | ))} | ||
271 | </div> | ||
272 | </PremiumFeatureContainer> | ||
273 | {recipeFilter === 'dev' && devRecipes.length > 0 && ( | ||
274 | <div className={classes.devRecipeList}> | ||
275 | <H3>{intl.formatMessage(messages.headlineDevRecipes)}</H3> | ||
276 | <div className="recipes__list"> | ||
277 | {devRecipes.map(recipe => ( | ||
278 | <RecipeItem | ||
279 | key={recipe.id} | ||
280 | recipe={recipe} | ||
281 | onClick={() => showAddServiceInterface({ recipeId: recipe.id })} | ||
282 | /> | ||
283 | ))} | ||
284 | </div> | ||
285 | </div> | ||
157 | )} | 286 | )} |
158 | {recipes.map(recipe => ( | 287 | </> |
159 | <RecipeItem | ||
160 | key={recipe.id} | ||
161 | recipe={recipe} | ||
162 | onClick={() => showAddServiceInterface({ recipeId: recipe.id })} | ||
163 | /> | ||
164 | ))} | ||
165 | </div> | ||
166 | )} | 288 | )} |
167 | </div> | 289 | </div> |
168 | </div> | 290 | </div> |
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js index 711b571e2..5fe00cb8b 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js | |||
@@ -17,6 +17,8 @@ import ImageUpload from '../../ui/ImageUpload'; | |||
17 | import Select from '../../ui/Select'; | 17 | import Select from '../../ui/Select'; |
18 | 18 | ||
19 | import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer'; | 19 | import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer'; |
20 | import LimitReachedInfobox from '../../../features/serviceLimit/components/LimitReachedInfobox'; | ||
21 | import { serviceLimitStore } from '../../../features/serviceLimit'; | ||
20 | 22 | ||
21 | const messages = defineMessages({ | 23 | const messages = defineMessages({ |
22 | saveService: { | 24 | saveService: { |
@@ -128,8 +130,8 @@ export default @observer class EditServiceForm extends Component { | |||
128 | isSaving: PropTypes.bool.isRequired, | 130 | isSaving: PropTypes.bool.isRequired, |
129 | isDeleting: PropTypes.bool.isRequired, | 131 | isDeleting: PropTypes.bool.isRequired, |
130 | isProxyFeatureEnabled: PropTypes.bool.isRequired, | 132 | isProxyFeatureEnabled: PropTypes.bool.isRequired, |
131 | isProxyPremiumFeature: PropTypes.bool.isRequired, | 133 | isServiceProxyIncludedInCurrentPlan: PropTypes.bool.isRequired, |
132 | isSpellcheckerPremiumFeature: PropTypes.bool.isRequired, | 134 | isSpellcheckerIncludedInCurrentPlan: PropTypes.bool.isRequired, |
133 | }; | 135 | }; |
134 | 136 | ||
135 | static defaultProps = { | 137 | static defaultProps = { |
@@ -192,8 +194,8 @@ export default @observer class EditServiceForm extends Component { | |||
192 | isDeleting, | 194 | isDeleting, |
193 | onDelete, | 195 | onDelete, |
194 | isProxyFeatureEnabled, | 196 | isProxyFeatureEnabled, |
195 | isProxyPremiumFeature, | 197 | isServiceProxyIncludedInCurrentPlan, |
196 | isSpellcheckerPremiumFeature, | 198 | isSpellcheckerIncludedInCurrentPlan, |
197 | } = this.props; | 199 | } = this.props; |
198 | const { intl } = this.context; | 200 | const { intl } = this.context; |
199 | 201 | ||
@@ -252,6 +254,7 @@ export default @observer class EditServiceForm extends Component { | |||
252 | )} | 254 | )} |
253 | </span> | 255 | </span> |
254 | </div> | 256 | </div> |
257 | <LimitReachedInfobox /> | ||
255 | <div className="settings__body"> | 258 | <div className="settings__body"> |
256 | <form onSubmit={e => this.submit(e)} id="form"> | 259 | <form onSubmit={e => this.submit(e)} id="form"> |
257 | <div className="service-name"> | 260 | <div className="service-name"> |
@@ -342,7 +345,7 @@ export default @observer class EditServiceForm extends Component { | |||
342 | </div> | 345 | </div> |
343 | 346 | ||
344 | <PremiumFeatureContainer | 347 | <PremiumFeatureContainer |
345 | condition={isSpellcheckerPremiumFeature} | 348 | condition={!isSpellcheckerIncludedInCurrentPlan} |
346 | gaEventInfo={{ category: 'User', event: 'upgrade', label: 'spellchecker' }} | 349 | gaEventInfo={{ category: 'User', event: 'upgrade', label: 'spellchecker' }} |
347 | > | 350 | > |
348 | <div className="settings__settings-group"> | 351 | <div className="settings__settings-group"> |
@@ -352,7 +355,7 @@ export default @observer class EditServiceForm extends Component { | |||
352 | 355 | ||
353 | {isProxyFeatureEnabled && ( | 356 | {isProxyFeatureEnabled && ( |
354 | <PremiumFeatureContainer | 357 | <PremiumFeatureContainer |
355 | condition={isProxyPremiumFeature} | 358 | condition={!isServiceProxyIncludedInCurrentPlan} |
356 | gaEventInfo={{ category: 'User', event: 'upgrade', label: 'proxy' }} | 359 | gaEventInfo={{ category: 'User', event: 'upgrade', label: 'proxy' }} |
357 | > | 360 | > |
358 | <div className="settings__settings-group"> | 361 | <div className="settings__settings-group"> |
@@ -418,7 +421,7 @@ export default @observer class EditServiceForm extends Component { | |||
418 | type="submit" | 421 | type="submit" |
419 | label={intl.formatMessage(messages.saveService)} | 422 | label={intl.formatMessage(messages.saveService)} |
420 | htmlForm="form" | 423 | htmlForm="form" |
421 | disabled={action !== 'edit' && form.isPristine && requiresUserInput} | 424 | disabled={action !== 'edit' && ((form.isPristine && requiresUserInput) || serviceLimitStore.userHasReachedServiceLimit)} |
422 | /> | 425 | /> |
423 | )} | 426 | )} |
424 | </div> | 427 | </div> |
diff --git a/src/components/settings/services/ServicesDashboard.js b/src/components/settings/services/ServicesDashboard.js index 53bae12df..78038e86a 100644 --- a/src/components/settings/services/ServicesDashboard.js +++ b/src/components/settings/services/ServicesDashboard.js | |||
@@ -9,6 +9,7 @@ import Infobox from '../../ui/Infobox'; | |||
9 | import Loader from '../../ui/Loader'; | 9 | import Loader from '../../ui/Loader'; |
10 | import ServiceItem from './ServiceItem'; | 10 | import ServiceItem from './ServiceItem'; |
11 | import Appear from '../../ui/effects/Appear'; | 11 | import Appear from '../../ui/effects/Appear'; |
12 | import LimitReachedInfobox from '../../../features/serviceLimit/components/LimitReachedInfobox'; | ||
12 | 13 | ||
13 | const messages = defineMessages({ | 14 | const messages = defineMessages({ |
14 | headline: { | 15 | headline: { |
@@ -91,6 +92,7 @@ export default @observer class ServicesDashboard extends Component { | |||
91 | <div className="settings__header"> | 92 | <div className="settings__header"> |
92 | <h1>{intl.formatMessage(messages.headline)}</h1> | 93 | <h1>{intl.formatMessage(messages.headline)}</h1> |
93 | </div> | 94 | </div> |
95 | <LimitReachedInfobox /> | ||
94 | <div className="settings__body"> | 96 | <div className="settings__body"> |
95 | {!isLoading && ( | 97 | {!isLoading && ( |
96 | <SearchInput | 98 | <SearchInput |
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index 660c3c109..835fd394b 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js | |||
@@ -26,6 +26,10 @@ const messages = defineMessages({ | |||
26 | id: 'settings.app.serverInfo', | 26 | id: 'settings.app.serverInfo', |
27 | defaultMessage: '!!!We advice you to logout after changing your server as your settings might not be saved otherwise.', | 27 | defaultMessage: '!!!We advice you to logout after changing your server as your settings might not be saved otherwise.', |
28 | }, | 28 | }, |
29 | todoServerInfo: { | ||
30 | id: 'settings.app.todoServerInfo', | ||
31 | defaultMessage: '!!!This server will be used for the "Franz Todo" feature. The default server will only work for premium users. (default: https://app.franztodos.com)', | ||
32 | }, | ||
29 | headlineLanguage: { | 33 | headlineLanguage: { |
30 | id: 'settings.app.headlineLanguage', | 34 | id: 'settings.app.headlineLanguage', |
31 | defaultMessage: '!!!Language', | 35 | defaultMessage: '!!!Language', |
@@ -76,7 +80,7 @@ const messages = defineMessages({ | |||
76 | }, | 80 | }, |
77 | updateStatusUpToDate: { | 81 | updateStatusUpToDate: { |
78 | id: 'settings.app.updateStatusUpToDate', | 82 | id: 'settings.app.updateStatusUpToDate', |
79 | defaultMessage: '!!!You are using the latest version of Franz', | 83 | defaultMessage: '!!!You are using the latest version of Ferdi', |
80 | }, | 84 | }, |
81 | currentVersion: { | 85 | currentVersion: { |
82 | id: 'settings.app.currentVersion', | 86 | id: 'settings.app.currentVersion', |
@@ -105,7 +109,9 @@ export default @observer class EditSettingsForm extends Component { | |||
105 | isClearingAllCache: PropTypes.bool.isRequired, | 109 | isClearingAllCache: PropTypes.bool.isRequired, |
106 | onClearAllCache: PropTypes.func.isRequired, | 110 | onClearAllCache: PropTypes.func.isRequired, |
107 | cacheSize: PropTypes.string.isRequired, | 111 | cacheSize: PropTypes.string.isRequired, |
108 | isSpellcheckerPremiumFeature: PropTypes.bool.isRequired, | 112 | isSpellcheckerIncludedInCurrentPlan: PropTypes.bool.isRequired, |
113 | isTodosEnabled: PropTypes.bool.isRequired, | ||
114 | isWorkspaceEnabled: PropTypes.bool.isRequired, | ||
109 | }; | 115 | }; |
110 | 116 | ||
111 | static contextTypes = { | 117 | static contextTypes = { |
@@ -135,7 +141,9 @@ export default @observer class EditSettingsForm extends Component { | |||
135 | isClearingAllCache, | 141 | isClearingAllCache, |
136 | onClearAllCache, | 142 | onClearAllCache, |
137 | cacheSize, | 143 | cacheSize, |
138 | isSpellcheckerPremiumFeature, | 144 | isSpellcheckerIncludedInCurrentPlan, |
145 | isTodosEnabled, | ||
146 | isWorkspaceEnabled, | ||
139 | } = this.props; | 147 | } = this.props; |
140 | const { intl } = this.context; | 148 | const { intl } = this.context; |
141 | 149 | ||
@@ -166,6 +174,7 @@ export default @observer class EditSettingsForm extends Component { | |||
166 | <Toggle field={form.$('autoLaunchOnStart')} /> | 174 | <Toggle field={form.$('autoLaunchOnStart')} /> |
167 | <Toggle field={form.$('runInBackground')} /> | 175 | <Toggle field={form.$('runInBackground')} /> |
168 | <Toggle field={form.$('enableSystemTray')} /> | 176 | <Toggle field={form.$('enableSystemTray')} /> |
177 | <Toggle field={form.$('privateNotifications')} /> | ||
169 | {process.platform === 'win32' && ( | 178 | {process.platform === 'win32' && ( |
170 | <Toggle field={form.$('minimizeToSystemTray')} /> | 179 | <Toggle field={form.$('minimizeToSystemTray')} /> |
171 | )} | 180 | )} |
@@ -175,9 +184,24 @@ export default @observer class EditSettingsForm extends Component { | |||
175 | field={form.$('server')} | 184 | field={form.$('server')} |
176 | autoFocus | 185 | autoFocus |
177 | /> | 186 | /> |
178 | { isLoggedIn && ( | 187 | {isLoggedIn && ( |
179 | <p>{ intl.formatMessage(messages.serverInfo) }</p> | 188 | <p>{ intl.formatMessage(messages.serverInfo) }</p> |
180 | )} | 189 | )} |
190 | {isWorkspaceEnabled && ( | ||
191 | <Toggle field={form.$('keepAllWorkspacesLoaded')} /> | ||
192 | )} | ||
193 | {isTodosEnabled && ( | ||
194 | <> | ||
195 | <Toggle field={form.$('enableTodos')} /> | ||
196 | <Input | ||
197 | placeholder="Todo Server" | ||
198 | onChange={e => this.submit(e)} | ||
199 | field={form.$('todoServer')} | ||
200 | autoFocus | ||
201 | /> | ||
202 | <p>{ intl.formatMessage(messages.todoServerInfo) }</p> | ||
203 | </> | ||
204 | )} | ||
181 | 205 | ||
182 | {/* Appearance */} | 206 | {/* Appearance */} |
183 | <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2> | 207 | <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2> |
@@ -189,7 +213,7 @@ export default @observer class EditSettingsForm extends Component { | |||
189 | <h2 id="language">{intl.formatMessage(messages.headlineLanguage)}</h2> | 213 | <h2 id="language">{intl.formatMessage(messages.headlineLanguage)}</h2> |
190 | <Select field={form.$('locale')} showLabel={false} /> | 214 | <Select field={form.$('locale')} showLabel={false} /> |
191 | <PremiumFeatureContainer | 215 | <PremiumFeatureContainer |
192 | condition={isSpellcheckerPremiumFeature} | 216 | condition={!isSpellcheckerIncludedInCurrentPlan} |
193 | gaEventInfo={{ category: 'User', event: 'upgrade', label: 'spellchecker' }} | 217 | gaEventInfo={{ category: 'User', event: 'upgrade', label: 'spellchecker' }} |
194 | > | 218 | > |
195 | <Fragment> | 219 | <Fragment> |
@@ -265,13 +289,15 @@ export default @observer class EditSettingsForm extends Component { | |||
265 | </p> | 289 | </p> |
266 | <p className="settings__message"> | 290 | <p className="settings__message"> |
267 | <span className="mdi mdi-github-face" /> | 291 | <span className="mdi mdi-github-face" /> |
268 | Ferdi is based on | 292 | <span> |
269 | {' '} | 293 | Ferdi is based on |
270 | <a href="https://github.com/meetfranz/franz" target="_blank">Franz</a> | 294 | {' '} |
271 | , a project published | 295 | <a href="https://github.com/meetfranz/franz" target="_blank">Franz</a> |
272 | under the | 296 | , a project published |
273 | {' '} | 297 | under the |
274 | <a href="https://github.com/meetfranz/franz/blob/master/LICENSE" target="_blank">Apache-2.0 License</a> | 298 | {' '} |
299 | <a href="https://github.com/meetfranz/franz/blob/master/LICENSE" target="_blank">Apache-2.0 License</a> | ||
300 | </span> | ||
275 | </p> | 301 | </p> |
276 | </form> | 302 | </form> |
277 | </div> | 303 | </div> |
diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js index 05c942a11..2bf46b48d 100644 --- a/src/components/settings/team/TeamDashboard.js +++ b/src/components/settings/team/TeamDashboard.js | |||
@@ -4,11 +4,14 @@ import { observer } from 'mobx-react'; | |||
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | import ReactTooltip from 'react-tooltip'; | 5 | import ReactTooltip from 'react-tooltip'; |
6 | import injectSheet from 'react-jss'; | 6 | import injectSheet from 'react-jss'; |
7 | import classnames from 'classnames'; | ||
7 | 8 | ||
9 | import { Badge } from '@meetfranz/ui'; | ||
8 | import Loader from '../../ui/Loader'; | 10 | import Loader from '../../ui/Loader'; |
9 | import Button from '../../ui/Button'; | 11 | import Button from '../../ui/Button'; |
10 | import Infobox from '../../ui/Infobox'; | 12 | import Infobox from '../../ui/Infobox'; |
11 | import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer'; | 13 | import globalMessages from '../../../i18n/globalMessages'; |
14 | import UpgradeButton from '../../ui/UpgradeButton'; | ||
12 | 15 | ||
13 | const messages = defineMessages({ | 16 | const messages = defineMessages({ |
14 | headline: { | 17 | headline: { |
@@ -40,6 +43,7 @@ const messages = defineMessages({ | |||
40 | const styles = { | 43 | const styles = { |
41 | cta: { | 44 | cta: { |
42 | margin: [40, 'auto'], | 45 | margin: [40, 'auto'], |
46 | height: 'auto', | ||
43 | }, | 47 | }, |
44 | container: { | 48 | container: { |
45 | display: 'flex', | 49 | display: 'flex', |
@@ -69,6 +73,20 @@ const styles = { | |||
69 | order: 1, | 73 | order: 1, |
70 | }, | 74 | }, |
71 | }, | 75 | }, |
76 | headline: { | ||
77 | marginBottom: 0, | ||
78 | }, | ||
79 | headlineWithSpacing: { | ||
80 | marginBottom: 'inherit', | ||
81 | }, | ||
82 | proRequired: { | ||
83 | margin: [10, 0, 40], | ||
84 | height: 'auto', | ||
85 | }, | ||
86 | buttonContainer: { | ||
87 | display: 'flex', | ||
88 | height: 'auto', | ||
89 | }, | ||
72 | }; | 90 | }; |
73 | 91 | ||
74 | 92 | ||
@@ -79,6 +97,7 @@ export default @injectSheet(styles) @observer class TeamDashboard extends Compon | |||
79 | retryUserInfoRequest: PropTypes.func.isRequired, | 97 | retryUserInfoRequest: PropTypes.func.isRequired, |
80 | openTeamManagement: PropTypes.func.isRequired, | 98 | openTeamManagement: PropTypes.func.isRequired, |
81 | classes: PropTypes.object.isRequired, | 99 | classes: PropTypes.object.isRequired, |
100 | isProUser: PropTypes.bool.isRequired, | ||
82 | }; | 101 | }; |
83 | 102 | ||
84 | static contextTypes = { | 103 | static contextTypes = { |
@@ -91,6 +110,7 @@ export default @injectSheet(styles) @observer class TeamDashboard extends Compon | |||
91 | userInfoRequestFailed, | 110 | userInfoRequestFailed, |
92 | retryUserInfoRequest, | 111 | retryUserInfoRequest, |
93 | openTeamManagement, | 112 | openTeamManagement, |
113 | isProUser, | ||
94 | classes, | 114 | classes, |
95 | } = this.props; | 115 | } = this.props; |
96 | const { intl } = this.context; | 116 | const { intl } = this.context; |
@@ -123,23 +143,42 @@ export default @injectSheet(styles) @observer class TeamDashboard extends Compon | |||
123 | <> | 143 | <> |
124 | {!isLoading && ( | 144 | {!isLoading && ( |
125 | <> | 145 | <> |
126 | <PremiumFeatureContainer> | 146 | <> |
127 | <> | 147 | <h1 className={classnames({ |
128 | <h1>{intl.formatMessage(messages.contentHeadline)}</h1> | 148 | [classes.headline]: true, |
129 | <div className={classes.container}> | 149 | [classes.headlineWithSpacing]: isProUser, |
130 | <div className={classes.content}> | 150 | })} |
131 | <p>{intl.formatMessage(messages.intro)}</p> | 151 | > |
132 | <p>{intl.formatMessage(messages.copy)}</p> | 152 | {intl.formatMessage(messages.contentHeadline)} |
133 | </div> | 153 | |
134 | <img className={classes.image} src="https://cdn.franzinfra.com/announcements/assets/teams.png" alt="Ferdi for Teams" /> | 154 | </h1> |
155 | {!isProUser && ( | ||
156 | <Badge className={classes.proRequired}>{intl.formatMessage(globalMessages.proRequired)}</Badge> | ||
157 | )} | ||
158 | <div className={classes.container}> | ||
159 | <div className={classes.content}> | ||
160 | <p>{intl.formatMessage(messages.intro)}</p> | ||
161 | <p>{intl.formatMessage(messages.copy)}</p> | ||
135 | </div> | 162 | </div> |
136 | <Button | 163 | <img className={classes.image} src="https://cdn.franzinfra.com/announcements/assets/teams.png" alt="Franz for Teams" /> |
137 | label={intl.formatMessage(messages.manageButton)} | 164 | </div> |
138 | onClick={openTeamManagement} | 165 | <div className={classes.buttonContainer}> |
139 | className={classes.cta} | 166 | {!isProUser ? ( |
140 | /> | 167 | <UpgradeButton |
141 | </> | 168 | className={classes.cta} |
142 | </PremiumFeatureContainer> | 169 | gaEventInfo={{ category: 'Todos', event: 'upgrade' }} |
170 | requiresPro | ||
171 | short | ||
172 | /> | ||
173 | ) : ( | ||
174 | <Button | ||
175 | label={intl.formatMessage(messages.manageButton)} | ||
176 | onClick={openTeamManagement} | ||
177 | className={classes.cta} | ||
178 | /> | ||
179 | )} | ||
180 | </div> | ||
181 | </> | ||
143 | </> | 182 | </> |
144 | )} | 183 | )} |
145 | </> | 184 | </> |
diff --git a/src/components/subscription/SubscriptionForm.js b/src/components/subscription/SubscriptionForm.js index 8c7dceece..cdfbbe60d 100644 --- a/src/components/subscription/SubscriptionForm.js +++ b/src/components/subscription/SubscriptionForm.js | |||
@@ -1,214 +1,78 @@ | |||
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 { observer, PropTypes as MobxPropTypes } 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 injectSheet from 'react-jss'; | ||
5 | 6 | ||
6 | import Form from '../../lib/Form'; | 7 | import { H3, H2 } from '@meetfranz/ui'; |
7 | import Radio from '../ui/Radio'; | ||
8 | import Button from '../ui/Button'; | ||
9 | import Loader from '../ui/Loader'; | ||
10 | 8 | ||
11 | import { required } from '../../helpers/validation-helpers'; | 9 | import { Button } from '@meetfranz/forms'; |
10 | import { FeatureList } from '../ui/FeatureList'; | ||
12 | 11 | ||
13 | const messages = defineMessages({ | 12 | const messages = defineMessages({ |
14 | submitButtonLabel: { | 13 | submitButtonLabel: { |
15 | id: 'subscription.submit.label', | 14 | id: 'subscription.cta.choosePlan', |
16 | defaultMessage: '!!!Support the development of Franz', | 15 | defaultMessage: '!!!Choose your plan', |
17 | }, | 16 | }, |
18 | paymentSessionError: { | 17 | teaserHeadline: { |
19 | id: 'subscription.paymentSessionError', | 18 | id: 'settings.account.headlineUpgradeAccount', |
20 | defaultMessage: '!!!Could not initialize payment form', | 19 | defaultMessage: '!!!Upgrade your account and get the full Franz experience', |
21 | }, | 20 | }, |
22 | typeFree: { | 21 | teaserText: { |
23 | id: 'subscription.type.free', | 22 | id: 'subscription.teaser.intro', |
24 | defaultMessage: '!!!free', | 23 | defaultMessage: '!!!Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!', |
25 | }, | ||
26 | typeMonthly: { | ||
27 | id: 'subscription.type.month', | ||
28 | defaultMessage: '!!!month', | ||
29 | }, | ||
30 | typeYearly: { | ||
31 | id: 'subscription.type.year', | ||
32 | defaultMessage: '!!!year', | ||
33 | }, | 24 | }, |
34 | includedFeatures: { | 25 | includedFeatures: { |
35 | id: 'subscription.includedFeatures', | 26 | id: 'subscription.teaser.includedFeatures', |
36 | defaultMessage: '!!!The Ferdi Premium Supporter Account includes', | 27 | defaultMessage: '!!!Paid Franz Plans include:', |
37 | }, | ||
38 | onpremise: { | ||
39 | id: 'subscription.features.onpremise.mattermost', | ||
40 | defaultMessage: '!!!Add on-premise/hosted services like Mattermost', | ||
41 | }, | ||
42 | noInterruptions: { | ||
43 | id: 'subscription.features.noInterruptions', | ||
44 | defaultMessage: '!!!No app delays & nagging to upgrade license', | ||
45 | }, | ||
46 | proxy: { | ||
47 | id: 'subscription.features.proxy', | ||
48 | defaultMessage: '!!!Proxy support for services', | ||
49 | }, | ||
50 | spellchecker: { | ||
51 | id: 'subscription.features.spellchecker', | ||
52 | defaultMessage: '!!!Support for Spellchecker', | ||
53 | }, | 28 | }, |
54 | workspaces: { | 29 | }); |
55 | id: 'subscription.features.workspaces', | 30 | |
56 | defaultMessage: '!!!Organize your services in workspaces', | 31 | const styles = () => ({ |
57 | }, | 32 | activateTrialButton: { |
58 | ads: { | 33 | margin: [40, 0, 50], |
59 | id: 'subscription.features.ads', | ||
60 | defaultMessage: '!!!No ads, ever!', | ||
61 | }, | ||
62 | comingSoon: { | ||
63 | id: 'subscription.features.comingSoon', | ||
64 | defaultMessage: '!!!coming soon', | ||
65 | }, | ||
66 | euTaxInfo: { | ||
67 | id: 'subscription.euTaxInfo', | ||
68 | defaultMessage: '!!!EU residents: local sales tax may apply', | ||
69 | }, | 34 | }, |
70 | }); | 35 | }); |
71 | 36 | ||
72 | export default @observer class SubscriptionForm extends Component { | 37 | export default @observer @injectSheet(styles) class SubscriptionForm extends Component { |
73 | static propTypes = { | 38 | static propTypes = { |
74 | plan: MobxPropTypes.objectOrObservableObject.isRequired, | 39 | selectPlan: PropTypes.func.isRequired, |
75 | isLoading: PropTypes.bool.isRequired, | 40 | isActivatingTrial: PropTypes.bool.isRequired, |
76 | handlePayment: PropTypes.func.isRequired, | 41 | classes: PropTypes.object.isRequired, |
77 | retryPlanRequest: PropTypes.func.isRequired, | ||
78 | isCreatingHostedPage: PropTypes.bool.isRequired, | ||
79 | error: PropTypes.bool.isRequired, | ||
80 | showSkipOption: PropTypes.bool, | ||
81 | skipAction: PropTypes.func, | ||
82 | skipButtonLabel: PropTypes.string, | ||
83 | hideInfo: PropTypes.bool.isRequired, | ||
84 | }; | ||
85 | |||
86 | static defaultProps = { | ||
87 | showSkipOption: false, | ||
88 | skipAction: () => null, | ||
89 | skipButtonLabel: '', | ||
90 | }; | 42 | }; |
91 | 43 | ||
92 | static contextTypes = { | 44 | static contextTypes = { |
93 | intl: intlShape, | 45 | intl: intlShape, |
94 | }; | 46 | }; |
95 | 47 | ||
96 | componentWillMount() { | ||
97 | this.form = this.prepareForm(); | ||
98 | } | ||
99 | |||
100 | prepareForm() { | ||
101 | const { intl } = this.context; | ||
102 | |||
103 | const form = { | ||
104 | fields: { | ||
105 | paymentTier: { | ||
106 | value: 'year', | ||
107 | validators: [required], | ||
108 | options: [{ | ||
109 | value: 'month', | ||
110 | label: `€ ${Object.hasOwnProperty.call(this.props.plan, 'month') | ||
111 | ? `${this.props.plan.month.price} / ${intl.formatMessage(messages.typeMonthly)}` | ||
112 | : 'monthly'}`, | ||
113 | }, { | ||
114 | value: 'year', | ||
115 | label: `€ ${Object.hasOwnProperty.call(this.props.plan, 'year') | ||
116 | ? `${this.props.plan.year.price} / ${intl.formatMessage(messages.typeYearly)}` | ||
117 | : 'yearly'}`, | ||
118 | }], | ||
119 | }, | ||
120 | }, | ||
121 | }; | ||
122 | |||
123 | if (this.props.showSkipOption) { | ||
124 | form.fields.paymentTier.options.unshift({ | ||
125 | value: 'skip', | ||
126 | label: `€ 0 / ${intl.formatMessage(messages.typeFree)}`, | ||
127 | }); | ||
128 | } | ||
129 | |||
130 | return new Form(form, this.context.intl); | ||
131 | } | ||
132 | |||
133 | render() { | 48 | render() { |
134 | const { | 49 | const { |
135 | isLoading, | 50 | isActivatingTrial, |
136 | isCreatingHostedPage, | 51 | selectPlan, |
137 | handlePayment, | 52 | classes, |
138 | retryPlanRequest, | ||
139 | error, | ||
140 | showSkipOption, | ||
141 | skipAction, | ||
142 | skipButtonLabel, | ||
143 | hideInfo, | ||
144 | } = this.props; | 53 | } = this.props; |
145 | const { intl } = this.context; | 54 | const { intl } = this.context; |
146 | 55 | ||
147 | if (error) { | 56 | return ( |
148 | return ( | 57 | <> |
58 | <H2>{intl.formatMessage(messages.teaserHeadline)}</H2> | ||
59 | <p>{intl.formatMessage(messages.teaserText)}</p> | ||
149 | <Button | 60 | <Button |
150 | label="Reload" | 61 | label={intl.formatMessage(messages.submitButtonLabel)} |
151 | onClick={retryPlanRequest} | 62 | className={classes.activateTrialButton} |
152 | isLoaded={!isLoading} | 63 | busy={isActivatingTrial} |
64 | onClick={selectPlan} | ||
65 | stretch | ||
153 | /> | 66 | /> |
154 | ); | 67 | <div className="subscription__premium-info"> |
155 | } | 68 | <H3> |
156 | 69 | {intl.formatMessage(messages.includedFeatures)} | |
157 | return ( | 70 | </H3> |
158 | <Loader loaded={!isLoading}> | 71 | <div className="subscription"> |
159 | <Radio field={this.form.$('paymentTier')} showLabel={false} className="paymentTiers" /> | 72 | <FeatureList /> |
160 | {!hideInfo && ( | ||
161 | <div className="subscription__premium-info"> | ||
162 | <p> | ||
163 | <strong>{intl.formatMessage(messages.includedFeatures)}</strong> | ||
164 | </p> | ||
165 | <div className="subscription"> | ||
166 | <ul className="subscription__premium-features"> | ||
167 | <li>{intl.formatMessage(messages.onpremise)}</li> | ||
168 | <li> | ||
169 | {intl.formatMessage(messages.noInterruptions)} | ||
170 | </li> | ||
171 | <li> | ||
172 | {intl.formatMessage(messages.spellchecker)} | ||
173 | </li> | ||
174 | <li> | ||
175 | {intl.formatMessage(messages.proxy)} | ||
176 | </li> | ||
177 | <li> | ||
178 | {intl.formatMessage(messages.workspaces)} | ||
179 | </li> | ||
180 | <li> | ||
181 | {intl.formatMessage(messages.ads)} | ||
182 | </li> | ||
183 | </ul> | ||
184 | </div> | ||
185 | </div> | 73 | </div> |
186 | )} | 74 | </div> |
187 | <Fragment> | 75 | </> |
188 | {error.code === 'no-payment-session' && ( | ||
189 | <p className="error-message center">{intl.formatMessage(messages.paymentSessionError)}</p> | ||
190 | )} | ||
191 | </Fragment> | ||
192 | {showSkipOption && this.form.$('paymentTier').value === 'skip' ? ( | ||
193 | <Button | ||
194 | label={skipButtonLabel} | ||
195 | className="auth__button" | ||
196 | onClick={skipAction} | ||
197 | /> | ||
198 | ) : ( | ||
199 | <Button | ||
200 | label={intl.formatMessage(messages.submitButtonLabel)} | ||
201 | className="auth__button" | ||
202 | loaded={!isCreatingHostedPage} | ||
203 | onClick={() => handlePayment(this.form.$('paymentTier').value)} | ||
204 | /> | ||
205 | )} | ||
206 | {this.form.$('paymentTier').value !== 'skip' && ( | ||
207 | <p className="legal"> | ||
208 | {intl.formatMessage(messages.euTaxInfo)} | ||
209 | </p> | ||
210 | )} | ||
211 | </Loader> | ||
212 | ); | 76 | ); |
213 | } | 77 | } |
214 | } | 78 | } |
diff --git a/src/components/subscription/SubscriptionPopup.js b/src/components/subscription/SubscriptionPopup.js index 0f6f0260f..12ef8a6e9 100644 --- a/src/components/subscription/SubscriptionPopup.js +++ b/src/components/subscription/SubscriptionPopup.js | |||
@@ -43,7 +43,7 @@ export default @observer class SubscriptionPopup extends Component { | |||
43 | 43 | ||
44 | setTimeout(() => { | 44 | setTimeout(() => { |
45 | this.props.closeWindow(); | 45 | this.props.closeWindow(); |
46 | }, ms('4s')); | 46 | }, ms('1s')); |
47 | } | 47 | } |
48 | 48 | ||
49 | render() { | 49 | render() { |
@@ -61,8 +61,6 @@ export default @observer class SubscriptionPopup extends Component { | |||
61 | autosize | 61 | autosize |
62 | src={encodeURI(url)} | 62 | src={encodeURI(url)} |
63 | onDidNavigate={completeCheck} | 63 | onDidNavigate={completeCheck} |
64 | // onNewWindow={(event, url, frameName, options) => | ||
65 | // openWindow({ event, url, frameName, options })} | ||
66 | /> | 64 | /> |
67 | </div> | 65 | </div> |
68 | <div className="subscription-popup__toolbar franz-form"> | 66 | <div className="subscription-popup__toolbar franz-form"> |
diff --git a/src/components/subscription/TrialForm.js b/src/components/subscription/TrialForm.js new file mode 100644 index 000000000..9ed548f16 --- /dev/null +++ b/src/components/subscription/TrialForm.js | |||
@@ -0,0 +1,115 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import { defineMessages, intlShape } from 'react-intl'; | ||
5 | import injectSheet from 'react-jss'; | ||
6 | |||
7 | import { H3, H2 } from '@meetfranz/ui'; | ||
8 | |||
9 | import { Button } from '@meetfranz/forms'; | ||
10 | import { FeatureList } from '../ui/FeatureList'; | ||
11 | import { FeatureItem } from '../ui/FeatureItem'; | ||
12 | |||
13 | const messages = defineMessages({ | ||
14 | submitButtonLabel: { | ||
15 | id: 'subscription.cta.activateTrial', | ||
16 | defaultMessage: '!!!Yes, start the free Franz Professional trial', | ||
17 | }, | ||
18 | allOptionsButton: { | ||
19 | id: 'subscription.cta.allOptions', | ||
20 | defaultMessage: '!!!See all options', | ||
21 | }, | ||
22 | teaserHeadline: { | ||
23 | id: 'settings.account.headlineTrialUpgrade', | ||
24 | defaultMessage: '!!!Get the free 14 day Franz Professional Trial', | ||
25 | }, | ||
26 | includedFeatures: { | ||
27 | id: 'subscription.includedProFeatures', | ||
28 | defaultMessage: '!!!The Franz Professional Plan includes:', | ||
29 | }, | ||
30 | noStringsAttachedHeadline: { | ||
31 | id: 'pricing.trial.terms.headline', | ||
32 | defaultMessage: '!!!No strings attached', | ||
33 | }, | ||
34 | noCreditCard: { | ||
35 | id: 'pricing.trial.terms.noCreditCard', | ||
36 | defaultMessage: '!!!No credit card required', | ||
37 | }, | ||
38 | automaticTrialEnd: { | ||
39 | id: 'pricing.trial.terms.automaticTrialEnd', | ||
40 | defaultMessage: '!!!Your free trial ends automatically after 14 days', | ||
41 | }, | ||
42 | }); | ||
43 | |||
44 | const styles = theme => ({ | ||
45 | activateTrialButton: { | ||
46 | margin: [40, 0, 10], | ||
47 | }, | ||
48 | allOptionsButton: { | ||
49 | margin: [0, 0, 40], | ||
50 | background: 'none', | ||
51 | border: 'none', | ||
52 | color: theme.colorText, | ||
53 | }, | ||
54 | keyTerms: { | ||
55 | marginTop: 20, | ||
56 | }, | ||
57 | }); | ||
58 | |||
59 | export default @observer @injectSheet(styles) class TrialForm extends Component { | ||
60 | static propTypes = { | ||
61 | activateTrial: PropTypes.func.isRequired, | ||
62 | isActivatingTrial: PropTypes.bool.isRequired, | ||
63 | showAllOptions: PropTypes.func.isRequired, | ||
64 | classes: PropTypes.object.isRequired, | ||
65 | }; | ||
66 | |||
67 | static contextTypes = { | ||
68 | intl: intlShape, | ||
69 | }; | ||
70 | |||
71 | render() { | ||
72 | const { | ||
73 | isActivatingTrial, | ||
74 | activateTrial, | ||
75 | showAllOptions, | ||
76 | classes, | ||
77 | } = this.props; | ||
78 | const { intl } = this.context; | ||
79 | |||
80 | return ( | ||
81 | <> | ||
82 | <H2>{intl.formatMessage(messages.teaserHeadline)}</H2> | ||
83 | <H3 className={classes.keyTerms}> | ||
84 | {intl.formatMessage(messages.noStringsAttachedHeadline)} | ||
85 | </H3> | ||
86 | <ul> | ||
87 | <FeatureItem icon="👉" name={intl.formatMessage(messages.noCreditCard)} /> | ||
88 | <FeatureItem icon="👉" name={intl.formatMessage(messages.automaticTrialEnd)} /> | ||
89 | </ul> | ||
90 | |||
91 | <Button | ||
92 | label={intl.formatMessage(messages.submitButtonLabel)} | ||
93 | className={classes.activateTrialButton} | ||
94 | busy={isActivatingTrial} | ||
95 | onClick={activateTrial} | ||
96 | stretch | ||
97 | /> | ||
98 | <Button | ||
99 | label={intl.formatMessage(messages.allOptionsButton)} | ||
100 | className={classes.allOptionsButton} | ||
101 | onClick={showAllOptions} | ||
102 | stretch | ||
103 | /> | ||
104 | <div className="subscription__premium-info"> | ||
105 | <H3> | ||
106 | {intl.formatMessage(messages.includedFeatures)} | ||
107 | </H3> | ||
108 | <div className="subscription"> | ||
109 | <FeatureList /> | ||
110 | </div> | ||
111 | </div> | ||
112 | </> | ||
113 | ); | ||
114 | } | ||
115 | } | ||
diff --git a/src/components/ui/ActivateTrialButton/index.js b/src/components/ui/ActivateTrialButton/index.js new file mode 100644 index 000000000..340123c2f --- /dev/null +++ b/src/components/ui/ActivateTrialButton/index.js | |||
@@ -0,0 +1,108 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { inject, observer } from 'mobx-react'; | ||
4 | import { defineMessages, intlShape } from 'react-intl'; | ||
5 | import classnames from 'classnames'; | ||
6 | |||
7 | import { Button } from '@meetfranz/forms'; | ||
8 | |||
9 | import UserStore from '../../../stores/UserStore'; | ||
10 | |||
11 | const messages = defineMessages({ | ||
12 | action: { | ||
13 | id: 'feature.delayApp.upgrade.action', | ||
14 | defaultMessage: '!!!Get a Franz Supporter License', | ||
15 | }, | ||
16 | actionTrial: { | ||
17 | id: 'feature.delayApp.trial.action', | ||
18 | defaultMessage: '!!!Yes, I want the free 14 day trial of Franz Professional', | ||
19 | }, | ||
20 | shortAction: { | ||
21 | id: 'feature.delayApp.upgrade.actionShort', | ||
22 | defaultMessage: '!!!Upgrade account', | ||
23 | }, | ||
24 | shortActionTrial: { | ||
25 | id: 'feature.delayApp.trial.actionShort', | ||
26 | defaultMessage: '!!!Activate the free Franz Professional trial', | ||
27 | }, | ||
28 | noStringsAttachedHeadline: { | ||
29 | id: 'pricing.trial.terms.headline', | ||
30 | defaultMessage: '!!!No strings attached', | ||
31 | }, | ||
32 | noCreditCard: { | ||
33 | id: 'pricing.trial.terms.noCreditCard', | ||
34 | defaultMessage: '!!!No credit card required', | ||
35 | }, | ||
36 | automaticTrialEnd: { | ||
37 | id: 'pricing.trial.terms.automaticTrialEnd', | ||
38 | defaultMessage: '!!!Your free trial ends automatically after 14 days', | ||
39 | }, | ||
40 | }); | ||
41 | |||
42 | @inject('stores', 'actions') @observer | ||
43 | class ActivateTrialButton extends Component { | ||
44 | static propTypes = { | ||
45 | className: PropTypes.string, | ||
46 | short: PropTypes.bool, | ||
47 | gaEventInfo: PropTypes.shape({ | ||
48 | category: PropTypes.string.isRequired, | ||
49 | event: PropTypes.string.isRequired, | ||
50 | label: PropTypes.string, | ||
51 | }), | ||
52 | }; | ||
53 | |||
54 | static defaultProps = { | ||
55 | className: '', | ||
56 | short: false, | ||
57 | gaEventInfo: null, | ||
58 | } | ||
59 | |||
60 | static contextTypes = { | ||
61 | intl: intlShape, | ||
62 | }; | ||
63 | |||
64 | handleCTAClick() { | ||
65 | const { actions } = this.props; | ||
66 | |||
67 | actions.ui.openSettings({ path: 'user' }); | ||
68 | } | ||
69 | |||
70 | render() { | ||
71 | const { stores, className, short } = this.props; | ||
72 | const { intl } = this.context; | ||
73 | |||
74 | const { hadSubscription } = stores.user.data; | ||
75 | |||
76 | let label; | ||
77 | if (hadSubscription) { | ||
78 | label = short ? messages.shortAction : messages.action; | ||
79 | } else { | ||
80 | label = short ? messages.shortActionTrial : messages.actionTrial; | ||
81 | } | ||
82 | |||
83 | return ( | ||
84 | <Button | ||
85 | label={intl.formatMessage(label)} | ||
86 | className={classnames({ | ||
87 | [className]: className, | ||
88 | })} | ||
89 | buttonType="inverted" | ||
90 | onClick={this.handleCTAClick.bind(this)} | ||
91 | busy={stores.user.activateTrialRequest.isExecuting} | ||
92 | /> | ||
93 | ); | ||
94 | } | ||
95 | } | ||
96 | |||
97 | export default ActivateTrialButton; | ||
98 | |||
99 | ActivateTrialButton.wrappedComponent.propTypes = { | ||
100 | stores: PropTypes.shape({ | ||
101 | user: PropTypes.instanceOf(UserStore).isRequired, | ||
102 | }).isRequired, | ||
103 | actions: PropTypes.shape({ | ||
104 | ui: PropTypes.shape({ | ||
105 | openSettings: PropTypes.func.isRequired, | ||
106 | }).isRequired, | ||
107 | }).isRequired, | ||
108 | }; | ||
diff --git a/src/components/ui/FeatureItem.js b/src/components/ui/FeatureItem.js new file mode 100644 index 000000000..7c482c4d4 --- /dev/null +++ b/src/components/ui/FeatureItem.js | |||
@@ -0,0 +1,37 @@ | |||
1 | import React from 'react'; | ||
2 | import injectSheet from 'react-jss'; | ||
3 | import { Icon } from '@meetfranz/ui'; | ||
4 | import classnames from 'classnames'; | ||
5 | import { mdiCheckCircle } from '@mdi/js'; | ||
6 | |||
7 | const styles = theme => ({ | ||
8 | featureItem: { | ||
9 | borderBottom: [1, 'solid', theme.defaultContentBorder], | ||
10 | padding: [8, 0], | ||
11 | display: 'flex', | ||
12 | alignItems: 'center', | ||
13 | }, | ||
14 | featureIcon: { | ||
15 | fill: theme.brandSuccess, | ||
16 | marginRight: 10, | ||
17 | }, | ||
18 | }); | ||
19 | |||
20 | export const FeatureItem = injectSheet(styles)(({ | ||
21 | classes, className, name, icon, | ||
22 | }) => ( | ||
23 | <li className={classnames({ | ||
24 | [classes.featureItem]: true, | ||
25 | [className]: className, | ||
26 | })} | ||
27 | > | ||
28 | {icon ? ( | ||
29 | <span className={classes.featureIcon}>{icon}</span> | ||
30 | ) : ( | ||
31 | <Icon icon={mdiCheckCircle} className={classes.featureIcon} size={1.5} /> | ||
32 | )} | ||
33 | {name} | ||
34 | </li> | ||
35 | )); | ||
36 | |||
37 | export default FeatureItem; | ||
diff --git a/src/components/ui/FeatureList.js b/src/components/ui/FeatureList.js new file mode 100644 index 000000000..62944ad75 --- /dev/null +++ b/src/components/ui/FeatureList.js | |||
@@ -0,0 +1,89 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { defineMessages, intlShape } from 'react-intl'; | ||
4 | |||
5 | import { FeatureItem } from './FeatureItem'; | ||
6 | |||
7 | const messages = defineMessages({ | ||
8 | unlimitedServices: { | ||
9 | id: 'pricing.features.unlimitedServices', | ||
10 | defaultMessage: '!!!Add unlimited services', | ||
11 | }, | ||
12 | spellchecker: { | ||
13 | id: 'pricing.features.spellchecker', | ||
14 | defaultMessage: '!!!Spellchecker support', | ||
15 | }, | ||
16 | workspaces: { | ||
17 | id: 'pricing.features.workspaces', | ||
18 | defaultMessage: '!!!Workspaces', | ||
19 | }, | ||
20 | customWebsites: { | ||
21 | id: 'pricing.features.customWebsites', | ||
22 | defaultMessage: '!!!Add Custom Websites', | ||
23 | }, | ||
24 | onPremise: { | ||
25 | id: 'pricing.features.onPremise', | ||
26 | defaultMessage: '!!!On-premise & other Hosted Services', | ||
27 | }, | ||
28 | thirdPartyServices: { | ||
29 | id: 'pricing.features.thirdPartyServices', | ||
30 | defaultMessage: '!!!Install 3rd party services', | ||
31 | }, | ||
32 | serviceProxies: { | ||
33 | id: 'pricing.features.serviceProxies', | ||
34 | defaultMessage: '!!!Service Proxies', | ||
35 | }, | ||
36 | teamManagement: { | ||
37 | id: 'pricing.features.teamManagement', | ||
38 | defaultMessage: '!!!Team Management', | ||
39 | }, | ||
40 | appDelays: { | ||
41 | id: 'pricing.features.appDelays', | ||
42 | defaultMessage: '!!!No Waiting Screens', | ||
43 | }, | ||
44 | adFree: { | ||
45 | id: 'pricing.features.adFree', | ||
46 | defaultMessage: '!!!Forever ad-free', | ||
47 | }, | ||
48 | }); | ||
49 | |||
50 | export class FeatureList extends Component { | ||
51 | static propTypes = { | ||
52 | className: PropTypes.string, | ||
53 | featureClassName: PropTypes.string, | ||
54 | }; | ||
55 | |||
56 | static defaultProps = { | ||
57 | className: '', | ||
58 | featureClassName: '', | ||
59 | } | ||
60 | |||
61 | static contextTypes = { | ||
62 | intl: intlShape, | ||
63 | }; | ||
64 | |||
65 | render() { | ||
66 | const { | ||
67 | className, | ||
68 | featureClassName, | ||
69 | } = this.props; | ||
70 | const { intl } = this.context; | ||
71 | |||
72 | return ( | ||
73 | <ul className={className}> | ||
74 | <FeatureItem name={intl.formatMessage(messages.unlimitedServices)} className={featureClassName} /> | ||
75 | <FeatureItem name={intl.formatMessage(messages.spellchecker)} className={featureClassName} /> | ||
76 | <FeatureItem name={intl.formatMessage(messages.workspaces)} className={featureClassName} /> | ||
77 | <FeatureItem name={intl.formatMessage(messages.customWebsites)} className={featureClassName} /> | ||
78 | <FeatureItem name={intl.formatMessage(messages.onPremise)} className={featureClassName} /> | ||
79 | <FeatureItem name={intl.formatMessage(messages.thirdPartyServices)} className={featureClassName} /> | ||
80 | <FeatureItem name={intl.formatMessage(messages.serviceProxies)} className={featureClassName} /> | ||
81 | <FeatureItem name={intl.formatMessage(messages.teamManagement)} className={featureClassName} /> | ||
82 | <FeatureItem name={intl.formatMessage(messages.appDelays)} className={featureClassName} /> | ||
83 | <FeatureItem name={intl.formatMessage(messages.adFree)} className={featureClassName} /> | ||
84 | </ul> | ||
85 | ); | ||
86 | } | ||
87 | } | ||
88 | |||
89 | export default FeatureList; | ||
diff --git a/src/components/ui/Modal/index.js b/src/components/ui/Modal/index.js index 0b7154760..63d858c47 100644 --- a/src/components/ui/Modal/index.js +++ b/src/components/ui/Modal/index.js | |||
@@ -5,6 +5,7 @@ import classnames from 'classnames'; | |||
5 | import injectCSS from 'react-jss'; | 5 | import injectCSS from 'react-jss'; |
6 | import { Icon } from '@meetfranz/ui'; | 6 | import { Icon } from '@meetfranz/ui'; |
7 | 7 | ||
8 | import { mdiClose } from '@mdi/js'; | ||
8 | import styles from './styles'; | 9 | import styles from './styles'; |
9 | 10 | ||
10 | // ReactModal.setAppElement('#root'); | 11 | // ReactModal.setAppElement('#root'); |
@@ -59,7 +60,7 @@ export default @injectCSS(styles) class Modal extends Component { | |||
59 | className={classes.close} | 60 | className={classes.close} |
60 | onClick={close} | 61 | onClick={close} |
61 | > | 62 | > |
62 | <Icon icon="mdiClose" size={1.5} /> | 63 | <Icon icon={mdiClose} size={1.5} /> |
63 | </button> | 64 | </button> |
64 | )} | 65 | )} |
65 | <div className={classes.content}> | 66 | <div className={classes.content}> |
diff --git a/src/components/ui/PremiumFeatureContainer/index.js b/src/components/ui/PremiumFeatureContainer/index.js index b890b09ab..7ba353be3 100644 --- a/src/components/ui/PremiumFeatureContainer/index.js +++ b/src/components/ui/PremiumFeatureContainer/index.js | |||
@@ -9,6 +9,7 @@ import { oneOrManyChildElements } from '../../../prop-types'; | |||
9 | import UserStore from '../../../stores/UserStore'; | 9 | import UserStore from '../../../stores/UserStore'; |
10 | 10 | ||
11 | import styles from './styles'; | 11 | import styles from './styles'; |
12 | import FeatureStore from '../../../stores/FeaturesStore'; | ||
12 | 13 | ||
13 | const messages = defineMessages({ | 14 | const messages = defineMessages({ |
14 | action: { | 15 | action: { |
@@ -21,7 +22,10 @@ const messages = defineMessages({ | |||
21 | class PremiumFeatureContainer extends Component { | 22 | class PremiumFeatureContainer extends Component { |
22 | static propTypes = { | 23 | static propTypes = { |
23 | classes: PropTypes.object.isRequired, | 24 | classes: PropTypes.object.isRequired, |
24 | condition: PropTypes.bool, | 25 | condition: PropTypes.oneOfType([ |
26 | PropTypes.bool, | ||
27 | PropTypes.func, | ||
28 | ]), | ||
25 | gaEventInfo: PropTypes.shape({ | 29 | gaEventInfo: PropTypes.shape({ |
26 | category: PropTypes.string.isRequired, | 30 | category: PropTypes.string.isRequired, |
27 | event: PropTypes.string.isRequired, | 31 | event: PropTypes.string.isRequired, |
@@ -30,7 +34,7 @@ class PremiumFeatureContainer extends Component { | |||
30 | }; | 34 | }; |
31 | 35 | ||
32 | static defaultProps = { | 36 | static defaultProps = { |
33 | condition: true, | 37 | condition: null, |
34 | gaEventInfo: null, | 38 | gaEventInfo: null, |
35 | }; | 39 | }; |
36 | 40 | ||
@@ -49,7 +53,18 @@ class PremiumFeatureContainer extends Component { | |||
49 | 53 | ||
50 | const { intl } = this.context; | 54 | const { intl } = this.context; |
51 | 55 | ||
52 | return !stores.user.data.isPremium && !!condition ? ( | 56 | let showWrapper = !!condition; |
57 | |||
58 | if (condition === null) { | ||
59 | showWrapper = !stores.user.data.isPremium; | ||
60 | } else if (typeof condition === 'function') { | ||
61 | showWrapper = condition({ | ||
62 | isPremium: stores.user.data.isPremium, | ||
63 | features: stores.features.features, | ||
64 | }); | ||
65 | } | ||
66 | |||
67 | return showWrapper ? ( | ||
53 | <div className={classes.container}> | 68 | <div className={classes.container}> |
54 | <div className={classes.titleContainer}> | 69 | <div className={classes.titleContainer}> |
55 | <p className={classes.title}>Premium Feature</p> | 70 | <p className={classes.title}>Premium Feature</p> |
@@ -75,6 +90,7 @@ PremiumFeatureContainer.wrappedComponent.propTypes = { | |||
75 | children: oneOrManyChildElements.isRequired, | 90 | children: oneOrManyChildElements.isRequired, |
76 | stores: PropTypes.shape({ | 91 | stores: PropTypes.shape({ |
77 | user: PropTypes.instanceOf(UserStore).isRequired, | 92 | user: PropTypes.instanceOf(UserStore).isRequired, |
93 | features: PropTypes.instanceOf(FeatureStore).isRequired, | ||
78 | }).isRequired, | 94 | }).isRequired, |
79 | actions: PropTypes.shape({ | 95 | actions: PropTypes.shape({ |
80 | ui: PropTypes.shape({ | 96 | ui: PropTypes.shape({ |
diff --git a/src/components/ui/UpgradeButton/index.js b/src/components/ui/UpgradeButton/index.js new file mode 100644 index 000000000..1b764bd90 --- /dev/null +++ b/src/components/ui/UpgradeButton/index.js | |||
@@ -0,0 +1,84 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { inject, observer } from 'mobx-react'; | ||
4 | import { defineMessages, intlShape } from 'react-intl'; | ||
5 | |||
6 | import { Button } from '@meetfranz/forms'; | ||
7 | |||
8 | import UserStore from '../../../stores/UserStore'; | ||
9 | import ActivateTrialButton from '../ActivateTrialButton'; | ||
10 | |||
11 | const messages = defineMessages({ | ||
12 | upgradeToPro: { | ||
13 | id: 'global.upgradeButton.upgradeToPro', | ||
14 | defaultMessage: '!!!Upgrade to Franz Professional', | ||
15 | }, | ||
16 | }); | ||
17 | |||
18 | @inject('stores', 'actions') @observer | ||
19 | class UpgradeButton extends Component { | ||
20 | static propTypes = { | ||
21 | // eslint-disable-next-line | ||
22 | classes: PropTypes.object.isRequired, | ||
23 | className: PropTypes.string, | ||
24 | gaEventInfo: PropTypes.shape({ | ||
25 | category: PropTypes.string.isRequired, | ||
26 | event: PropTypes.string.isRequired, | ||
27 | label: PropTypes.string, | ||
28 | }), | ||
29 | requiresPro: PropTypes.bool, | ||
30 | }; | ||
31 | |||
32 | static defaultProps = { | ||
33 | className: '', | ||
34 | gaEventInfo: null, | ||
35 | requiresPro: false, | ||
36 | } | ||
37 | |||
38 | static contextTypes = { | ||
39 | intl: intlShape, | ||
40 | }; | ||
41 | |||
42 | handleCTAClick() { | ||
43 | const { actions } = this.props; | ||
44 | |||
45 | actions.ui.openSettings({ path: 'user' }); | ||
46 | } | ||
47 | |||
48 | render() { | ||
49 | const { stores, requiresPro } = this.props; | ||
50 | const { intl } = this.context; | ||
51 | |||
52 | const { isPremium, isPersonal } = stores.user; | ||
53 | |||
54 | if (isPremium && isPersonal && requiresPro) { | ||
55 | return ( | ||
56 | <Button | ||
57 | label={intl.formatMessage(messages.upgradeToPro)} | ||
58 | onClick={this.handleCTAClick.bind(this)} | ||
59 | className={this.props.className} | ||
60 | buttonType="inverted" | ||
61 | /> | ||
62 | ); | ||
63 | } | ||
64 | |||
65 | if (!isPremium) { | ||
66 | return <ActivateTrialButton {...this.props} />; | ||
67 | } | ||
68 | |||
69 | return null; | ||
70 | } | ||
71 | } | ||
72 | |||
73 | export default UpgradeButton; | ||
74 | |||
75 | UpgradeButton.wrappedComponent.propTypes = { | ||
76 | stores: PropTypes.shape({ | ||
77 | user: PropTypes.instanceOf(UserStore).isRequired, | ||
78 | }).isRequired, | ||
79 | actions: PropTypes.shape({ | ||
80 | ui: PropTypes.shape({ | ||
81 | openSettings: PropTypes.func.isRequired, | ||
82 | }).isRequired, | ||
83 | }).isRequired, | ||
84 | }; | ||
diff --git a/src/config.js b/src/config.js index 2d6e74411..3e0000a57 100644 --- a/src/config.js +++ b/src/config.js | |||
@@ -19,11 +19,16 @@ export const DEV_WS_API = 'wss://dev.franzinfra.com'; | |||
19 | export const LIVE_WS_API = 'wss://api.franzinfra.com'; | 19 | export const LIVE_WS_API = 'wss://api.franzinfra.com'; |
20 | 20 | ||
21 | export const LOCAL_API_WEBSITE = 'http://localhost:3333'; | 21 | export const LOCAL_API_WEBSITE = 'http://localhost:3333'; |
22 | export const DEV_API_WEBSITE = 'https://meetfranz.com'; | 22 | // export const DEV_API_WEBSITE = 'https://meetfranz.com';t |
23 | export const DEV_API_WEBSITE = 'http://hash-58883791519ef6288c952316bdce7fb462283893.franzstaging.com/'; // TODO: revert me | ||
23 | export const LIVE_API_WEBSITE = 'https://meetfranz.com'; | 24 | export const LIVE_API_WEBSITE = 'https://meetfranz.com'; |
24 | 25 | ||
25 | export const STATS_API = 'https://stats.franzinfra.com'; | 26 | export const STATS_API = 'https://stats.franzinfra.com'; |
26 | 27 | ||
28 | export const LOCAL_TODOS_FRONTEND_URL = 'http://localhost:4000'; | ||
29 | export const PRODUCTION_TODOS_FRONTEND_URL = 'https://app.franztodos.com'; | ||
30 | export const DEVELOPMENT_TODOS_FRONTEND_URL = 'https://development--franz-todos.netlify.com'; | ||
31 | |||
27 | export const GA_ID = !isDevMode ? 'UA-74126766-10' : 'UA-74126766-12'; | 32 | export const GA_ID = !isDevMode ? 'UA-74126766-10' : 'UA-74126766-12'; |
28 | 33 | ||
29 | export const DEFAULT_APP_SETTINGS = { | 34 | export const DEFAULT_APP_SETTINGS = { |
@@ -31,7 +36,9 @@ export const DEFAULT_APP_SETTINGS = { | |||
31 | runInBackground: true, | 36 | runInBackground: true, |
32 | enableSystemTray: true, | 37 | enableSystemTray: true, |
33 | minimizeToSystemTray: false, | 38 | minimizeToSystemTray: false, |
39 | privateNotifications: false, | ||
34 | server: LIVE_API, | 40 | server: LIVE_API, |
41 | todoServer: PRODUCTION_TODOS_FRONTEND_URL, | ||
35 | showDisabledServices: true, | 42 | showDisabledServices: true, |
36 | showMessageBadgeWhenMuted: true, | 43 | showMessageBadgeWhenMuted: true, |
37 | enableSpellchecking: true, | 44 | enableSpellchecking: true, |
@@ -46,16 +53,16 @@ export const DEFAULT_APP_SETTINGS = { | |||
46 | }; | 53 | }; |
47 | 54 | ||
48 | export const DEFAULT_FEATURES_CONFIG = { | 55 | export const DEFAULT_FEATURES_CONFIG = { |
49 | isSpellcheckerPremiumFeature: false, | 56 | isSpellcheckerIncludedInCurrentPlan: true, |
50 | needToWaitToProceed: false, | 57 | needToWaitToProceed: false, |
51 | needToWaitToProceedConfig: { | 58 | needToWaitToProceedConfig: { |
52 | delayOffset: ms('1h'), | 59 | delayOffset: ms('1h'), |
53 | wait: ms('10s'), | 60 | wait: ms('10s'), |
54 | }, | 61 | }, |
55 | isServiceProxyEnabled: false, | 62 | isServiceProxyEnabled: false, |
56 | isServiceProxyPremiumFeature: true, | 63 | isServiceProxyIncludedInCurrentPlan: true, |
57 | isAnnouncementsEnabled: true, | 64 | isAnnouncementsEnabled: true, |
58 | isWorkspacePremiumFeature: true, | 65 | isWorkspaceIncludedInCurrentPlan: true, |
59 | isWorkspaceEnabled: false, | 66 | isWorkspaceEnabled: false, |
60 | }; | 67 | }; |
61 | 68 | ||
@@ -68,6 +75,7 @@ export const DEFAULT_WINDOW_OPTIONS = { | |||
68 | 75 | ||
69 | export const FRANZ_SERVICE_REQUEST = 'https://bit.ly/franz-plugin-docs'; | 76 | export const FRANZ_SERVICE_REQUEST = 'https://bit.ly/franz-plugin-docs'; |
70 | export const FRANZ_TRANSLATION = 'https://bit.ly/franz-translate'; | 77 | export const FRANZ_TRANSLATION = 'https://bit.ly/franz-translate'; |
78 | export const FRANZ_DEV_DOCS = 'http://bit.ly/franz-dev-hub'; | ||
71 | 79 | ||
72 | export const FILE_SYSTEM_SETTINGS_TYPES = [ | 80 | export const FILE_SYSTEM_SETTINGS_TYPES = [ |
73 | 'app', | 81 | 'app', |
@@ -84,3 +92,25 @@ export const ALLOWED_PROTOCOLS = [ | |||
84 | 'http:', | 92 | 'http:', |
85 | 'ftp:', | 93 | 'ftp:', |
86 | ]; | 94 | ]; |
95 | |||
96 | export const PLANS = { | ||
97 | PERSONAL: 'PERSONAL', | ||
98 | PRO: 'PRO', | ||
99 | LEGACY: 'LEGACY', | ||
100 | FREE: 'FREE', | ||
101 | }; | ||
102 | |||
103 | export const PLANS_MAPPING = { | ||
104 | 'franz-personal-monthly': PLANS.PERSONAL, | ||
105 | 'franz-personal-yearly': PLANS.PERSONAL, | ||
106 | 'franz-pro-monthly': PLANS.PRO, | ||
107 | 'franz-pro-yearly': PLANS.PRO, | ||
108 | 'franz-supporter-license': PLANS.LEGACY, | ||
109 | 'franz-supporter-license-x1': PLANS.LEGACY, | ||
110 | 'franz-supporter-license-x2': PLANS.LEGACY, | ||
111 | 'franz-supporter-license-year': PLANS.LEGACY, | ||
112 | 'franz-supporter-license-year-x1': PLANS.LEGACY, | ||
113 | 'franz-supporter-license-year-x2': PLANS.LEGACY, | ||
114 | 'franz-supporter-license-year-2019': PLANS.LEGACY, | ||
115 | free: PLANS.FREE, | ||
116 | }; | ||
diff --git a/src/containers/auth/PricingScreen.js b/src/containers/auth/PricingScreen.js index 8d179a170..af1651931 100644 --- a/src/containers/auth/PricingScreen.js +++ b/src/containers/auth/PricingScreen.js | |||
@@ -5,7 +5,6 @@ import { RouterStore } from 'mobx-react-router'; | |||
5 | 5 | ||
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'; | ||
9 | 8 | ||
10 | import { globalError as globalErrorPropType } from '../../prop-types'; | 9 | import { globalError as globalErrorPropType } from '../../prop-types'; |
11 | 10 | ||
@@ -14,20 +13,40 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend | |||
14 | error: globalErrorPropType.isRequired, | 13 | error: globalErrorPropType.isRequired, |
15 | }; | 14 | }; |
16 | 15 | ||
16 | async submit() { | ||
17 | const { | ||
18 | actions, | ||
19 | stores, | ||
20 | } = this.props; | ||
21 | |||
22 | const { activateTrialRequest } = stores.user; | ||
23 | const { defaultTrialPlan } = stores.features.features; | ||
24 | |||
25 | actions.user.activateTrial({ planId: defaultTrialPlan }); | ||
26 | await activateTrialRequest._promise; | ||
27 | |||
28 | if (!activateTrialRequest.isError) { | ||
29 | stores.router.push('/'); | ||
30 | stores.user.hasCompletedSignup = true; | ||
31 | } | ||
32 | } | ||
33 | |||
17 | render() { | 34 | render() { |
18 | const { actions, stores, error } = this.props; | 35 | const { |
36 | error, | ||
37 | stores, | ||
38 | } = this.props; | ||
19 | 39 | ||
20 | const nextStepRoute = stores.user.legacyServices.length ? stores.user.importRoute : stores.user.inviteRoute; | 40 | const { getUserInfoRequest, activateTrialRequest } = stores.user; |
41 | const { featuresRequest } = stores.features; | ||
21 | 42 | ||
22 | return ( | 43 | return ( |
23 | <Pricing | 44 | <Pricing |
24 | donor={stores.user.data.donor || {}} | 45 | onSubmit={this.submit.bind(this)} |
25 | onSubmit={actions.user.signup} | 46 | isLoadingRequiredData={(getUserInfoRequest.isExecuting || !getUserInfoRequest.wasExecuted) || (featuresRequest.isExecuting || !featuresRequest.wasExecuted)} |
26 | onCloseSubscriptionWindow={() => this.props.stores.router.push(nextStepRoute)} | 47 | isActivatingTrial={activateTrialRequest.isExecuting} |
27 | isLoading={stores.payment.plansRequest.isExecuting} | 48 | trialActivationError={activateTrialRequest.isError} |
28 | isLoadingUser={stores.user.getUserInfoRequest.isExecuting} | ||
29 | error={error} | 49 | error={error} |
30 | skipAction={() => this.props.stores.router.push(nextStepRoute)} | ||
31 | /> | 50 | /> |
32 | ); | 51 | ); |
33 | } | 52 | } |
@@ -36,12 +55,11 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend | |||
36 | PricingScreen.wrappedComponent.propTypes = { | 55 | PricingScreen.wrappedComponent.propTypes = { |
37 | actions: PropTypes.shape({ | 56 | actions: PropTypes.shape({ |
38 | user: PropTypes.shape({ | 57 | user: PropTypes.shape({ |
39 | signup: PropTypes.func.isRequired, | 58 | activateTrial: PropTypes.func.isRequired, |
40 | }).isRequired, | 59 | }).isRequired, |
41 | }).isRequired, | 60 | }).isRequired, |
42 | stores: PropTypes.shape({ | 61 | stores: PropTypes.shape({ |
43 | user: PropTypes.instanceOf(UserStore).isRequired, | 62 | user: PropTypes.instanceOf(UserStore).isRequired, |
44 | payment: PropTypes.instanceOf(PaymentStore).isRequired, | ||
45 | router: PropTypes.instanceOf(RouterStore).isRequired, | 63 | router: PropTypes.instanceOf(RouterStore).isRequired, |
46 | }).isRequired, | 64 | }).isRequired, |
47 | }; | 65 | }; |
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js index 38ed85986..95fbd109f 100644 --- a/src/containers/layout/AppLayoutContainer.js +++ b/src/containers/layout/AppLayoutContainer.js | |||
@@ -10,6 +10,7 @@ import FeaturesStore from '../../stores/FeaturesStore'; | |||
10 | import UIStore from '../../stores/UIStore'; | 10 | import UIStore from '../../stores/UIStore'; |
11 | import NewsStore from '../../stores/NewsStore'; | 11 | import NewsStore from '../../stores/NewsStore'; |
12 | import SettingsStore from '../../stores/SettingsStore'; | 12 | import SettingsStore from '../../stores/SettingsStore'; |
13 | import UserStore from '../../stores/UserStore'; | ||
13 | import RequestStore from '../../stores/RequestStore'; | 14 | import RequestStore from '../../stores/RequestStore'; |
14 | import GlobalErrorStore from '../../stores/GlobalErrorStore'; | 15 | import GlobalErrorStore from '../../stores/GlobalErrorStore'; |
15 | 16 | ||
@@ -39,6 +40,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e | |||
39 | settings, | 40 | settings, |
40 | globalError, | 41 | globalError, |
41 | requests, | 42 | requests, |
43 | user, | ||
42 | } = this.props.stores; | 44 | } = this.props.stores; |
43 | 45 | ||
44 | const { | 46 | const { |
@@ -125,6 +127,8 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e | |||
125 | reload={reload} | 127 | reload={reload} |
126 | openSettings={openSettings} | 128 | openSettings={openSettings} |
127 | update={updateService} | 129 | update={updateService} |
130 | userHasCompletedSignup={user.hasCompletedSignup} | ||
131 | hasActivatedTrial={user.hasActivatedTrial} | ||
128 | /> | 132 | /> |
129 | ); | 133 | ); |
130 | 134 | ||
@@ -150,6 +154,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e | |||
150 | retryRequiredRequests={retryRequiredRequests} | 154 | retryRequiredRequests={retryRequiredRequests} |
151 | areRequiredRequestsLoading={requests.areRequiredRequestsLoading} | 155 | areRequiredRequestsLoading={requests.areRequiredRequestsLoading} |
152 | isDelayAppScreenVisible={delayAppState.isDelayAppScreenVisible} | 156 | isDelayAppScreenVisible={delayAppState.isDelayAppScreenVisible} |
157 | hasActivatedTrial={user.hasActivatedTrial} | ||
153 | > | 158 | > |
154 | {React.Children.count(children) > 0 ? children : null} | 159 | {React.Children.count(children) > 0 ? children : null} |
155 | </AppLayout> | 160 | </AppLayout> |
@@ -167,6 +172,7 @@ AppLayoutContainer.wrappedComponent.propTypes = { | |||
167 | ui: PropTypes.instanceOf(UIStore).isRequired, | 172 | ui: PropTypes.instanceOf(UIStore).isRequired, |
168 | news: PropTypes.instanceOf(NewsStore).isRequired, | 173 | news: PropTypes.instanceOf(NewsStore).isRequired, |
169 | settings: PropTypes.instanceOf(SettingsStore).isRequired, | 174 | settings: PropTypes.instanceOf(SettingsStore).isRequired, |
175 | user: PropTypes.instanceOf(UserStore).isRequired, | ||
170 | requests: PropTypes.instanceOf(RequestStore).isRequired, | 176 | requests: PropTypes.instanceOf(RequestStore).isRequired, |
171 | globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired, | 177 | globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired, |
172 | }).isRequired, | 178 | }).isRequired, |
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js index fd3317301..41cdeb79a 100644 --- a/src/containers/settings/AccountScreen.js +++ b/src/containers/settings/AccountScreen.js | |||
@@ -30,7 +30,7 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend | |||
30 | 30 | ||
31 | let url; | 31 | let url; |
32 | if (api === 'https://api.franzinfra.com') { | 32 | if (api === 'https://api.franzinfra.com') { |
33 | url = `${WEBSITE}${route}?authToken=${stores.user.authToken}&utm_source=app&utm_medium=account_dashboard`; | 33 | url = stores.user.getAuthURL(`${WEBSITE}${route}?utm_source=app&utm_medium=account_dashboard`); |
34 | } else { | 34 | } else { |
35 | url = `${api}${route}`; | 35 | url = `${api}${route}`; |
36 | } | 36 | } |
@@ -49,6 +49,8 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend | |||
49 | <ErrorBoundary> | 49 | <ErrorBoundary> |
50 | <AccountDashboard | 50 | <AccountDashboard |
51 | user={user.data} | 51 | user={user.data} |
52 | isPremiumOverrideUser={user.isPremiumOverride} | ||
53 | isProUser={user.isPro} | ||
52 | isLoading={isLoadingUserInfo} | 54 | isLoading={isLoadingUserInfo} |
53 | isLoadingPlans={isLoadingPlans} | 55 | isLoadingPlans={isLoadingPlans} |
54 | userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError} | 56 | userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError} |
@@ -58,6 +60,7 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend | |||
58 | isLoadingDeleteAccount={user.deleteAccountRequest.isExecuting} | 60 | isLoadingDeleteAccount={user.deleteAccountRequest.isExecuting} |
59 | isDeleteAccountSuccessful={user.deleteAccountRequest.wasExecuted && !user.deleteAccountRequest.isError} | 61 | isDeleteAccountSuccessful={user.deleteAccountRequest.wasExecuted && !user.deleteAccountRequest.isError} |
60 | openEditAccount={() => this.handleWebsiteLink('/user/profile')} | 62 | openEditAccount={() => this.handleWebsiteLink('/user/profile')} |
63 | upgradeToPro={() => this.handleWebsiteLink('/inapp/user/licenses')} | ||
61 | openBilling={() => this.handleWebsiteLink('/user/billing')} | 64 | openBilling={() => this.handleWebsiteLink('/user/billing')} |
62 | openInvoices={() => this.handleWebsiteLink('/user/invoices')} | 65 | openInvoices={() => this.handleWebsiteLink('/user/invoices')} |
63 | /> | 66 | /> |
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js index 870ca4ecd..e4ff03bb3 100644 --- a/src/containers/settings/EditServiceScreen.js +++ b/src/containers/settings/EditServiceScreen.js | |||
@@ -330,8 +330,8 @@ export default @inject('stores', 'actions') @observer class EditServiceScreen ex | |||
330 | onSubmit={d => this.onSubmit(d)} | 330 | onSubmit={d => this.onSubmit(d)} |
331 | onDelete={() => this.deleteService()} | 331 | onDelete={() => this.deleteService()} |
332 | isProxyFeatureEnabled={proxyFeature.isEnabled} | 332 | isProxyFeatureEnabled={proxyFeature.isEnabled} |
333 | isProxyPremiumFeature={proxyFeature.isPremium} | 333 | isServiceProxyIncludedInCurrentPlan={proxyFeature.isIncludedInCurrentPlan} |
334 | isSpellcheckerPremiumFeature={spellcheckerFeature.isPremium} | 334 | isSpellcheckerIncludedInCurrentPlan={spellcheckerFeature.isIncludedInCurrentPlan} |
335 | /> | 335 | /> |
336 | </ErrorBoundary> | 336 | </ErrorBoundary> |
337 | ); | 337 | ); |
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index 38f73c20f..09e7b43ab 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js | |||
@@ -6,6 +6,7 @@ import { defineMessages, intlShape } from 'react-intl'; | |||
6 | import AppStore from '../../stores/AppStore'; | 6 | import AppStore from '../../stores/AppStore'; |
7 | import SettingsStore from '../../stores/SettingsStore'; | 7 | import SettingsStore from '../../stores/SettingsStore'; |
8 | import UserStore from '../../stores/UserStore'; | 8 | import UserStore from '../../stores/UserStore'; |
9 | import TodosStore from '../../features/todos/store'; | ||
9 | import Form from '../../lib/Form'; | 10 | import Form from '../../lib/Form'; |
10 | import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; | 11 | import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages'; |
11 | import { DEFAULT_APP_SETTINGS } from '../../config'; | 12 | import { DEFAULT_APP_SETTINGS } from '../../config'; |
@@ -16,9 +17,12 @@ import { getSelectOptions } from '../../helpers/i18n-helpers'; | |||
16 | import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; | 17 | import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; |
17 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 18 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
18 | 19 | ||
19 | import { API } from '../../environment'; | 20 | import { API, TODOS_FRONTEND } from '../../environment'; |
20 | 21 | ||
21 | import globalMessages from '../../i18n/globalMessages'; | 22 | import globalMessages from '../../i18n/globalMessages'; |
23 | import { DEFAULT_IS_FEATURE_ENABLED_BY_USER } from '../../features/todos'; | ||
24 | import WorkspacesStore from '../../features/workspaces/store'; | ||
25 | import { DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED } from '../../features/workspaces'; | ||
22 | 26 | ||
23 | const messages = defineMessages({ | 27 | const messages = defineMessages({ |
24 | autoLaunchOnStart: { | 28 | autoLaunchOnStart: { |
@@ -41,10 +45,18 @@ const messages = defineMessages({ | |||
41 | id: 'settings.app.form.minimizeToSystemTray', | 45 | id: 'settings.app.form.minimizeToSystemTray', |
42 | defaultMessage: '!!!Minimize Ferdi to system tray', | 46 | defaultMessage: '!!!Minimize Ferdi to system tray', |
43 | }, | 47 | }, |
48 | privateNotifications: { | ||
49 | id: 'settings.app.form.privateNotifications', | ||
50 | defaultMessage: '!!!Don\'t show message content in notifications', | ||
51 | }, | ||
44 | server: { | 52 | server: { |
45 | id: 'settings.app.form.server', | 53 | id: 'settings.app.form.server', |
46 | defaultMessage: '!!!Server', | 54 | defaultMessage: '!!!Server', |
47 | }, | 55 | }, |
56 | todoServer: { | ||
57 | id: 'settings.app.form.todoServer', | ||
58 | defaultMessage: '!!!Todo Server', | ||
59 | }, | ||
48 | language: { | 60 | language: { |
49 | id: 'settings.app.form.language', | 61 | id: 'settings.app.form.language', |
50 | defaultMessage: '!!!Language', | 62 | defaultMessage: '!!!Language', |
@@ -73,6 +85,14 @@ const messages = defineMessages({ | |||
73 | id: 'settings.app.form.beta', | 85 | id: 'settings.app.form.beta', |
74 | defaultMessage: '!!!Include beta versions', | 86 | defaultMessage: '!!!Include beta versions', |
75 | }, | 87 | }, |
88 | enableTodos: { | ||
89 | id: 'settings.app.form.enableTodos', | ||
90 | defaultMessage: '!!!Enable Franz Todos', | ||
91 | }, | ||
92 | keepAllWorkspacesLoaded: { | ||
93 | id: 'settings.app.form.keepAllWorkspacesLoaded', | ||
94 | defaultMessage: '!!!Keep all workspaces loaded', | ||
95 | }, | ||
76 | }); | 96 | }); |
77 | 97 | ||
78 | export default @inject('stores', 'actions') @observer class EditSettingsScreen extends Component { | 98 | export default @inject('stores', 'actions') @observer class EditSettingsScreen extends Component { |
@@ -81,7 +101,14 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
81 | }; | 101 | }; |
82 | 102 | ||
83 | onSubmit(settingsData) { | 103 | onSubmit(settingsData) { |
84 | const { app, settings, user } = this.props.actions; | 104 | const { todos, workspaces } = this.props.stores; |
105 | const { | ||
106 | app, | ||
107 | settings, | ||
108 | user, | ||
109 | todos: todosActions, | ||
110 | workspaces: workspaceActions, | ||
111 | } = this.props.actions; | ||
85 | 112 | ||
86 | app.launchOnStartup({ | 113 | app.launchOnStartup({ |
87 | enable: settingsData.autoLaunchOnStart, | 114 | enable: settingsData.autoLaunchOnStart, |
@@ -94,7 +121,9 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
94 | runInBackground: settingsData.runInBackground, | 121 | runInBackground: settingsData.runInBackground, |
95 | enableSystemTray: settingsData.enableSystemTray, | 122 | enableSystemTray: settingsData.enableSystemTray, |
96 | minimizeToSystemTray: settingsData.minimizeToSystemTray, | 123 | minimizeToSystemTray: settingsData.minimizeToSystemTray, |
124 | privateNotifications: settingsData.privateNotifications, | ||
97 | server: settingsData.server, | 125 | server: settingsData.server, |
126 | todoServer: settingsData.todoServer, | ||
98 | enableGPUAcceleration: settingsData.enableGPUAcceleration, | 127 | enableGPUAcceleration: settingsData.enableGPUAcceleration, |
99 | showDisabledServices: settingsData.showDisabledServices, | 128 | showDisabledServices: settingsData.showDisabledServices, |
100 | darkMode: settingsData.darkMode, | 129 | darkMode: settingsData.darkMode, |
@@ -112,10 +141,26 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
112 | locale: settingsData.locale, | 141 | locale: settingsData.locale, |
113 | }, | 142 | }, |
114 | }); | 143 | }); |
144 | |||
145 | if (workspaces.isFeatureActive) { | ||
146 | const { keepAllWorkspacesLoaded } = workspaces.settings; | ||
147 | if (keepAllWorkspacesLoaded !== settingsData.keepAllWorkspacesLoaded) { | ||
148 | workspaceActions.toggleKeepAllWorkspacesLoadedSetting(); | ||
149 | } | ||
150 | } | ||
151 | |||
152 | if (todos.isFeatureActive) { | ||
153 | const { isFeatureEnabledByUser } = todos.settings; | ||
154 | if (isFeatureEnabledByUser !== settingsData.enableTodos) { | ||
155 | todosActions.toggleTodosFeatureVisibility(); | ||
156 | } | ||
157 | } | ||
115 | } | 158 | } |
116 | 159 | ||
117 | prepareForm() { | 160 | prepareForm() { |
118 | const { app, settings, user } = this.props.stores; | 161 | const { |
162 | app, settings, user, todos, workspaces, | ||
163 | } = this.props.stores; | ||
119 | const { intl } = this.context; | 164 | const { intl } = this.context; |
120 | 165 | ||
121 | const locales = getSelectOptions({ | 166 | const locales = getSelectOptions({ |
@@ -154,11 +199,21 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
154 | value: settings.all.app.minimizeToSystemTray, | 199 | value: settings.all.app.minimizeToSystemTray, |
155 | default: DEFAULT_APP_SETTINGS.minimizeToSystemTray, | 200 | default: DEFAULT_APP_SETTINGS.minimizeToSystemTray, |
156 | }, | 201 | }, |
202 | privateNotifications: { | ||
203 | label: intl.formatMessage(messages.privateNotifications), | ||
204 | value: settings.all.app.privateNotifications, | ||
205 | default: DEFAULT_APP_SETTINGS.privateNotifications, | ||
206 | }, | ||
157 | server: { | 207 | server: { |
158 | label: intl.formatMessage(messages.server), | 208 | label: intl.formatMessage(messages.server), |
159 | value: settings.all.app.server || API, | 209 | value: settings.all.app.server || API, |
160 | default: API, | 210 | default: API, |
161 | }, | 211 | }, |
212 | todoServer: { | ||
213 | label: intl.formatMessage(messages.todoServer), | ||
214 | value: settings.all.app.todoServer || TODOS_FRONTEND, | ||
215 | default: TODOS_FRONTEND, | ||
216 | }, | ||
162 | showDisabledServices: { | 217 | showDisabledServices: { |
163 | label: intl.formatMessage(messages.showDisabledServices), | 218 | label: intl.formatMessage(messages.showDisabledServices), |
164 | value: settings.all.app.showDisabledServices, | 219 | value: settings.all.app.showDisabledServices, |
@@ -171,8 +226,8 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
171 | }, | 226 | }, |
172 | enableSpellchecking: { | 227 | enableSpellchecking: { |
173 | label: intl.formatMessage(messages.enableSpellchecking), | 228 | label: intl.formatMessage(messages.enableSpellchecking), |
174 | value: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremium ? false : settings.all.app.enableSpellchecking, | 229 | value: !this.props.stores.user.data.isPremium && !spellcheckerConfig.isIncludedInCurrentPlan ? false : settings.all.app.enableSpellchecking, |
175 | default: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremium ? false : DEFAULT_APP_SETTINGS.enableSpellchecking, | 230 | default: !this.props.stores.user.data.isPremium && !spellcheckerConfig.isIncludedInCurrentPlan ? false : DEFAULT_APP_SETTINGS.enableSpellchecking, |
176 | }, | 231 | }, |
177 | spellcheckerLanguage: { | 232 | spellcheckerLanguage: { |
178 | label: intl.formatMessage(globalMessages.spellcheckerLanguage), | 233 | label: intl.formatMessage(globalMessages.spellcheckerLanguage), |
@@ -204,16 +259,37 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
204 | }, | 259 | }, |
205 | }; | 260 | }; |
206 | 261 | ||
262 | if (workspaces.isFeatureActive) { | ||
263 | config.fields.keepAllWorkspacesLoaded = { | ||
264 | label: intl.formatMessage(messages.keepAllWorkspacesLoaded), | ||
265 | value: workspaces.settings.keepAllWorkspacesLoaded, | ||
266 | default: DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED, | ||
267 | }; | ||
268 | } | ||
269 | |||
270 | if (todos.isFeatureActive) { | ||
271 | config.fields.enableTodos = { | ||
272 | label: intl.formatMessage(messages.enableTodos), | ||
273 | value: todos.settings.isFeatureEnabledByUser, | ||
274 | default: DEFAULT_IS_FEATURE_ENABLED_BY_USER, | ||
275 | }; | ||
276 | } | ||
277 | |||
207 | return new Form(config); | 278 | return new Form(config); |
208 | } | 279 | } |
209 | 280 | ||
210 | render() { | 281 | render() { |
211 | const { | 282 | const { |
283 | app, | ||
284 | todos, | ||
285 | workspaces, | ||
286 | } = this.props.stores; | ||
287 | const { | ||
212 | updateStatus, | 288 | updateStatus, |
213 | cacheSize, | 289 | cacheSize, |
214 | updateStatusTypes, | 290 | updateStatusTypes, |
215 | isClearingAllCache, | 291 | isClearingAllCache, |
216 | } = this.props.stores.app; | 292 | } = app; |
217 | const { | 293 | const { |
218 | checkForUpdates, | 294 | checkForUpdates, |
219 | installUpdate, | 295 | installUpdate, |
@@ -235,7 +311,9 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e | |||
235 | cacheSize={cacheSize} | 311 | cacheSize={cacheSize} |
236 | isClearingAllCache={isClearingAllCache} | 312 | isClearingAllCache={isClearingAllCache} |
237 | onClearAllCache={clearAllCache} | 313 | onClearAllCache={clearAllCache} |
238 | isSpellcheckerPremiumFeature={spellcheckerConfig.isPremium} | 314 | isSpellcheckerIncludedInCurrentPlan={spellcheckerConfig.isIncludedInCurrentPlan} |
315 | isTodosEnabled={todos.isFeatureActive} | ||
316 | isWorkspaceEnabled={workspaces.isFeatureActive} | ||
239 | /> | 317 | /> |
240 | </ErrorBoundary> | 318 | </ErrorBoundary> |
241 | ); | 319 | ); |
@@ -247,6 +325,8 @@ EditSettingsScreen.wrappedComponent.propTypes = { | |||
247 | app: PropTypes.instanceOf(AppStore).isRequired, | 325 | app: PropTypes.instanceOf(AppStore).isRequired, |
248 | user: PropTypes.instanceOf(UserStore).isRequired, | 326 | user: PropTypes.instanceOf(UserStore).isRequired, |
249 | settings: PropTypes.instanceOf(SettingsStore).isRequired, | 327 | settings: PropTypes.instanceOf(SettingsStore).isRequired, |
328 | todos: PropTypes.instanceOf(TodosStore).isRequired, | ||
329 | workspaces: PropTypes.instanceOf(WorkspacesStore).isRequired, | ||
250 | }).isRequired, | 330 | }).isRequired, |
251 | actions: PropTypes.shape({ | 331 | actions: PropTypes.shape({ |
252 | app: PropTypes.shape({ | 332 | app: PropTypes.shape({ |
@@ -261,5 +341,11 @@ EditSettingsScreen.wrappedComponent.propTypes = { | |||
261 | user: PropTypes.shape({ | 341 | user: PropTypes.shape({ |
262 | update: PropTypes.func.isRequired, | 342 | update: PropTypes.func.isRequired, |
263 | }).isRequired, | 343 | }).isRequired, |
344 | todos: PropTypes.shape({ | ||
345 | toggleTodosFeatureVisibility: PropTypes.func.isRequired, | ||
346 | }).isRequired, | ||
347 | workspaces: PropTypes.shape({ | ||
348 | toggleAllWorkspacesLoadedSetting: PropTypes.func.isRequired, | ||
349 | }).isRequired, | ||
264 | }).isRequired, | 350 | }).isRequired, |
265 | }; | 351 | }; |
diff --git a/src/containers/settings/RecipesScreen.js b/src/containers/settings/RecipesScreen.js index eda5ae54c..692dc26f1 100644 --- a/src/containers/settings/RecipesScreen.js +++ b/src/containers/settings/RecipesScreen.js | |||
@@ -1,7 +1,9 @@ | |||
1 | import { remote, shell } from 'electron'; | ||
1 | import React, { Component } from 'react'; | 2 | import React, { Component } from 'react'; |
2 | import PropTypes from 'prop-types'; | 3 | import PropTypes from 'prop-types'; |
3 | import { autorun } from 'mobx'; | 4 | import { autorun } from 'mobx'; |
4 | import { inject, observer } from 'mobx-react'; | 5 | import { inject, observer } from 'mobx-react'; |
6 | import path from 'path'; | ||
5 | 7 | ||
6 | import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; | 8 | import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; |
7 | import RecipeStore from '../../stores/RecipesStore'; | 9 | import RecipeStore from '../../stores/RecipesStore'; |
@@ -10,6 +12,10 @@ import UserStore from '../../stores/UserStore'; | |||
10 | 12 | ||
11 | import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard'; | 13 | import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard'; |
12 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 14 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
15 | import { FRANZ_DEV_DOCS } from '../../config'; | ||
16 | import { communityRecipesStore } from '../../features/communityRecipes'; | ||
17 | |||
18 | const { app } = remote; | ||
13 | 19 | ||
14 | export default @inject('stores', 'actions') @observer class RecipesScreen extends Component { | 20 | export default @inject('stores', 'actions') @observer class RecipesScreen extends Component { |
15 | static propTypes = { | 21 | static propTypes = { |
@@ -67,9 +73,16 @@ export default @inject('stores', 'actions') @observer class RecipesScreen extend | |||
67 | 73 | ||
68 | render() { | 74 | render() { |
69 | const { | 75 | const { |
70 | recipePreviews, recipes, services, user, | 76 | recipePreviews, |
77 | recipes, | ||
78 | services, | ||
79 | user, | ||
71 | } = this.props.stores; | 80 | } = this.props.stores; |
72 | const { showAddServiceInterface } = this.props.actions.service; | 81 | |
82 | const { | ||
83 | app: appActions, | ||
84 | service: serviceActions, | ||
85 | } = this.props.actions; | ||
73 | 86 | ||
74 | const { filter } = this.props.params; | 87 | const { filter } = this.props.params; |
75 | let recipeFilter; | 88 | let recipeFilter; |
@@ -77,7 +90,7 @@ export default @inject('stores', 'actions') @observer class RecipesScreen extend | |||
77 | if (filter === 'all') { | 90 | if (filter === 'all') { |
78 | recipeFilter = recipePreviews.all; | 91 | recipeFilter = recipePreviews.all; |
79 | } else if (filter === 'dev') { | 92 | } else if (filter === 'dev') { |
80 | recipeFilter = recipePreviews.dev; | 93 | recipeFilter = communityRecipesStore.communityRecipes; |
81 | } else { | 94 | } else { |
82 | recipeFilter = recipePreviews.featured; | 95 | recipeFilter = recipePreviews.featured; |
83 | } | 96 | } |
@@ -89,6 +102,8 @@ export default @inject('stores', 'actions') @observer class RecipesScreen extend | |||
89 | || recipes.installRecipeRequest.isExecuting | 102 | || recipes.installRecipeRequest.isExecuting |
90 | || recipePreviews.searchRecipePreviewsRequest.isExecuting; | 103 | || recipePreviews.searchRecipePreviewsRequest.isExecuting; |
91 | 104 | ||
105 | const recipeDirectory = path.join(app.getPath('userData'), 'recipes', 'dev'); | ||
106 | |||
92 | return ( | 107 | return ( |
93 | <ErrorBoundary> | 108 | <ErrorBoundary> |
94 | <RecipesDashboard | 109 | <RecipesDashboard |
@@ -97,12 +112,21 @@ export default @inject('stores', 'actions') @observer class RecipesScreen extend | |||
97 | addedServiceCount={services.all.length} | 112 | addedServiceCount={services.all.length} |
98 | isPremium={user.data.isPremium} | 113 | isPremium={user.data.isPremium} |
99 | hasLoadedRecipes={recipePreviews.featuredRecipePreviewsRequest.wasExecuted} | 114 | hasLoadedRecipes={recipePreviews.featuredRecipePreviewsRequest.wasExecuted} |
100 | showAddServiceInterface={showAddServiceInterface} | 115 | showAddServiceInterface={serviceActions.showAddServiceInterface} |
101 | searchRecipes={e => this.searchRecipes(e)} | 116 | searchRecipes={e => this.searchRecipes(e)} |
102 | resetSearch={() => this.resetSearch()} | 117 | resetSearch={() => this.resetSearch()} |
103 | searchNeedle={this.state.needle} | 118 | searchNeedle={this.state.needle} |
104 | serviceStatus={services.actionStatus} | 119 | serviceStatus={services.actionStatus} |
105 | devRecipesCount={recipePreviews.dev.length} | 120 | recipeFilter={filter} |
121 | recipeDirectory={recipeDirectory} | ||
122 | openRecipeDirectory={() => { | ||
123 | shell.openItem(recipeDirectory); | ||
124 | }} | ||
125 | openDevDocs={() => { | ||
126 | appActions.openExternalUrl({ url: FRANZ_DEV_DOCS }); | ||
127 | }} | ||
128 | isCommunityRecipesIncludedInCurrentPlan={communityRecipesStore.isCommunityRecipesIncludedInCurrentPlan} | ||
129 | isUserPremiumUser={user.isPremium} | ||
106 | /> | 130 | /> |
107 | </ErrorBoundary> | 131 | </ErrorBoundary> |
108 | ); | 132 | ); |
@@ -117,6 +141,9 @@ RecipesScreen.wrappedComponent.propTypes = { | |||
117 | user: PropTypes.instanceOf(UserStore).isRequired, | 141 | user: PropTypes.instanceOf(UserStore).isRequired, |
118 | }).isRequired, | 142 | }).isRequired, |
119 | actions: PropTypes.shape({ | 143 | actions: PropTypes.shape({ |
144 | app: PropTypes.shape({ | ||
145 | openExternalUrl: PropTypes.func.isRequired, | ||
146 | }).isRequired, | ||
120 | service: PropTypes.shape({ | 147 | service: PropTypes.shape({ |
121 | showAddServiceInterface: PropTypes.func.isRequired, | 148 | showAddServiceInterface: PropTypes.func.isRequired, |
122 | }).isRequired, | 149 | }).isRequired, |
diff --git a/src/containers/settings/TeamScreen.js b/src/containers/settings/TeamScreen.js index c69d5ad08..f600c9947 100644 --- a/src/containers/settings/TeamScreen.js +++ b/src/containers/settings/TeamScreen.js | |||
@@ -14,7 +14,6 @@ export default @inject('stores', 'actions') @observer class TeamScreen extends C | |||
14 | const { actions, stores } = this.props; | 14 | const { actions, stores } = this.props; |
15 | 15 | ||
16 | const url = `${WEBSITE}${route}?authToken=${stores.user.authToken}&utm_source=app&utm_medium=account_dashboard`; | 16 | const url = `${WEBSITE}${route}?authToken=${stores.user.authToken}&utm_source=app&utm_medium=account_dashboard`; |
17 | console.log(url); | ||
18 | 17 | ||
19 | actions.app.openExternalUrl({ url }); | 18 | actions.app.openExternalUrl({ url }); |
20 | } | 19 | } |
@@ -31,6 +30,7 @@ export default @inject('stores', 'actions') @observer class TeamScreen extends C | |||
31 | userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError} | 30 | userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError} |
32 | retryUserInfoRequest={() => this.reloadData()} | 31 | retryUserInfoRequest={() => this.reloadData()} |
33 | openTeamManagement={() => this.handleWebsiteLink('/user/team')} | 32 | openTeamManagement={() => this.handleWebsiteLink('/user/team')} |
33 | isProUser={user.isPro} | ||
34 | /> | 34 | /> |
35 | </ErrorBoundary> | 35 | </ErrorBoundary> |
36 | ); | 36 | ); |
diff --git a/src/containers/subscription/SubscriptionFormScreen.js b/src/containers/subscription/SubscriptionFormScreen.js index 3d153b8e8..726b10628 100644 --- a/src/containers/subscription/SubscriptionFormScreen.js +++ b/src/containers/subscription/SubscriptionFormScreen.js | |||
@@ -1,4 +1,3 @@ | |||
1 | import { remote } from 'electron'; | ||
2 | import React, { Component } from 'react'; | 1 | import React, { Component } from 'react'; |
3 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
4 | import { inject, observer } from 'mobx-react'; | 3 | import { inject, observer } from 'mobx-react'; |
@@ -6,96 +5,50 @@ import { inject, observer } from 'mobx-react'; | |||
6 | import PaymentStore from '../../stores/PaymentStore'; | 5 | import PaymentStore from '../../stores/PaymentStore'; |
7 | 6 | ||
8 | import SubscriptionForm from '../../components/subscription/SubscriptionForm'; | 7 | import SubscriptionForm from '../../components/subscription/SubscriptionForm'; |
9 | 8 | import TrialForm from '../../components/subscription/TrialForm'; | |
10 | const { BrowserWindow } = remote; | ||
11 | 9 | ||
12 | export default @inject('stores', 'actions') @observer class SubscriptionFormScreen extends Component { | 10 | export default @inject('stores', 'actions') @observer class SubscriptionFormScreen extends Component { |
13 | static propTypes = { | 11 | async openBrowser() { |
14 | onCloseWindow: PropTypes.func, | ||
15 | content: PropTypes.node, | ||
16 | showSkipOption: PropTypes.bool, | ||
17 | skipAction: PropTypes.func, | ||
18 | skipButtonLabel: PropTypes.string, | ||
19 | hideInfo: PropTypes.bool, | ||
20 | } | ||
21 | |||
22 | static defaultProps = { | ||
23 | onCloseWindow: () => null, | ||
24 | content: '', | ||
25 | showSkipOption: false, | ||
26 | skipAction: () => null, | ||
27 | skipButtonLabel: '', | ||
28 | hideInfo: false, | ||
29 | } | ||
30 | |||
31 | async handlePayment(plan) { | ||
32 | const { | 12 | const { |
33 | actions, | 13 | actions, |
34 | stores, | 14 | stores, |
35 | onCloseWindow, | ||
36 | } = this.props; | 15 | } = this.props; |
37 | 16 | ||
38 | const interval = plan; | 17 | const { |
39 | 18 | user, | |
40 | const { id } = stores.payment.plan[interval]; | 19 | features, |
41 | actions.payment.createHostedPage({ | 20 | } = stores; |
42 | planId: id, | ||
43 | }); | ||
44 | |||
45 | const hostedPage = await stores.payment.createHostedPageRequest; | ||
46 | 21 | ||
47 | if (hostedPage.url) { | 22 | let hostedPageURL = features.features.planSelectionURL; |
48 | if (hostedPage.legacyCheckoutFlow) { | 23 | hostedPageURL = user.getAuthURL(hostedPageURL); |
49 | const paymentWindow = new BrowserWindow({ | ||
50 | parent: remote.getCurrentWindow(), | ||
51 | modal: true, | ||
52 | title: '🔒 Ferdi Supporter License', | ||
53 | width: 600, | ||
54 | height: window.innerHeight - 100, | ||
55 | maxWidth: 600, | ||
56 | minWidth: 600, | ||
57 | webPreferences: { | ||
58 | nodeIntegration: true, | ||
59 | webviewTag: true, | ||
60 | }, | ||
61 | }); | ||
62 | paymentWindow.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPage.url)}`); | ||
63 | 24 | ||
64 | paymentWindow.on('closed', () => { | 25 | actions.app.openExternalUrl({ url: hostedPageURL }); |
65 | onCloseWindow(); | ||
66 | }); | ||
67 | } else { | ||
68 | actions.app.openExternalUrl({ | ||
69 | url: hostedPage.url, | ||
70 | }); | ||
71 | } | ||
72 | } | ||
73 | } | 26 | } |
74 | 27 | ||
75 | render() { | 28 | render() { |
76 | const { | 29 | const { |
77 | content, | ||
78 | actions, | 30 | actions, |
79 | stores, | 31 | stores, |
80 | showSkipOption, | ||
81 | skipAction, | ||
82 | skipButtonLabel, | ||
83 | hideInfo, | ||
84 | } = this.props; | 32 | } = this.props; |
33 | |||
34 | const { data: user } = stores.user; | ||
35 | |||
36 | if (user.hadSubscription) { | ||
37 | return ( | ||
38 | <SubscriptionForm | ||
39 | plan={stores.payment.plan} | ||
40 | selectPlan={() => this.openBrowser()} | ||
41 | isActivatingTrial={stores.user.activateTrialRequest.isExecuting || stores.user.getUserInfoRequest.isExecuting} | ||
42 | /> | ||
43 | ); | ||
44 | } | ||
45 | |||
85 | return ( | 46 | return ( |
86 | <SubscriptionForm | 47 | <TrialForm |
87 | plan={stores.payment.plan} | 48 | plan={stores.payment.plan} |
88 | isLoading={stores.payment.plansRequest.isExecuting} | 49 | activateTrial={() => actions.user.activateTrial({ planId: stores.features.features.defaultTrialPlan })} |
89 | retryPlanRequest={() => stores.payment.plansRequest.reload()} | 50 | showAllOptions={() => this.openBrowser()} |
90 | isCreatingHostedPage={stores.payment.createHostedPageRequest.isExecuting} | 51 | isActivatingTrial={stores.user.activateTrialRequest.isExecuting || stores.user.getUserInfoRequest.isExecuting} |
91 | handlePayment={price => this.handlePayment(price)} | ||
92 | content={content} | ||
93 | error={stores.payment.plansRequest.isError} | ||
94 | showSkipOption={showSkipOption} | ||
95 | skipAction={skipAction} | ||
96 | skipButtonLabel={skipButtonLabel} | ||
97 | hideInfo={hideInfo} | ||
98 | openExternalUrl={actions.app.openExternalUrl} | ||
99 | /> | 52 | /> |
100 | ); | 53 | ); |
101 | } | 54 | } |
diff --git a/src/containers/subscription/SubscriptionPopupScreen.js b/src/containers/subscription/SubscriptionPopupScreen.js index f76d6c5a6..0de5a87c4 100644 --- a/src/containers/subscription/SubscriptionPopupScreen.js +++ b/src/containers/subscription/SubscriptionPopupScreen.js | |||
@@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; | |||
3 | import { inject, observer } from 'mobx-react'; | 3 | import { inject, observer } from 'mobx-react'; |
4 | 4 | ||
5 | import SubscriptionPopup from '../../components/subscription/SubscriptionPopup'; | 5 | import SubscriptionPopup from '../../components/subscription/SubscriptionPopup'; |
6 | import { isDevMode } from '../../environment'; | ||
6 | 7 | ||
7 | 8 | ||
8 | export default @inject('stores', 'actions') @observer class SubscriptionPopupScreen extends Component { | 9 | export default @inject('stores', 'actions') @observer class SubscriptionPopupScreen extends Component { |
@@ -13,7 +14,7 @@ export default @inject('stores', 'actions') @observer class SubscriptionPopupScr | |||
13 | completeCheck(event) { | 14 | completeCheck(event) { |
14 | const { url } = event; | 15 | const { url } = event; |
15 | 16 | ||
16 | if ((url.includes('recurly') && url.includes('confirmation')) || (url.includes('meetfranz') && url.includes('success'))) { | 17 | if ((url.includes('recurly') && url.includes('confirmation')) || ((url.includes('meetfranz') || isDevMode) && url.includes('success'))) { |
17 | this.setState({ | 18 | this.setState({ |
18 | complete: true, | 19 | complete: true, |
19 | }); | 20 | }); |
diff --git a/src/electron/Settings.js b/src/electron/Settings.js index 63f43b6b7..95e3dcfa4 100644 --- a/src/electron/Settings.js +++ b/src/electron/Settings.js | |||
@@ -4,7 +4,7 @@ import path from 'path'; | |||
4 | 4 | ||
5 | import { SETTINGS_PATH } from '../config'; | 5 | import { SETTINGS_PATH } from '../config'; |
6 | 6 | ||
7 | const debug = require('debug')('Franz:Settings'); | 7 | const debug = require('debug')('Ferdi:Settings'); |
8 | 8 | ||
9 | export default class Settings { | 9 | export default class Settings { |
10 | type = ''; | 10 | type = ''; |
diff --git a/src/electron/ipc-api/autoUpdate.js b/src/electron/ipc-api/autoUpdate.js index 9a04c1958..6a3314b2b 100644 --- a/src/electron/ipc-api/autoUpdate.js +++ b/src/electron/ipc-api/autoUpdate.js | |||
@@ -1,7 +1,7 @@ | |||
1 | import { app, ipcMain } from 'electron'; | 1 | import { app, ipcMain } from 'electron'; |
2 | import { autoUpdater } from 'electron-updater'; | 2 | import { autoUpdater } from 'electron-updater'; |
3 | 3 | ||
4 | const debug = require('debug')('Franz:ipcApi:autoUpdate'); | 4 | const debug = require('debug')('Ferdi:ipcApi:autoUpdate'); |
5 | 5 | ||
6 | export default (params) => { | 6 | export default (params) => { |
7 | if (process.platform === 'darwin' || process.platform === 'win32' || process.env.APPIMAGE) { | 7 | if (process.platform === 'darwin' || process.platform === 'win32' || process.env.APPIMAGE) { |
diff --git a/src/electron/ipc-api/download.js b/src/electron/ipc-api/download.js index e6703af2d..01b81d388 100644 --- a/src/electron/ipc-api/download.js +++ b/src/electron/ipc-api/download.js | |||
@@ -3,7 +3,7 @@ import { download } from 'electron-dl'; | |||
3 | import mime from 'mime-types'; | 3 | import mime from 'mime-types'; |
4 | import fs from 'fs-extra'; | 4 | import fs from 'fs-extra'; |
5 | 5 | ||
6 | const debug = require('debug')('Franz:ipcApi:download'); | 6 | const debug = require('debug')('Ferdi:ipcApi:download'); |
7 | 7 | ||
8 | function decodeBase64Image(dataString) { | 8 | function decodeBase64Image(dataString) { |
9 | const matches = dataString.match(/^data:([A-Za-z-+/]+);base64,(.+)$/); | 9 | const matches = dataString.match(/^data:([A-Za-z-+/]+);base64,(.+)$/); |
diff --git a/src/environment.js b/src/environment.js index ae7a67e4d..6c889f7d8 100644 --- a/src/environment.js +++ b/src/environment.js | |||
@@ -10,6 +10,8 @@ import { | |||
10 | LIVE_WS_API, | 10 | LIVE_WS_API, |
11 | LOCAL_WS_API, | 11 | LOCAL_WS_API, |
12 | DEV_WS_API, | 12 | DEV_WS_API, |
13 | LOCAL_TODOS_FRONTEND_URL, | ||
14 | PRODUCTION_TODOS_FRONTEND_URL, | ||
13 | } from './config'; | 15 | } from './config'; |
14 | 16 | ||
15 | export const isDevMode = isDev; | 17 | export const isDevMode = isDev; |
@@ -31,21 +33,28 @@ export const cmdKey = isMac ? 'Cmd' : 'Ctrl'; | |||
31 | let api; | 33 | let api; |
32 | let wsApi; | 34 | let wsApi; |
33 | let web; | 35 | let web; |
36 | let todos; | ||
34 | if (!isDevMode || (isDevMode && useLiveAPI)) { | 37 | if (!isDevMode || (isDevMode && useLiveAPI)) { |
35 | api = LIVE_API; | 38 | api = LIVE_API; |
39 | // api = DEV_API; | ||
36 | wsApi = LIVE_WS_API; | 40 | wsApi = LIVE_WS_API; |
37 | web = LIVE_API_WEBSITE; | 41 | web = LIVE_API_WEBSITE; |
42 | // web = DEV_API_WEBSITE; | ||
43 | todos = PRODUCTION_TODOS_FRONTEND_URL; | ||
38 | } else if (isDevMode && useLocalAPI) { | 44 | } else if (isDevMode && useLocalAPI) { |
39 | api = LOCAL_API; | 45 | api = LOCAL_API; |
40 | wsApi = LOCAL_WS_API; | 46 | wsApi = LOCAL_WS_API; |
41 | web = LOCAL_API_WEBSITE; | 47 | web = LOCAL_API_WEBSITE; |
48 | todos = LOCAL_TODOS_FRONTEND_URL; | ||
42 | } else { | 49 | } else { |
43 | api = DEV_API; | 50 | api = DEV_API; |
44 | wsApi = DEV_WS_API; | 51 | wsApi = DEV_WS_API; |
45 | web = DEV_API_WEBSITE; | 52 | web = DEV_API_WEBSITE; |
53 | todos = PRODUCTION_TODOS_FRONTEND_URL; | ||
46 | } | 54 | } |
47 | 55 | ||
48 | export const API = api; | 56 | export const API = api; |
49 | export const API_VERSION = 'v1'; | 57 | export const API_VERSION = 'v1'; |
50 | export const WS_API = wsApi; | 58 | export const WS_API = wsApi; |
51 | export const WEBSITE = web; | 59 | export const WEBSITE = web; |
60 | export const TODOS_FRONTEND = todos; | ||
diff --git a/src/features/announcements/api.js b/src/features/announcements/api.js index eadb7dfce..a7995d6db 100644 --- a/src/features/announcements/api.js +++ b/src/features/announcements/api.js | |||
@@ -2,7 +2,7 @@ import { remote } from 'electron'; | |||
2 | import Request from '../../stores/lib/Request'; | 2 | import Request from '../../stores/lib/Request'; |
3 | import apiBase from '../../api/apiBase'; | 3 | import apiBase from '../../api/apiBase'; |
4 | 4 | ||
5 | const debug = require('debug')('Franz:feature:announcements:api'); | 5 | const debug = require('debug')('Ferdi:feature:announcements:api'); |
6 | 6 | ||
7 | export const announcementsApi = { | 7 | export const announcementsApi = { |
8 | async getCurrentVersion() { | 8 | async getCurrentVersion() { |
diff --git a/src/features/announcements/index.js b/src/features/announcements/index.js index f14e7c9a5..42823e74c 100644 --- a/src/features/announcements/index.js +++ b/src/features/announcements/index.js | |||
@@ -1,7 +1,7 @@ | |||
1 | import { reaction } from 'mobx'; | 1 | import { reaction } from 'mobx'; |
2 | import { AnnouncementsStore } from './store'; | 2 | import { AnnouncementsStore } from './store'; |
3 | 3 | ||
4 | const debug = require('debug')('Franz:feature:announcements'); | 4 | const debug = require('debug')('Ferdi:feature:announcements'); |
5 | 5 | ||
6 | export const GA_CATEGORY_ANNOUNCEMENTS = 'Announcements'; | 6 | export const GA_CATEGORY_ANNOUNCEMENTS = 'Announcements'; |
7 | 7 | ||
diff --git a/src/features/announcements/store.js b/src/features/announcements/store.js index 2884fb06f..9ec5f67d2 100644 --- a/src/features/announcements/store.js +++ b/src/features/announcements/store.js | |||
@@ -17,7 +17,7 @@ import { DEFAULT_APP_SETTINGS } from '../../config'; | |||
17 | 17 | ||
18 | const LOCAL_STORAGE_KEY = 'announcements'; | 18 | const LOCAL_STORAGE_KEY = 'announcements'; |
19 | 19 | ||
20 | const debug = require('debug')('Franz:feature:announcements:store'); | 20 | const debug = require('debug')('Ferdi:feature:announcements:store'); |
21 | 21 | ||
22 | export class AnnouncementsStore extends FeatureStore { | 22 | export class AnnouncementsStore extends FeatureStore { |
23 | @observable targetVersion = null; | 23 | @observable targetVersion = null; |
@@ -62,6 +62,11 @@ export class AnnouncementsStore extends FeatureStore { | |||
62 | return this.stores.settings.stats.appStarts <= 1; | 62 | return this.stores.settings.stats.appStarts <= 1; |
63 | } | 63 | } |
64 | 64 | ||
65 | @computed get isAnnouncementShown() { | ||
66 | const { router } = this.stores; | ||
67 | return router.location.pathname.includes('/announcements'); | ||
68 | } | ||
69 | |||
65 | async start(stores, actions) { | 70 | async start(stores, actions) { |
66 | debug('AnnouncementsStore::start'); | 71 | debug('AnnouncementsStore::start'); |
67 | this.stores = stores; | 72 | this.stores = stores; |
diff --git a/src/features/basicAuth/Component.js b/src/features/basicAuth/Component.js index a8252acb7..ba9ae2273 100644 --- a/src/features/basicAuth/Component.js +++ b/src/features/basicAuth/Component.js | |||
@@ -27,7 +27,6 @@ export default @injectSheet(styles) @observer class BasicAuthModal extends Compo | |||
27 | e.preventDefault(); | 27 | e.preventDefault(); |
28 | 28 | ||
29 | const values = Form.values(); | 29 | const values = Form.values(); |
30 | console.log('form submit', values); | ||
31 | 30 | ||
32 | sendCredentials(values.user, values.password); | 31 | sendCredentials(values.user, values.password); |
33 | resetState(); | 32 | resetState(); |
diff --git a/src/features/basicAuth/index.js b/src/features/basicAuth/index.js index a8c93875e..51625ea55 100644 --- a/src/features/basicAuth/index.js +++ b/src/features/basicAuth/index.js | |||
@@ -3,7 +3,7 @@ import { observable } from 'mobx'; | |||
3 | 3 | ||
4 | import BasicAuthComponent from './Component'; | 4 | import BasicAuthComponent from './Component'; |
5 | 5 | ||
6 | const debug = require('debug')('Franz:feature:basicAuth'); | 6 | const debug = require('debug')('Ferdi:feature:basicAuth'); |
7 | 7 | ||
8 | const defaultState = { | 8 | const defaultState = { |
9 | isModalVisible: true, | 9 | isModalVisible: true, |
diff --git a/src/features/basicAuth/mainIpcHandler.js b/src/features/basicAuth/mainIpcHandler.js index 87ac0b6df..ae4e7cf93 100644 --- a/src/features/basicAuth/mainIpcHandler.js +++ b/src/features/basicAuth/mainIpcHandler.js | |||
@@ -1,4 +1,4 @@ | |||
1 | const debug = require('debug')('Franz:feature:basicAuth:main'); | 1 | const debug = require('debug')('Ferdi:feature:basicAuth:main'); |
2 | 2 | ||
3 | export default function mainIpcHandler(mainWindow, authInfo) { | 3 | export default function mainIpcHandler(mainWindow, authInfo) { |
4 | debug('Sending basic auth call', authInfo); | 4 | debug('Sending basic auth call', authInfo); |
diff --git a/src/features/communityRecipes/index.js b/src/features/communityRecipes/index.js new file mode 100644 index 000000000..608164b68 --- /dev/null +++ b/src/features/communityRecipes/index.js | |||
@@ -0,0 +1,28 @@ | |||
1 | import { reaction } from 'mobx'; | ||
2 | import { CommunityRecipesStore } from './store'; | ||
3 | |||
4 | const debug = require('debug')('Ferdi:feature:communityRecipes'); | ||
5 | |||
6 | export const DEFAULT_SERVICE_LIMIT = 3; | ||
7 | |||
8 | export const communityRecipesStore = new CommunityRecipesStore(); | ||
9 | |||
10 | export default function initCommunityRecipes(stores, actions) { | ||
11 | const { features } = stores; | ||
12 | |||
13 | communityRecipesStore.start(stores, actions); | ||
14 | |||
15 | // Toggle communityRecipe premium status | ||
16 | reaction( | ||
17 | () => ( | ||
18 | features.features.isCommunityRecipesIncludedInCurrentPlan | ||
19 | ), | ||
20 | (isPremiumFeature) => { | ||
21 | debug('Community recipes is premium feature: ', isPremiumFeature); | ||
22 | communityRecipesStore.isCommunityRecipesIncludedInCurrentPlan = isPremiumFeature; | ||
23 | }, | ||
24 | { | ||
25 | fireImmediately: true, | ||
26 | }, | ||
27 | ); | ||
28 | } | ||
diff --git a/src/features/communityRecipes/store.js b/src/features/communityRecipes/store.js new file mode 100644 index 000000000..6f78999a0 --- /dev/null +++ b/src/features/communityRecipes/store.js | |||
@@ -0,0 +1,31 @@ | |||
1 | import { computed, observable } from 'mobx'; | ||
2 | import { FeatureStore } from '../utils/FeatureStore'; | ||
3 | |||
4 | const debug = require('debug')('Ferdi:feature:communityRecipes:store'); | ||
5 | |||
6 | export class CommunityRecipesStore extends FeatureStore { | ||
7 | @observable isCommunityRecipesIncludedInCurrentPlan = false; | ||
8 | |||
9 | start(stores, actions) { | ||
10 | debug('start'); | ||
11 | this.stores = stores; | ||
12 | this.actions = actions; | ||
13 | } | ||
14 | |||
15 | stop() { | ||
16 | debug('stop'); | ||
17 | super.stop(); | ||
18 | } | ||
19 | |||
20 | @computed get communityRecipes() { | ||
21 | if (!this.stores) return []; | ||
22 | |||
23 | return this.stores.recipePreviews.dev.map((r) => { | ||
24 | r.isDevRecipe = !!r.author.find(a => a.email === this.stores.user.data.email); | ||
25 | |||
26 | return r; | ||
27 | }); | ||
28 | } | ||
29 | } | ||
30 | |||
31 | export default CommunityRecipesStore; | ||
diff --git a/src/features/delayApp/Component.js b/src/features/delayApp/Component.js index ba50652e8..c61cb06c9 100644 --- a/src/features/delayApp/Component.js +++ b/src/features/delayApp/Component.js | |||
@@ -4,19 +4,28 @@ import { inject, observer } from 'mobx-react'; | |||
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | import injectSheet from 'react-jss'; | 5 | import injectSheet from 'react-jss'; |
6 | 6 | ||
7 | import Button from '../../components/ui/Button'; | 7 | import { Button } from '@meetfranz/forms'; |
8 | 8 | ||
9 | import { config } from '.'; | 9 | import { config } from '.'; |
10 | import styles from './styles'; | 10 | import styles from './styles'; |
11 | import UserStore from '../../stores/UserStore'; | ||
11 | 12 | ||
12 | const messages = defineMessages({ | 13 | const messages = defineMessages({ |
13 | headline: { | 14 | headline: { |
14 | id: 'feature.delayApp.headline', | 15 | id: 'feature.delayApp.headline', |
15 | defaultMessage: '!!!Please purchase license to skip waiting', | 16 | defaultMessage: '!!!Please purchase license to skip waiting', |
16 | }, | 17 | }, |
18 | headlineTrial: { | ||
19 | id: 'feature.delayApp.trial.headline', | ||
20 | defaultMessage: '!!!Get the free Franz Professional 14 day trial and skip the line', | ||
21 | }, | ||
17 | action: { | 22 | action: { |
18 | id: 'feature.delayApp.action', | 23 | id: 'feature.delayApp.upgrade.action', |
19 | defaultMessage: '!!!Get a Ferdi Supporter License', | 24 | defaultMessage: '!!!Get a Franz Supporter License', |
25 | }, | ||
26 | actionTrial: { | ||
27 | id: 'feature.delayApp.trial.action', | ||
28 | defaultMessage: '!!!Yes, I want the free 14 day trial of Franz Professional', | ||
20 | }, | 29 | }, |
21 | text: { | 30 | text: { |
22 | id: 'feature.delayApp.text', | 31 | id: 'feature.delayApp.text', |
@@ -24,7 +33,7 @@ const messages = defineMessages({ | |||
24 | }, | 33 | }, |
25 | }); | 34 | }); |
26 | 35 | ||
27 | export default @inject('actions') @injectSheet(styles) @observer class DelayApp extends Component { | 36 | export default @inject('stores', 'actions') @injectSheet(styles) @observer class DelayApp extends Component { |
28 | static propTypes = { | 37 | static propTypes = { |
29 | // eslint-disable-next-line | 38 | // eslint-disable-next-line |
30 | classes: PropTypes.object.isRequired, | 39 | classes: PropTypes.object.isRequired, |
@@ -60,23 +69,32 @@ export default @inject('actions') @injectSheet(styles) @observer class DelayApp | |||
60 | } | 69 | } |
61 | 70 | ||
62 | handleCTAClick() { | 71 | handleCTAClick() { |
63 | const { actions } = this.props; | 72 | const { actions, stores } = this.props; |
64 | 73 | const { hadSubscription } = stores.user.data; | |
65 | actions.ui.openSettings({ path: 'user' }); | 74 | const { defaultTrialPlan } = stores.features.features; |
75 | |||
76 | if (!hadSubscription) { | ||
77 | actions.user.activateTrial({ planId: defaultTrialPlan }); | ||
78 | } else { | ||
79 | actions.ui.openSettings({ path: 'user' }); | ||
80 | } | ||
66 | } | 81 | } |
67 | 82 | ||
68 | render() { | 83 | render() { |
69 | const { classes } = this.props; | 84 | const { classes, stores } = this.props; |
70 | const { intl } = this.context; | 85 | const { intl } = this.context; |
71 | 86 | ||
87 | const { hadSubscription } = stores.user.data; | ||
88 | |||
72 | return ( | 89 | return ( |
73 | <div className={`${classes.container}`}> | 90 | <div className={`${classes.container}`}> |
74 | <h1 className={classes.headline}>{intl.formatMessage(messages.headline)}</h1> | 91 | <h1 className={classes.headline}>{intl.formatMessage(hadSubscription ? messages.headline : messages.headlineTrial)}</h1> |
75 | <Button | 92 | <Button |
76 | label={intl.formatMessage(messages.action)} | 93 | label={intl.formatMessage(hadSubscription ? messages.action : messages.actionTrial)} |
77 | className={classes.button} | 94 | className={classes.button} |
78 | buttonType="inverted" | 95 | buttonType="inverted" |
79 | onClick={this.handleCTAClick.bind(this)} | 96 | onClick={this.handleCTAClick.bind(this)} |
97 | busy={stores.user.activateTrialRequest.isExecuting} | ||
80 | /> | 98 | /> |
81 | <p className="footnote"> | 99 | <p className="footnote"> |
82 | {intl.formatMessage(messages.text, { | 100 | {intl.formatMessage(messages.text, { |
@@ -89,6 +107,9 @@ export default @inject('actions') @injectSheet(styles) @observer class DelayApp | |||
89 | } | 107 | } |
90 | 108 | ||
91 | DelayApp.wrappedComponent.propTypes = { | 109 | DelayApp.wrappedComponent.propTypes = { |
110 | stores: PropTypes.shape({ | ||
111 | user: PropTypes.instanceOf(UserStore).isRequired, | ||
112 | }).isRequired, | ||
92 | actions: PropTypes.shape({ | 113 | actions: PropTypes.shape({ |
93 | ui: PropTypes.shape({ | 114 | ui: PropTypes.shape({ |
94 | openSettings: PropTypes.func.isRequired, | 115 | openSettings: PropTypes.func.isRequired, |
diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js index c753eeffe..a80ea4c72 100644 --- a/src/features/delayApp/index.js +++ b/src/features/delayApp/index.js | |||
@@ -4,7 +4,7 @@ import DelayAppComponent from './Component'; | |||
4 | 4 | ||
5 | import { DEFAULT_FEATURES_CONFIG } from '../../config'; | 5 | import { DEFAULT_FEATURES_CONFIG } from '../../config'; |
6 | 6 | ||
7 | const debug = require('debug')('Franz:feature:delayApp'); | 7 | const debug = require('debug')('Ferdi:feature:delayApp'); |
8 | 8 | ||
9 | export const config = { | 9 | export const config = { |
10 | delayOffset: DEFAULT_FEATURES_CONFIG.needToWaitToProceedConfig.delayOffset, | 10 | delayOffset: DEFAULT_FEATURES_CONFIG.needToWaitToProceedConfig.delayOffset, |
@@ -43,14 +43,16 @@ export default function init(stores) { | |||
43 | config.delayDuration = globalConfig.wait !== undefined ? globalConfig.wait : DEFAULT_FEATURES_CONFIG.needToWaitToProceedConfig.wait; | 43 | config.delayDuration = globalConfig.wait !== undefined ? globalConfig.wait : DEFAULT_FEATURES_CONFIG.needToWaitToProceedConfig.wait; |
44 | 44 | ||
45 | autorun(() => { | 45 | autorun(() => { |
46 | if (stores.services.all.length === 0) { | 46 | const { isAnnouncementShown } = stores.announcements; |
47 | debug('seas', stores.services.all.length); | 47 | if (stores.services.allDisplayed.length === 0 || isAnnouncementShown) { |
48 | shownAfterLaunch = true; | 48 | shownAfterLaunch = true; |
49 | setVisibility(false); | ||
49 | return; | 50 | return; |
50 | } | 51 | } |
51 | 52 | ||
52 | const diff = moment().diff(timeLastDelay); | 53 | const diff = moment().diff(timeLastDelay); |
53 | if ((stores.app.isFocused && diff >= config.delayOffset) || !shownAfterLaunch) { | 54 | const itsTimeToWait = diff >= config.delayOffset; |
55 | if (!isAnnouncementShown && ((stores.app.isFocused && itsTimeToWait) || !shownAfterLaunch)) { | ||
54 | debug(`App will be delayed for ${config.delayDuration / 1000}s`); | 56 | debug(`App will be delayed for ${config.delayDuration / 1000}s`); |
55 | 57 | ||
56 | setVisibility(true); | 58 | setVisibility(true); |
@@ -63,6 +65,8 @@ export default function init(stores) { | |||
63 | 65 | ||
64 | setVisibility(false); | 66 | setVisibility(false); |
65 | }, config.delayDuration + 1000); // timer needs to be able to hit 0 | 67 | }, config.delayDuration + 1000); // timer needs to be able to hit 0 |
68 | } else { | ||
69 | setVisibility(false); | ||
66 | } | 70 | } |
67 | }); | 71 | }); |
68 | } else { | 72 | } else { |
diff --git a/src/features/serviceLimit/components/LimitReachedInfobox.js b/src/features/serviceLimit/components/LimitReachedInfobox.js new file mode 100644 index 000000000..83aec4c40 --- /dev/null +++ b/src/features/serviceLimit/components/LimitReachedInfobox.js | |||
@@ -0,0 +1,76 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { inject, observer } from 'mobx-react'; | ||
4 | import { defineMessages, intlShape } from 'react-intl'; | ||
5 | import injectSheet from 'react-jss'; | ||
6 | import { Infobox } from '@meetfranz/ui'; | ||
7 | |||
8 | const messages = defineMessages({ | ||
9 | limitReached: { | ||
10 | id: 'feature.serviceLimit.limitReached', | ||
11 | defaultMessage: '!!!You have added {amount} of {limit} services. Please upgrade your account to add more services.', | ||
12 | }, | ||
13 | action: { | ||
14 | id: 'premiumFeature.button.upgradeAccount', | ||
15 | defaultMessage: '!!!Upgrade account', | ||
16 | }, | ||
17 | }); | ||
18 | |||
19 | const styles = theme => ({ | ||
20 | container: { | ||
21 | height: 'auto', | ||
22 | background: theme.styleTypes.warning.accent, | ||
23 | color: theme.styleTypes.warning.contrast, | ||
24 | borderRadius: 0, | ||
25 | marginBottom: 0, | ||
26 | |||
27 | '& > div': { | ||
28 | marginBottom: 0, | ||
29 | }, | ||
30 | |||
31 | '& button': { | ||
32 | color: theme.styleTypes.primary.contrast, | ||
33 | }, | ||
34 | }, | ||
35 | }); | ||
36 | |||
37 | |||
38 | @inject('stores', 'actions') @injectSheet(styles) @observer | ||
39 | class LimitReachedInfobox extends Component { | ||
40 | static propTypes = { | ||
41 | classes: PropTypes.object.isRequired, | ||
42 | stores: PropTypes.object.isRequired, | ||
43 | actions: PropTypes.object.isRequired, | ||
44 | }; | ||
45 | |||
46 | static contextTypes = { | ||
47 | intl: intlShape, | ||
48 | }; | ||
49 | |||
50 | render() { | ||
51 | const { classes, stores, actions } = this.props; | ||
52 | const { intl } = this.context; | ||
53 | |||
54 | const { | ||
55 | serviceLimit, | ||
56 | } = stores; | ||
57 | |||
58 | if (!serviceLimit.userHasReachedServiceLimit) return null; | ||
59 | |||
60 | return ( | ||
61 | <Infobox | ||
62 | icon="mdiInformation" | ||
63 | type="warning" | ||
64 | className={classes.container} | ||
65 | ctaLabel={intl.formatMessage(messages.action)} | ||
66 | ctaOnClick={() => { | ||
67 | actions.ui.openSettings({ path: 'user' }); | ||
68 | }} | ||
69 | > | ||
70 | {intl.formatMessage(messages.limitReached, { amount: serviceLimit.serviceCount, limit: serviceLimit.serviceLimit })} | ||
71 | </Infobox> | ||
72 | ); | ||
73 | } | ||
74 | } | ||
75 | |||
76 | export default LimitReachedInfobox; | ||
diff --git a/src/features/serviceLimit/index.js b/src/features/serviceLimit/index.js new file mode 100644 index 000000000..fa93bb615 --- /dev/null +++ b/src/features/serviceLimit/index.js | |||
@@ -0,0 +1,33 @@ | |||
1 | import { reaction } from 'mobx'; | ||
2 | import { ServiceLimitStore } from './store'; | ||
3 | |||
4 | const debug = require('debug')('Ferdi:feature:serviceLimit'); | ||
5 | |||
6 | export const DEFAULT_SERVICE_LIMIT = 3; | ||
7 | |||
8 | let store = null; | ||
9 | |||
10 | export const serviceLimitStore = new ServiceLimitStore(); | ||
11 | |||
12 | export default function initServiceLimit(stores, actions) { | ||
13 | const { features } = stores; | ||
14 | |||
15 | // Toggle serviceLimit feature | ||
16 | reaction( | ||
17 | () => ( | ||
18 | features.features.isServiceLimitEnabled | ||
19 | ), | ||
20 | (isEnabled) => { | ||
21 | if (isEnabled) { | ||
22 | debug('Initializing `serviceLimit` feature'); | ||
23 | store = serviceLimitStore.start(stores, actions); | ||
24 | } else if (store) { | ||
25 | debug('Disabling `serviceLimit` feature'); | ||
26 | serviceLimitStore.stop(); | ||
27 | } | ||
28 | }, | ||
29 | { | ||
30 | fireImmediately: true, | ||
31 | }, | ||
32 | ); | ||
33 | } | ||
diff --git a/src/features/serviceLimit/store.js b/src/features/serviceLimit/store.js new file mode 100644 index 000000000..6510e2872 --- /dev/null +++ b/src/features/serviceLimit/store.js | |||
@@ -0,0 +1,42 @@ | |||
1 | import { computed, observable } from 'mobx'; | ||
2 | import { FeatureStore } from '../utils/FeatureStore'; | ||
3 | import { DEFAULT_SERVICE_LIMIT } from '.'; | ||
4 | |||
5 | const debug = require('debug')('Ferdi:feature:serviceLimit:store'); | ||
6 | |||
7 | export class ServiceLimitStore extends FeatureStore { | ||
8 | @observable isServiceLimitEnabled = false; | ||
9 | |||
10 | start(stores, actions) { | ||
11 | debug('start'); | ||
12 | this.stores = stores; | ||
13 | this.actions = actions; | ||
14 | |||
15 | this.isServiceLimitEnabled = false; | ||
16 | } | ||
17 | |||
18 | stop() { | ||
19 | super.stop(); | ||
20 | |||
21 | this.isServiceLimitEnabled = false; | ||
22 | } | ||
23 | |||
24 | @computed get userHasReachedServiceLimit() { | ||
25 | return false; | ||
26 | // if (!this.isServiceLimitEnabled) return false; | ||
27 | |||
28 | // return this.serviceLimit !== 0 && this.serviceCount >= this.serviceLimit; | ||
29 | } | ||
30 | |||
31 | @computed get serviceLimit() { | ||
32 | if (!this.isServiceLimitEnabled || this.stores.features.features.serviceLimitCount === 0) return 0; | ||
33 | |||
34 | return this.stores.features.features.serviceLimitCount || DEFAULT_SERVICE_LIMIT; | ||
35 | } | ||
36 | |||
37 | @computed get serviceCount() { | ||
38 | return this.stores.services.all.length; | ||
39 | } | ||
40 | } | ||
41 | |||
42 | export default ServiceLimitStore; | ||
diff --git a/src/features/serviceProxy/index.js b/src/features/serviceProxy/index.js index 4bea327ad..e9a01b156 100644 --- a/src/features/serviceProxy/index.js +++ b/src/features/serviceProxy/index.js | |||
@@ -1,25 +1,25 @@ | |||
1 | import { autorun, observable } from 'mobx'; | 1 | import { autorun, observable } from 'mobx'; |
2 | import { remote } from 'electron'; | 2 | import { remote } from 'electron'; |
3 | 3 | ||
4 | import { DEFAULT_FEATURES_CONFIG } from '../../config'; | 4 | // import { DEFAULT_FEATURES_CONFIG } from '../../config'; |
5 | 5 | ||
6 | const { session } = remote; | 6 | const { session } = remote; |
7 | 7 | ||
8 | const debug = require('debug')('Franz:feature:serviceProxy'); | 8 | const debug = require('debug')('Ferdi:feature:serviceProxy'); |
9 | 9 | ||
10 | export const config = observable({ | 10 | export const config = observable({ |
11 | isEnabled: DEFAULT_FEATURES_CONFIG.isServiceProxyEnabled, | 11 | isEnabled: true, |
12 | isPremium: DEFAULT_FEATURES_CONFIG.isServiceProxyPremiumFeature, | 12 | isPremium: true, |
13 | }); | 13 | }); |
14 | 14 | ||
15 | export default function init(stores) { | 15 | export default function init(stores) { |
16 | debug('Initializing `serviceProxy` feature'); | 16 | debug('Initializing `serviceProxy` feature'); |
17 | 17 | ||
18 | autorun(() => { | 18 | autorun(() => { |
19 | const { isServiceProxyEnabled, isServiceProxyPremiumFeature } = stores.features.features; | 19 | // const { isServiceProxyEnabled, isServiceProxyIncludedInCurrentPlan } = stores.features.features; |
20 | 20 | ||
21 | config.isEnabled = isServiceProxyEnabled !== undefined ? isServiceProxyEnabled : DEFAULT_FEATURES_CONFIG.isServiceProxyEnabled; | 21 | config.isEnabled = true; |
22 | config.isPremium = isServiceProxyPremiumFeature !== undefined ? isServiceProxyPremiumFeature : DEFAULT_FEATURES_CONFIG.isServiceProxyPremiumFeature; | 22 | config.isIncludedInCurrentPlan = true; |
23 | 23 | ||
24 | const services = stores.services.enabled; | 24 | const services = stores.services.enabled; |
25 | const isPremiumUser = stores.user.data.isPremium; | 25 | const isPremiumUser = stores.user.data.isPremium; |
@@ -30,7 +30,7 @@ export default function init(stores) { | |||
30 | services.forEach((service) => { | 30 | services.forEach((service) => { |
31 | const s = session.fromPartition(`persist:service-${service.id}`); | 31 | const s = session.fromPartition(`persist:service-${service.id}`); |
32 | 32 | ||
33 | if (config.isEnabled && (isPremiumUser || !config.isPremium)) { | 33 | if (config.isEnabled && (isPremiumUser || !config.isIncludedInCurrentPlan)) { |
34 | const serviceProxyConfig = proxySettings[service.id]; | 34 | const serviceProxyConfig = proxySettings[service.id]; |
35 | 35 | ||
36 | if (serviceProxyConfig && serviceProxyConfig.isEnabled && serviceProxyConfig.host) { | 36 | if (serviceProxyConfig && serviceProxyConfig.isEnabled && serviceProxyConfig.host) { |
diff --git a/src/features/settingsWS/index.js b/src/features/settingsWS/index.js index 2064d2973..6711296da 100755 --- a/src/features/settingsWS/index.js +++ b/src/features/settingsWS/index.js | |||
@@ -1,7 +1,7 @@ | |||
1 | import { reaction } from 'mobx'; | 1 | import { reaction } from 'mobx'; |
2 | import { SettingsWSStore } from './store'; | 2 | import { SettingsWSStore } from './store'; |
3 | 3 | ||
4 | const debug = require('debug')('Franz:feature:settingsWS'); | 4 | const debug = require('debug')('Ferdi:feature:settingsWS'); |
5 | 5 | ||
6 | export const settingsStore = new SettingsWSStore(); | 6 | export const settingsStore = new SettingsWSStore(); |
7 | 7 | ||
diff --git a/src/features/settingsWS/store.js b/src/features/settingsWS/store.js index 167a70d10..9100f33d1 100755 --- a/src/features/settingsWS/store.js +++ b/src/features/settingsWS/store.js | |||
@@ -6,7 +6,7 @@ import { FeatureStore } from '../utils/FeatureStore'; | |||
6 | import { createReactions } from '../../stores/lib/Reaction'; | 6 | import { createReactions } from '../../stores/lib/Reaction'; |
7 | import { WS_API } from '../../environment'; | 7 | import { WS_API } from '../../environment'; |
8 | 8 | ||
9 | const debug = require('debug')('Franz:feature:settingsWS:store'); | 9 | const debug = require('debug')('Ferdi:feature:settingsWS:store'); |
10 | 10 | ||
11 | export class SettingsWSStore extends FeatureStore { | 11 | export class SettingsWSStore extends FeatureStore { |
12 | stores = null; | 12 | stores = null; |
diff --git a/src/features/shareFranz/Component.js b/src/features/shareFranz/Component.js index 2e66acaf3..405fb0ab5 100644 --- a/src/features/shareFranz/Component.js +++ b/src/features/shareFranz/Component.js | |||
@@ -6,6 +6,9 @@ import { defineMessages, intlShape } from 'react-intl'; | |||
6 | import { Button } from '@meetfranz/forms'; | 6 | import { Button } from '@meetfranz/forms'; |
7 | import { H1, Icon } from '@meetfranz/ui'; | 7 | import { H1, Icon } from '@meetfranz/ui'; |
8 | 8 | ||
9 | import { | ||
10 | mdiHeart, mdiEmail, mdiFacebookBox, mdiTwitter, | ||
11 | } from '@mdi/js'; | ||
9 | import Modal from '../../components/ui/Modal'; | 12 | import Modal from '../../components/ui/Modal'; |
10 | import { state } from '.'; | 13 | import { state } from '.'; |
11 | import ServicesStore from '../../stores/ServicesStore'; | 14 | import ServicesStore from '../../stores/ServicesStore'; |
@@ -74,7 +77,7 @@ const styles = theme => ({ | |||
74 | }, | 77 | }, |
75 | cta: { | 78 | cta: { |
76 | background: theme.styleTypes.primary.contrast, | 79 | background: theme.styleTypes.primary.contrast, |
77 | color: theme.styleTypes.primary.accent, | 80 | color: `${theme.styleTypes.primary.accent} !important`, |
78 | 81 | ||
79 | '& svg': { | 82 | '& svg': { |
80 | fill: theme.styleTypes.primary.accent, | 83 | fill: theme.styleTypes.primary.accent, |
@@ -115,7 +118,7 @@ export default @injectSheet(styles) @inject('stores') @observer class ShareFranz | |||
115 | close={this.close.bind(this)} | 118 | close={this.close.bind(this)} |
116 | > | 119 | > |
117 | <div className={classes.heartContainer}> | 120 | <div className={classes.heartContainer}> |
118 | <Icon icon="mdiHeart" className={classes.heart} size={4} /> | 121 | <Icon icon={mdiHeart} className={classes.heart} size={4} /> |
119 | </div> | 122 | </div> |
120 | <H1 className={classes.headline}> | 123 | <H1 className={classes.headline}> |
121 | {intl.formatMessage(messages.headline)} | 124 | {intl.formatMessage(messages.headline)} |
@@ -125,21 +128,21 @@ export default @injectSheet(styles) @inject('stores') @observer class ShareFranz | |||
125 | <Button | 128 | <Button |
126 | label={intl.formatMessage(messages.actionsEmail)} | 129 | label={intl.formatMessage(messages.actionsEmail)} |
127 | className={classes.cta} | 130 | className={classes.cta} |
128 | icon="mdiEmail" | 131 | icon={mdiEmail} |
129 | href={`mailto:?subject=Meet the cool app Franz&body=${intl.formatMessage(messages.shareTextEmail, { count: serviceCount })}}`} | 132 | href={`mailto:?subject=Meet the cool app Franz&body=${intl.formatMessage(messages.shareTextEmail, { count: serviceCount })}}`} |
130 | target="_blank" | 133 | target="_blank" |
131 | /> | 134 | /> |
132 | <Button | 135 | <Button |
133 | label={intl.formatMessage(messages.actionsFacebook)} | 136 | label={intl.formatMessage(messages.actionsFacebook)} |
134 | className={classes.cta} | 137 | className={classes.cta} |
135 | icon="mdiFacebookBox" | 138 | icon={mdiFacebookBox} |
136 | href="https://www.facebook.com/sharer/sharer.php?u=https://www.meetfranz.com?utm_source=facebook&utm_medium=referral&utm_campaign=share-button" | 139 | href="https://www.facebook.com/sharer/sharer.php?u=https://www.meetfranz.com?utm_source=facebook&utm_medium=referral&utm_campaign=share-button" |
137 | target="_blank" | 140 | target="_blank" |
138 | /> | 141 | /> |
139 | <Button | 142 | <Button |
140 | label={intl.formatMessage(messages.actionsTwitter)} | 143 | label={intl.formatMessage(messages.actionsTwitter)} |
141 | className={classes.cta} | 144 | className={classes.cta} |
142 | icon="mdiTwitter" | 145 | icon={mdiTwitter} |
143 | href={`http://twitter.com/intent/tweet?status=${intl.formatMessage(messages.shareTextTwitter, { count: serviceCount })}`} | 146 | href={`http://twitter.com/intent/tweet?status=${intl.formatMessage(messages.shareTextTwitter, { count: serviceCount })}`} |
144 | target="_blank" | 147 | target="_blank" |
145 | /> | 148 | /> |
diff --git a/src/features/shareFranz/index.js b/src/features/shareFranz/index.js index d611a7e1d..217e926f9 100644 --- a/src/features/shareFranz/index.js +++ b/src/features/shareFranz/index.js | |||
@@ -5,7 +5,7 @@ import { state as delayAppState } from '../delayApp'; | |||
5 | 5 | ||
6 | export { default as Component } from './Component'; | 6 | export { default as Component } from './Component'; |
7 | 7 | ||
8 | const debug = require('debug')('Franz:feature:shareFranz'); | 8 | const debug = require('debug')('Ferdi:feature:shareFranz'); |
9 | 9 | ||
10 | const defaultState = { | 10 | const defaultState = { |
11 | isModalVisible: false, | 11 | isModalVisible: false, |
diff --git a/src/features/spellchecker/index.js b/src/features/spellchecker/index.js index 79a2172b4..6a393e250 100644 --- a/src/features/spellchecker/index.js +++ b/src/features/spellchecker/index.js | |||
@@ -2,26 +2,26 @@ import { autorun, observable } from 'mobx'; | |||
2 | 2 | ||
3 | import { DEFAULT_FEATURES_CONFIG } from '../../config'; | 3 | import { DEFAULT_FEATURES_CONFIG } from '../../config'; |
4 | 4 | ||
5 | const debug = require('debug')('Franz:feature:spellchecker'); | 5 | const debug = require('debug')('Ferdi:feature:spellchecker'); |
6 | 6 | ||
7 | export const config = observable({ | 7 | export const config = observable({ |
8 | isPremium: DEFAULT_FEATURES_CONFIG.isSpellcheckerPremiumFeature, | 8 | isIncludedInCurrentPlan: DEFAULT_FEATURES_CONFIG.isSpellcheckerIncludedInCurrentPlan, |
9 | }); | 9 | }); |
10 | 10 | ||
11 | export default function init(stores) { | 11 | export default function init() { |
12 | debug('Initializing `spellchecker` feature'); | 12 | debug('Initializing `spellchecker` feature'); |
13 | 13 | ||
14 | autorun(() => { | 14 | autorun(() => { |
15 | const { isSpellcheckerPremiumFeature } = stores.features.features; | 15 | // const { isSpellcheckerIncludedInCurrentPlan } = stores.features.features; |
16 | 16 | ||
17 | config.isPremium = isSpellcheckerPremiumFeature !== undefined ? isSpellcheckerPremiumFeature : DEFAULT_FEATURES_CONFIG.isSpellcheckerPremiumFeature; | 17 | // config.isIncludedInCurrentPlan = isSpellcheckerIncludedInCurrentPlan !== undefined ? isSpellcheckerIncludedInCurrentPlan : DEFAULT_FEATURES_CONFIG.isSpellcheckerIncludedInCurrentPlan; |
18 | 18 | ||
19 | if (!stores.user.data.isPremium && config.isPremium && stores.settings.app.enableSpellchecking) { | 19 | // if (!stores.user.data.isPremium && config.isIncludedInCurrentPlan && stores.settings.app.enableSpellchecking) { |
20 | debug('Override settings.spellcheckerEnabled flag to false'); | 20 | // debug('Override settings.spellcheckerEnabled flag to false'); |
21 | 21 | ||
22 | Object.assign(stores.settings.app, { | 22 | // Object.assign(stores.settings.app, { |
23 | enableSpellchecking: false, | 23 | // enableSpellchecking: false, |
24 | }); | 24 | // }); |
25 | } | 25 | // } |
26 | }); | 26 | }); |
27 | } | 27 | } |
diff --git a/src/features/todos/actions.js b/src/features/todos/actions.js new file mode 100644 index 000000000..1ccc9a592 --- /dev/null +++ b/src/features/todos/actions.js | |||
@@ -0,0 +1,23 @@ | |||
1 | import PropTypes from 'prop-types'; | ||
2 | import { createActionsFromDefinitions } from '../../actions/lib/actions'; | ||
3 | |||
4 | export const todoActions = createActionsFromDefinitions({ | ||
5 | resize: { | ||
6 | width: PropTypes.number.isRequired, | ||
7 | }, | ||
8 | toggleTodosPanel: {}, | ||
9 | toggleTodosFeatureVisibility: {}, | ||
10 | setTodosWebview: { | ||
11 | webview: PropTypes.instanceOf(Element).isRequired, | ||
12 | }, | ||
13 | handleHostMessage: { | ||
14 | action: PropTypes.string.isRequired, | ||
15 | data: PropTypes.object, | ||
16 | }, | ||
17 | handleClientMessage: { | ||
18 | action: PropTypes.string.isRequired, | ||
19 | data: PropTypes.object, | ||
20 | }, | ||
21 | }, PropTypes.checkPropTypes); | ||
22 | |||
23 | export default todoActions; | ||
diff --git a/src/features/todos/components/TodosWebview.js b/src/features/todos/components/TodosWebview.js new file mode 100644 index 000000000..c252aff90 --- /dev/null +++ b/src/features/todos/components/TodosWebview.js | |||
@@ -0,0 +1,250 @@ | |||
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 Webview from 'react-electron-web-view'; | ||
6 | import { Icon } from '@meetfranz/ui'; | ||
7 | import { defineMessages, intlShape } from 'react-intl'; | ||
8 | |||
9 | import { mdiCheckAll } from '@mdi/js'; | ||
10 | import SettingsStore from '../../../stores/SettingsStore'; | ||
11 | |||
12 | import * as environment from '../../../environment'; | ||
13 | import Appear from '../../../components/ui/effects/Appear'; | ||
14 | import UpgradeButton from '../../../components/ui/UpgradeButton'; | ||
15 | |||
16 | const messages = defineMessages({ | ||
17 | premiumInfo: { | ||
18 | id: 'feature.todos.premium.info', | ||
19 | defaultMessage: '!!!Franz Todos are available to premium users now!', | ||
20 | }, | ||
21 | upgradeCTA: { | ||
22 | id: 'feature.todos.premium.upgrade', | ||
23 | defaultMessage: '!!!Upgrade Account', | ||
24 | }, | ||
25 | rolloutInfo: { | ||
26 | id: 'feature.todos.premium.rollout', | ||
27 | defaultMessage: '!!!Everyone else will have to wait a little longer.', | ||
28 | }, | ||
29 | }); | ||
30 | |||
31 | const styles = theme => ({ | ||
32 | root: { | ||
33 | background: theme.colorBackground, | ||
34 | position: 'relative', | ||
35 | borderLeft: [1, 'solid', theme.todos.todosLayer.borderLeftColor], | ||
36 | zIndex: 300, | ||
37 | |||
38 | transform: ({ isVisible, width }) => `translateX(${isVisible ? 0 : width}px)`, | ||
39 | |||
40 | '&:hover $closeTodosButton': { | ||
41 | opacity: 1, | ||
42 | }, | ||
43 | '& webview': { | ||
44 | height: '100%', | ||
45 | }, | ||
46 | }, | ||
47 | resizeHandler: { | ||
48 | position: 'absolute', | ||
49 | left: 0, | ||
50 | marginLeft: -5, | ||
51 | width: 10, | ||
52 | zIndex: 400, | ||
53 | cursor: 'col-resize', | ||
54 | }, | ||
55 | dragIndicator: { | ||
56 | position: 'absolute', | ||
57 | left: 0, | ||
58 | width: 5, | ||
59 | zIndex: 400, | ||
60 | background: theme.todos.dragIndicator.background, | ||
61 | |||
62 | }, | ||
63 | premiumContainer: { | ||
64 | display: 'flex', | ||
65 | flexDirection: 'column', | ||
66 | justifyContent: 'center', | ||
67 | alignItems: 'center', | ||
68 | width: '80%', | ||
69 | maxWidth: 300, | ||
70 | margin: [0, 'auto'], | ||
71 | textAlign: 'center', | ||
72 | }, | ||
73 | premiumIcon: { | ||
74 | marginBottom: 40, | ||
75 | background: theme.styleTypes.primary.accent, | ||
76 | fill: theme.styleTypes.primary.contrast, | ||
77 | padding: 10, | ||
78 | borderRadius: 10, | ||
79 | }, | ||
80 | premiumCTA: { | ||
81 | marginTop: 40, | ||
82 | }, | ||
83 | }); | ||
84 | |||
85 | @injectSheet(styles) @observer @inject('stores') | ||
86 | class TodosWebview extends Component { | ||
87 | static propTypes = { | ||
88 | classes: PropTypes.object.isRequired, | ||
89 | isVisible: PropTypes.bool.isRequired, | ||
90 | handleClientMessage: PropTypes.func.isRequired, | ||
91 | setTodosWebview: PropTypes.func.isRequired, | ||
92 | resize: PropTypes.func.isRequired, | ||
93 | width: PropTypes.number.isRequired, | ||
94 | minWidth: PropTypes.number.isRequired, | ||
95 | isTodosIncludedInCurrentPlan: PropTypes.bool.isRequired, | ||
96 | stores: PropTypes.shape({ | ||
97 | settings: PropTypes.instanceOf(SettingsStore).isRequired, | ||
98 | }).isRequired, | ||
99 | }; | ||
100 | |||
101 | state = { | ||
102 | isDragging: false, | ||
103 | width: 300, | ||
104 | }; | ||
105 | |||
106 | static contextTypes = { | ||
107 | intl: intlShape, | ||
108 | }; | ||
109 | |||
110 | componentWillMount() { | ||
111 | const { width } = this.props; | ||
112 | |||
113 | this.setState({ | ||
114 | width, | ||
115 | }); | ||
116 | } | ||
117 | |||
118 | componentDidMount() { | ||
119 | this.node.addEventListener('mousemove', this.resizePanel.bind(this)); | ||
120 | this.node.addEventListener('mouseup', this.stopResize.bind(this)); | ||
121 | this.node.addEventListener('mouseleave', this.stopResize.bind(this)); | ||
122 | } | ||
123 | |||
124 | startResize = (event) => { | ||
125 | this.setState({ | ||
126 | isDragging: true, | ||
127 | initialPos: event.clientX, | ||
128 | delta: 0, | ||
129 | }); | ||
130 | }; | ||
131 | |||
132 | resizePanel(e) { | ||
133 | const { minWidth } = this.props; | ||
134 | |||
135 | const { | ||
136 | isDragging, | ||
137 | initialPos, | ||
138 | } = this.state; | ||
139 | |||
140 | if (isDragging && Math.abs(e.clientX - window.innerWidth) > minWidth) { | ||
141 | const delta = e.clientX - initialPos; | ||
142 | |||
143 | this.setState({ | ||
144 | delta, | ||
145 | }); | ||
146 | } | ||
147 | } | ||
148 | |||
149 | stopResize() { | ||
150 | const { | ||
151 | resize, | ||
152 | minWidth, | ||
153 | } = this.props; | ||
154 | |||
155 | const { | ||
156 | isDragging, | ||
157 | delta, | ||
158 | width, | ||
159 | } = this.state; | ||
160 | |||
161 | if (isDragging) { | ||
162 | let newWidth = width + (delta < 0 ? Math.abs(delta) : -Math.abs(delta)); | ||
163 | |||
164 | if (newWidth < minWidth) { | ||
165 | newWidth = minWidth; | ||
166 | } | ||
167 | |||
168 | this.setState({ | ||
169 | isDragging: false, | ||
170 | delta: 0, | ||
171 | width: newWidth, | ||
172 | }); | ||
173 | |||
174 | resize(newWidth); | ||
175 | } | ||
176 | } | ||
177 | |||
178 | startListeningToIpcMessages() { | ||
179 | const { handleClientMessage } = this.props; | ||
180 | if (!this.webview) return; | ||
181 | this.webview.addEventListener('ipc-message', e => handleClientMessage(e.args[0])); | ||
182 | } | ||
183 | |||
184 | render() { | ||
185 | const { | ||
186 | classes, | ||
187 | isVisible, | ||
188 | isTodosIncludedInCurrentPlan, | ||
189 | stores, | ||
190 | } = this.props; | ||
191 | |||
192 | const { | ||
193 | width, | ||
194 | delta, | ||
195 | isDragging, | ||
196 | } = this.state; | ||
197 | |||
198 | const { intl } = this.context; | ||
199 | |||
200 | return ( | ||
201 | <div | ||
202 | className={classes.root} | ||
203 | style={{ width: isVisible ? width : 0 }} | ||
204 | onMouseUp={() => this.stopResize()} | ||
205 | ref={(node) => { this.node = node; }} | ||
206 | > | ||
207 | <div | ||
208 | className={classes.resizeHandler} | ||
209 | style={Object.assign({ left: delta }, isDragging ? { width: 600, marginLeft: -200 } : {})} // This hack is required as resizing with webviews beneath behaves quite bad | ||
210 | onMouseDown={e => this.startResize(e)} | ||
211 | /> | ||
212 | {isDragging && ( | ||
213 | <div | ||
214 | className={classes.dragIndicator} | ||
215 | style={{ left: delta }} // This hack is required as resizing with webviews beneath behaves quite bad | ||
216 | /> | ||
217 | )} | ||
218 | {isTodosIncludedInCurrentPlan ? ( | ||
219 | <Webview | ||
220 | className={classes.webview} | ||
221 | onDidAttach={() => { | ||
222 | const { setTodosWebview } = this.props; | ||
223 | setTodosWebview(this.webview); | ||
224 | this.startListeningToIpcMessages(); | ||
225 | }} | ||
226 | partition="persist:todos" | ||
227 | preload="./features/todos/preload.js" | ||
228 | ref={(webview) => { this.webview = webview ? webview.view : null; }} | ||
229 | src={stores.settings.all.app.todoServer || environment.TODOS_FRONTEND} | ||
230 | /> | ||
231 | ) : ( | ||
232 | <Appear> | ||
233 | <div className={classes.premiumContainer}> | ||
234 | <Icon icon={mdiCheckAll} className={classes.premiumIcon} size={4} /> | ||
235 | <p>{intl.formatMessage(messages.premiumInfo)}</p> | ||
236 | <p>{intl.formatMessage(messages.rolloutInfo)}</p> | ||
237 | <UpgradeButton | ||
238 | className={classes.premiumCTA} | ||
239 | gaEventInfo={{ category: 'Todos', event: 'upgrade' }} | ||
240 | short | ||
241 | /> | ||
242 | </div> | ||
243 | </Appear> | ||
244 | )} | ||
245 | </div> | ||
246 | ); | ||
247 | } | ||
248 | } | ||
249 | |||
250 | export default TodosWebview; | ||
diff --git a/src/features/todos/constants.js b/src/features/todos/constants.js new file mode 100644 index 000000000..2e8a431cc --- /dev/null +++ b/src/features/todos/constants.js | |||
@@ -0,0 +1,4 @@ | |||
1 | export const IPC = { | ||
2 | TODOS_HOST_CHANNEL: 'TODOS_HOST_CHANNEL', | ||
3 | TODOS_CLIENT_CHANNEL: 'TODOS_CLIENT_CHANNEL', | ||
4 | }; | ||
diff --git a/src/features/todos/containers/TodosScreen.js b/src/features/todos/containers/TodosScreen.js new file mode 100644 index 000000000..bc05a587d --- /dev/null +++ b/src/features/todos/containers/TodosScreen.js | |||
@@ -0,0 +1,41 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import { observer, inject } from 'mobx-react'; | ||
3 | import PropTypes from 'prop-types'; | ||
4 | |||
5 | import FeaturesStore from '../../../stores/FeaturesStore'; | ||
6 | import TodosWebview from '../components/TodosWebview'; | ||
7 | import ErrorBoundary from '../../../components/util/ErrorBoundary'; | ||
8 | import { TODOS_MIN_WIDTH, todosStore } from '..'; | ||
9 | import { todoActions } from '../actions'; | ||
10 | |||
11 | @inject('stores', 'actions') @observer | ||
12 | class TodosScreen extends Component { | ||
13 | render() { | ||
14 | if (!todosStore || !todosStore.isFeatureActive || todosStore.isTodosPanelForceHidden) { | ||
15 | return null; | ||
16 | } | ||
17 | |||
18 | return ( | ||
19 | <ErrorBoundary> | ||
20 | <TodosWebview | ||
21 | isVisible={todosStore.isTodosPanelVisible} | ||
22 | togglePanel={todoActions.toggleTodosPanel} | ||
23 | handleClientMessage={todoActions.handleClientMessage} | ||
24 | setTodosWebview={webview => todoActions.setTodosWebview({ webview })} | ||
25 | width={todosStore.width} | ||
26 | minWidth={TODOS_MIN_WIDTH} | ||
27 | resize={width => todoActions.resize({ width })} | ||
28 | isTodosIncludedInCurrentPlan | ||
29 | /> | ||
30 | </ErrorBoundary> | ||
31 | ); | ||
32 | } | ||
33 | } | ||
34 | |||
35 | export default TodosScreen; | ||
36 | |||
37 | TodosScreen.wrappedComponent.propTypes = { | ||
38 | stores: PropTypes.shape({ | ||
39 | features: PropTypes.instanceOf(FeaturesStore).isRequired, | ||
40 | }).isRequired, | ||
41 | }; | ||
diff --git a/src/features/todos/index.js b/src/features/todos/index.js new file mode 100644 index 000000000..9f355e9ba --- /dev/null +++ b/src/features/todos/index.js | |||
@@ -0,0 +1,39 @@ | |||
1 | import { reaction } from 'mobx'; | ||
2 | import TodoStore from './store'; | ||
3 | |||
4 | const debug = require('debug')('Ferdi:feature:todos'); | ||
5 | |||
6 | export const GA_CATEGORY_TODOS = 'Todos'; | ||
7 | |||
8 | export const DEFAULT_TODOS_WIDTH = 300; | ||
9 | export const TODOS_MIN_WIDTH = 200; | ||
10 | export const DEFAULT_TODOS_VISIBLE = true; | ||
11 | export const DEFAULT_IS_FEATURE_ENABLED_BY_USER = true; | ||
12 | |||
13 | export const TODOS_ROUTES = { | ||
14 | TARGET: '/todos', | ||
15 | }; | ||
16 | |||
17 | export const todosStore = new TodoStore(); | ||
18 | |||
19 | export default function initTodos(stores, actions) { | ||
20 | stores.todos = todosStore; | ||
21 | const { features } = stores; | ||
22 | |||
23 | // Toggle todos feature | ||
24 | reaction( | ||
25 | () => features.features.isTodosEnabled, | ||
26 | (isEnabled) => { | ||
27 | if (isEnabled) { | ||
28 | debug('Initializing `todos` feature'); | ||
29 | todosStore.start(stores, actions); | ||
30 | } else if (todosStore.isFeatureActive) { | ||
31 | debug('Disabling `todos` feature'); | ||
32 | todosStore.stop(); | ||
33 | } | ||
34 | }, | ||
35 | { | ||
36 | fireImmediately: true, | ||
37 | }, | ||
38 | ); | ||
39 | } | ||
diff --git a/src/features/todos/preload.js b/src/features/todos/preload.js new file mode 100644 index 000000000..412b775af --- /dev/null +++ b/src/features/todos/preload.js | |||
@@ -0,0 +1,23 @@ | |||
1 | import { ipcRenderer } from 'electron'; | ||
2 | import { IPC } from './constants'; | ||
3 | |||
4 | const debug = require('debug')('Ferdi:feature:todos:preload'); | ||
5 | |||
6 | debug('Preloading Todos Webview'); | ||
7 | |||
8 | let hostMessageListener = () => {}; | ||
9 | |||
10 | window.franz = { | ||
11 | onInitialize(ipcHostMessageListener) { | ||
12 | hostMessageListener = ipcHostMessageListener; | ||
13 | ipcRenderer.sendToHost(IPC.TODOS_CLIENT_CHANNEL, { action: 'todos:initialized' }); | ||
14 | }, | ||
15 | sendToHost(message) { | ||
16 | ipcRenderer.sendToHost(IPC.TODOS_CLIENT_CHANNEL, message); | ||
17 | }, | ||
18 | }; | ||
19 | |||
20 | ipcRenderer.on(IPC.TODOS_HOST_CHANNEL, (event, message) => { | ||
21 | debug('Received host message', event, message); | ||
22 | hostMessageListener(message); | ||
23 | }); | ||
diff --git a/src/features/todos/store.js b/src/features/todos/store.js new file mode 100644 index 000000000..d507237d1 --- /dev/null +++ b/src/features/todos/store.js | |||
@@ -0,0 +1,217 @@ | |||
1 | import { ThemeType } from '@meetfranz/theme'; | ||
2 | import { | ||
3 | computed, | ||
4 | action, | ||
5 | observable, | ||
6 | } from 'mobx'; | ||
7 | import localStorage from 'mobx-localstorage'; | ||
8 | |||
9 | import { todoActions } from './actions'; | ||
10 | import { FeatureStore } from '../utils/FeatureStore'; | ||
11 | import { createReactions } from '../../stores/lib/Reaction'; | ||
12 | import { createActionBindings } from '../utils/ActionBinding'; | ||
13 | import { | ||
14 | DEFAULT_TODOS_WIDTH, TODOS_MIN_WIDTH, DEFAULT_TODOS_VISIBLE, TODOS_ROUTES, DEFAULT_IS_FEATURE_ENABLED_BY_USER, | ||
15 | } from '.'; | ||
16 | import { IPC } from './constants'; | ||
17 | import { state as delayAppState } from '../delayApp'; | ||
18 | |||
19 | const debug = require('debug')('Ferdi:feature:todos:store'); | ||
20 | |||
21 | export default class TodoStore extends FeatureStore { | ||
22 | @observable isFeatureEnabled = false; | ||
23 | |||
24 | @observable isFeatureActive = false; | ||
25 | |||
26 | webview = null; | ||
27 | |||
28 | @computed get width() { | ||
29 | const width = this.settings.width || DEFAULT_TODOS_WIDTH; | ||
30 | |||
31 | return width < TODOS_MIN_WIDTH ? TODOS_MIN_WIDTH : width; | ||
32 | } | ||
33 | |||
34 | @computed get isTodosPanelForceHidden() { | ||
35 | const { isAnnouncementShown } = this.stores.announcements; | ||
36 | return delayAppState.isDelayAppScreenVisible || !this.isFeatureEnabledByUser || isAnnouncementShown; | ||
37 | } | ||
38 | |||
39 | @computed get isTodosPanelVisible() { | ||
40 | if (this.settings.isTodosPanelVisible === undefined) return DEFAULT_TODOS_VISIBLE; | ||
41 | return this.settings.isTodosPanelVisible; | ||
42 | } | ||
43 | |||
44 | @computed get isFeatureEnabledByUser() { | ||
45 | return this.settings.isFeatureEnabledByUser; | ||
46 | } | ||
47 | |||
48 | @computed get settings() { | ||
49 | return localStorage.getItem('todos') || {}; | ||
50 | } | ||
51 | |||
52 | // ========== PUBLIC API ========= // | ||
53 | |||
54 | @action start(stores, actions) { | ||
55 | debug('TodoStore::start'); | ||
56 | this.stores = stores; | ||
57 | this.actions = actions; | ||
58 | |||
59 | // ACTIONS | ||
60 | |||
61 | this._registerActions(createActionBindings([ | ||
62 | [todoActions.resize, this._resize], | ||
63 | [todoActions.toggleTodosPanel, this._toggleTodosPanel], | ||
64 | [todoActions.setTodosWebview, this._setTodosWebview], | ||
65 | [todoActions.handleHostMessage, this._handleHostMessage], | ||
66 | [todoActions.handleClientMessage, this._handleClientMessage], | ||
67 | [todoActions.toggleTodosFeatureVisibility, this._toggleTodosFeatureVisibility], | ||
68 | ])); | ||
69 | |||
70 | // REACTIONS | ||
71 | |||
72 | this._allReactions = createReactions([ | ||
73 | this._setFeatureEnabledReaction, | ||
74 | this._updateTodosConfig, | ||
75 | this._firstLaunchReaction, | ||
76 | this._routeCheckReaction, | ||
77 | ]); | ||
78 | |||
79 | this._registerReactions(this._allReactions); | ||
80 | |||
81 | this.isFeatureActive = true; | ||
82 | |||
83 | if (this.settings.isFeatureEnabledByUser === undefined) { | ||
84 | this._updateSettings({ | ||
85 | isFeatureEnabledByUser: DEFAULT_IS_FEATURE_ENABLED_BY_USER, | ||
86 | }); | ||
87 | } | ||
88 | } | ||
89 | |||
90 | @action stop() { | ||
91 | super.stop(); | ||
92 | debug('TodoStore::stop'); | ||
93 | this.reset(); | ||
94 | this.isFeatureActive = false; | ||
95 | } | ||
96 | |||
97 | // ========== PRIVATE METHODS ========= // | ||
98 | |||
99 | _updateSettings = (changes) => { | ||
100 | localStorage.setItem('todos', { | ||
101 | ...this.settings, | ||
102 | ...changes, | ||
103 | }); | ||
104 | }; | ||
105 | |||
106 | // Actions | ||
107 | |||
108 | @action _resize = ({ width }) => { | ||
109 | this._updateSettings({ | ||
110 | width, | ||
111 | }); | ||
112 | }; | ||
113 | |||
114 | @action _toggleTodosPanel = () => { | ||
115 | this._updateSettings({ | ||
116 | isTodosPanelVisible: !this.isTodosPanelVisible, | ||
117 | }); | ||
118 | }; | ||
119 | |||
120 | @action _setTodosWebview = ({ webview }) => { | ||
121 | debug('_setTodosWebview', webview); | ||
122 | this.webview = webview; | ||
123 | }; | ||
124 | |||
125 | @action _handleHostMessage = (message) => { | ||
126 | debug('_handleHostMessage', message); | ||
127 | if (message.action === 'todos:create') { | ||
128 | this.webview.send(IPC.TODOS_HOST_CHANNEL, message); | ||
129 | } | ||
130 | }; | ||
131 | |||
132 | @action _handleClientMessage = (message) => { | ||
133 | debug('_handleClientMessage', message); | ||
134 | switch (message.action) { | ||
135 | case 'todos:initialized': this._onTodosClientInitialized(); break; | ||
136 | case 'todos:goToService': this._goToService(message.data); break; | ||
137 | default: | ||
138 | debug('Unknown client message reiceived', message); | ||
139 | } | ||
140 | }; | ||
141 | |||
142 | @action _toggleTodosFeatureVisibility = () => { | ||
143 | debug('_toggleTodosFeatureVisibility'); | ||
144 | |||
145 | this._updateSettings({ | ||
146 | isFeatureEnabledByUser: !this.settings.isFeatureEnabledByUser, | ||
147 | }); | ||
148 | }; | ||
149 | |||
150 | // Todos client message handlers | ||
151 | |||
152 | _onTodosClientInitialized = () => { | ||
153 | const { authToken } = this.stores.user; | ||
154 | const { isDarkThemeActive } = this.stores.ui; | ||
155 | const { locale } = this.stores.app; | ||
156 | if (!this.webview) return; | ||
157 | this.webview.send(IPC.TODOS_HOST_CHANNEL, { | ||
158 | action: 'todos:configure', | ||
159 | data: { | ||
160 | authToken, | ||
161 | locale, | ||
162 | theme: isDarkThemeActive ? ThemeType.dark : ThemeType.default, | ||
163 | }, | ||
164 | }); | ||
165 | }; | ||
166 | |||
167 | _goToService = ({ url, serviceId }) => { | ||
168 | if (url) { | ||
169 | this.stores.services.one(serviceId).webview.loadURL(url); | ||
170 | } | ||
171 | this.actions.service.setActive({ serviceId }); | ||
172 | }; | ||
173 | |||
174 | // Reactions | ||
175 | |||
176 | _setFeatureEnabledReaction = () => { | ||
177 | const { isTodosEnabled } = this.stores.features.features; | ||
178 | |||
179 | this.isFeatureEnabled = isTodosEnabled; | ||
180 | }; | ||
181 | |||
182 | _updateTodosConfig = () => { | ||
183 | // Resend the config if any part changes in Franz: | ||
184 | this._onTodosClientInitialized(); | ||
185 | }; | ||
186 | |||
187 | _firstLaunchReaction = () => { | ||
188 | const { stats } = this.stores.settings.all; | ||
189 | |||
190 | // Hide todos layer on first app start but show on second | ||
191 | if (stats.appStarts <= 1) { | ||
192 | this._updateSettings({ | ||
193 | isTodosPanelVisible: false, | ||
194 | }); | ||
195 | } else if (stats.appStarts <= 2) { | ||
196 | this._updateSettings({ | ||
197 | isTodosPanelVisible: true, | ||
198 | }); | ||
199 | } | ||
200 | }; | ||
201 | |||
202 | _routeCheckReaction = () => { | ||
203 | const { pathname } = this.stores.router.location; | ||
204 | |||
205 | if (pathname === TODOS_ROUTES.TARGET) { | ||
206 | debug('Router is on todos route, show todos panel'); | ||
207 | // todosStore.start(stores, actions); | ||
208 | this.stores.router.push('/'); | ||
209 | |||
210 | if (!this.isTodosPanelVisible) { | ||
211 | this._updateSettings({ | ||
212 | isTodosPanelVisible: true, | ||
213 | }); | ||
214 | } | ||
215 | } | ||
216 | } | ||
217 | } | ||
diff --git a/src/features/workspaces/actions.js b/src/features/workspaces/actions.js index a85f8f57f..5b5db422e 100644 --- a/src/features/workspaces/actions.js +++ b/src/features/workspaces/actions.js | |||
@@ -21,6 +21,7 @@ export const workspaceActions = createActionsFromDefinitions({ | |||
21 | deactivate: {}, | 21 | deactivate: {}, |
22 | toggleWorkspaceDrawer: {}, | 22 | toggleWorkspaceDrawer: {}, |
23 | openWorkspaceSettings: {}, | 23 | openWorkspaceSettings: {}, |
24 | toggleKeepAllWorkspacesLoadedSetting: {}, | ||
24 | }, PropTypes.checkPropTypes); | 25 | }, PropTypes.checkPropTypes); |
25 | 26 | ||
26 | export default workspaceActions; | 27 | export default workspaceActions; |
diff --git a/src/features/workspaces/api.js b/src/features/workspaces/api.js index b8893363f..30fbd84be 100644 --- a/src/features/workspaces/api.js +++ b/src/features/workspaces/api.js | |||
@@ -4,7 +4,7 @@ import Request from '../../stores/lib/Request'; | |||
4 | import Workspace from './models/Workspace'; | 4 | import Workspace from './models/Workspace'; |
5 | import apiBase from '../../api/apiBase'; | 5 | import apiBase from '../../api/apiBase'; |
6 | 6 | ||
7 | const debug = require('debug')('Franz:feature:workspaces:api'); | 7 | const debug = require('debug')('Ferdi:feature:workspaces:api'); |
8 | 8 | ||
9 | export const workspaceApi = { | 9 | export const workspaceApi = { |
10 | getUserWorkspaces: async () => { | 10 | getUserWorkspaces: async () => { |
diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js index cbc7372ca..f4ee89a14 100644 --- a/src/features/workspaces/components/WorkspaceDrawer.js +++ b/src/features/workspaces/components/WorkspaceDrawer.js | |||
@@ -7,6 +7,7 @@ import { H1, Icon, ProBadge } from '@meetfranz/ui'; | |||
7 | import { Button } from '@meetfranz/forms/lib'; | 7 | import { Button } from '@meetfranz/forms/lib'; |
8 | import ReactTooltip from 'react-tooltip'; | 8 | import ReactTooltip from 'react-tooltip'; |
9 | 9 | ||
10 | import { mdiPlusBox, mdiSettings } from '@mdi/js'; | ||
10 | import WorkspaceDrawerItem from './WorkspaceDrawerItem'; | 11 | import WorkspaceDrawerItem from './WorkspaceDrawerItem'; |
11 | import { workspaceActions } from '../actions'; | 12 | import { workspaceActions } from '../actions'; |
12 | import { workspaceStore } from '../index'; | 13 | import { workspaceStore } from '../index'; |
@@ -157,7 +158,7 @@ class WorkspaceDrawer extends Component { | |||
157 | data-tip={`${intl.formatMessage(messages.workspacesSettingsTooltip)}`} | 158 | data-tip={`${intl.formatMessage(messages.workspacesSettingsTooltip)}`} |
158 | > | 159 | > |
159 | <Icon | 160 | <Icon |
160 | icon="mdiSettings" | 161 | icon={mdiSettings} |
161 | size={1.5} | 162 | size={1.5} |
162 | className={classes.workspacesSettingsButtonIcon} | 163 | className={classes.workspacesSettingsButtonIcon} |
163 | /> | 164 | /> |
@@ -181,7 +182,7 @@ class WorkspaceDrawer extends Component { | |||
181 | className={classes.premiumCtaButton} | 182 | className={classes.premiumCtaButton} |
182 | buttonType="primary" | 183 | buttonType="primary" |
183 | label={intl.formatMessage(messages.premiumCtaButtonLabel)} | 184 | label={intl.formatMessage(messages.premiumCtaButtonLabel)} |
184 | icon="mdiPlusBox" | 185 | icon={mdiPlusBox} |
185 | onClick={() => { | 186 | onClick={() => { |
186 | workspaceActions.openWorkspaceSettings(); | 187 | workspaceActions.openWorkspaceSettings(); |
187 | }} | 188 | }} |
@@ -220,7 +221,7 @@ class WorkspaceDrawer extends Component { | |||
220 | }} | 221 | }} |
221 | > | 222 | > |
222 | <Icon | 223 | <Icon |
223 | icon="mdiPlusBox" | 224 | icon={mdiPlusBox} |
224 | size={1} | 225 | size={1} |
225 | className={classes.workspacesSettingsButtonIcon} | 226 | className={classes.workspacesSettingsButtonIcon} |
226 | /> | 227 | /> |
diff --git a/src/features/workspaces/components/WorkspaceSwitchingIndicator.js b/src/features/workspaces/components/WorkspaceSwitchingIndicator.js index c4a800a7b..a70d1d66f 100644 --- a/src/features/workspaces/components/WorkspaceSwitchingIndicator.js +++ b/src/features/workspaces/components/WorkspaceSwitchingIndicator.js | |||
@@ -21,11 +21,8 @@ const styles = theme => ({ | |||
21 | alignItems: 'flex-start', | 21 | alignItems: 'flex-start', |
22 | position: 'absolute', | 22 | position: 'absolute', |
23 | transition: 'width 0.5s ease', | 23 | transition: 'width 0.5s ease', |
24 | width: '100%', | ||
25 | marginTop: '20px', | ||
26 | }, | ||
27 | wrapperWhenDrawerIsOpen: { | ||
28 | width: `calc(100% - ${theme.workspaces.drawer.width}px)`, | 24 | width: `calc(100% - ${theme.workspaces.drawer.width}px)`, |
25 | marginTop: '20px', | ||
29 | }, | 26 | }, |
30 | component: { | 27 | component: { |
31 | background: 'rgba(20, 20, 20, 0.4)', | 28 | background: 'rgba(20, 20, 20, 0.4)', |
@@ -64,14 +61,13 @@ class WorkspaceSwitchingIndicator extends Component { | |||
64 | render() { | 61 | render() { |
65 | const { classes, theme } = this.props; | 62 | const { classes, theme } = this.props; |
66 | const { intl } = this.context; | 63 | const { intl } = this.context; |
67 | const { isSwitchingWorkspace, isWorkspaceDrawerOpen, nextWorkspace } = workspaceStore; | 64 | const { isSwitchingWorkspace, nextWorkspace } = workspaceStore; |
68 | if (!isSwitchingWorkspace) return null; | 65 | if (!isSwitchingWorkspace) return null; |
69 | const nextWorkspaceName = nextWorkspace ? nextWorkspace.name : 'All services'; | 66 | const nextWorkspaceName = nextWorkspace ? nextWorkspace.name : 'All services'; |
70 | return ( | 67 | return ( |
71 | <div | 68 | <div |
72 | className={classnames([ | 69 | className={classnames([ |
73 | classes.wrapper, | 70 | classes.wrapper, |
74 | isWorkspaceDrawerOpen ? classes.wrapperWhenDrawerIsOpen : null, | ||
75 | ])} | 71 | ])} |
76 | > | 72 | > |
77 | <div className={classes.component}> | 73 | <div className={classes.component}> |
diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js index 9b51f2602..977b23999 100644 --- a/src/features/workspaces/components/WorkspacesDashboard.js +++ b/src/features/workspaces/components/WorkspacesDashboard.js | |||
@@ -1,9 +1,9 @@ | |||
1 | import React, { Component, Fragment } from 'react'; | 1 | import React, { Component, Fragment } from 'react'; |
2 | import PropTypes from 'prop-types'; | 2 | import PropTypes from 'prop-types'; |
3 | import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; | 3 | import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | import injectSheet from 'react-jss'; | 5 | import injectSheet from 'react-jss'; |
6 | import { Infobox } from '@meetfranz/ui'; | 6 | import { Infobox, Badge } from '@meetfranz/ui'; |
7 | 7 | ||
8 | import Loader from '../../../components/ui/Loader'; | 8 | import Loader from '../../../components/ui/Loader'; |
9 | import WorkspaceItem from './WorkspaceItem'; | 9 | import WorkspaceItem from './WorkspaceItem'; |
@@ -11,7 +11,9 @@ import CreateWorkspaceForm from './CreateWorkspaceForm'; | |||
11 | import Request from '../../../stores/lib/Request'; | 11 | import Request from '../../../stores/lib/Request'; |
12 | import Appear from '../../../components/ui/effects/Appear'; | 12 | import Appear from '../../../components/ui/effects/Appear'; |
13 | import { workspaceStore } from '../index'; | 13 | import { workspaceStore } from '../index'; |
14 | import PremiumFeatureContainer from '../../../components/ui/PremiumFeatureContainer'; | 14 | import UIStore from '../../../stores/UIStore'; |
15 | import globalMessages from '../../../i18n/globalMessages'; | ||
16 | import UpgradeButton from '../../../components/ui/UpgradeButton'; | ||
15 | 17 | ||
16 | const messages = defineMessages({ | 18 | const messages = defineMessages({ |
17 | headline: { | 19 | headline: { |
@@ -48,7 +50,7 @@ const messages = defineMessages({ | |||
48 | }, | 50 | }, |
49 | }); | 51 | }); |
50 | 52 | ||
51 | const styles = theme => ({ | 53 | const styles = () => ({ |
52 | table: { | 54 | table: { |
53 | width: '100%', | 55 | width: '100%', |
54 | '& td': { | 56 | '& td': { |
@@ -62,17 +64,28 @@ const styles = theme => ({ | |||
62 | height: 'auto', | 64 | height: 'auto', |
63 | }, | 65 | }, |
64 | premiumAnnouncement: { | 66 | premiumAnnouncement: { |
65 | padding: '20px', | ||
66 | backgroundColor: '#3498db', | ||
67 | marginLeft: '-20px', | ||
68 | marginBottom: '20px', | ||
69 | height: 'auto', | 67 | height: 'auto', |
70 | color: 'white', | 68 | }, |
71 | borderRadius: theme.borderRadius, | 69 | premiumAnnouncementContainer: { |
70 | display: 'flex', | ||
71 | }, | ||
72 | announcementHeadline: { | ||
73 | marginBottom: 0, | ||
74 | }, | ||
75 | teaserImage: { | ||
76 | width: 250, | ||
77 | margin: [-8, 0, 0, 20], | ||
78 | alignSelf: 'center', | ||
79 | }, | ||
80 | upgradeCTA: { | ||
81 | margin: [40, 'auto'], | ||
82 | }, | ||
83 | proRequired: { | ||
84 | margin: [10, 0, 40], | ||
72 | }, | 85 | }, |
73 | }); | 86 | }); |
74 | 87 | ||
75 | @injectSheet(styles) @observer | 88 | @inject('stores') @injectSheet(styles) @observer |
76 | class WorkspacesDashboard extends Component { | 89 | class WorkspacesDashboard extends Component { |
77 | static propTypes = { | 90 | static propTypes = { |
78 | classes: PropTypes.object.isRequired, | 91 | classes: PropTypes.object.isRequired, |
@@ -100,7 +113,9 @@ class WorkspacesDashboard extends Component { | |||
100 | onWorkspaceClick, | 113 | onWorkspaceClick, |
101 | workspaces, | 114 | workspaces, |
102 | } = this.props; | 115 | } = this.props; |
116 | |||
103 | const { intl } = this.context; | 117 | const { intl } = this.context; |
118 | |||
104 | return ( | 119 | return ( |
105 | <div className="settings__main"> | 120 | <div className="settings__main"> |
106 | <div className="settings__header"> | 121 | <div className="settings__header"> |
@@ -138,68 +153,80 @@ class WorkspacesDashboard extends Component { | |||
138 | 153 | ||
139 | {workspaceStore.isPremiumUpgradeRequired && ( | 154 | {workspaceStore.isPremiumUpgradeRequired && ( |
140 | <div className={classes.premiumAnnouncement}> | 155 | <div className={classes.premiumAnnouncement}> |
141 | <h2>{intl.formatMessage(messages.workspaceFeatureHeadline)}</h2> | 156 | |
142 | <p>{intl.formatMessage(messages.workspaceFeatureInfo)}</p> | 157 | <h1 className={classes.announcementHeadline}>{intl.formatMessage(messages.workspaceFeatureHeadline)}</h1> |
158 | <Badge className={classes.proRequired}>{intl.formatMessage(globalMessages.proRequired)}</Badge> | ||
159 | <div className={classes.premiumAnnouncementContainer}> | ||
160 | <div className={classes.premiumAnnouncementContent}> | ||
161 | <p>{intl.formatMessage(messages.workspaceFeatureInfo)}</p> | ||
162 | <UpgradeButton | ||
163 | className={classes.upgradeCTA} | ||
164 | gaEventInfo={{ category: 'Workspaces', event: 'upgrade' }} | ||
165 | short | ||
166 | requiresPro | ||
167 | /> | ||
168 | </div> | ||
169 | <img src={`https://cdn.franzinfra.com/announcements/assets/workspaces_${this.props.stores.ui.isDarkThemeActive ? 'dark' : 'light'}.png`} className={classes.teaserImage} alt="" /> | ||
170 | </div> | ||
143 | </div> | 171 | </div> |
144 | )} | 172 | )} |
145 | 173 | ||
146 | <PremiumFeatureContainer | 174 | {!workspaceStore.isPremiumUpgradeRequired && ( |
147 | condition={workspaceStore.isPremiumFeature} | 175 | <> |
148 | gaEventInfo={{ category: 'User', event: 'upgrade', label: 'workspaces' }} | 176 | {/* ===== Create workspace form ===== */} |
149 | > | 177 | <div className={classes.createForm}> |
150 | {/* ===== Create workspace form ===== */} | 178 | <CreateWorkspaceForm |
151 | <div className={classes.createForm}> | 179 | isSubmitting={createWorkspaceRequest.isExecuting} |
152 | <CreateWorkspaceForm | 180 | onSubmit={onCreateWorkspaceSubmit} |
153 | isSubmitting={createWorkspaceRequest.isExecuting} | 181 | /> |
154 | onSubmit={onCreateWorkspaceSubmit} | 182 | </div> |
155 | /> | 183 | {getUserWorkspacesRequest.isExecuting ? ( |
156 | </div> | 184 | <Loader /> |
157 | {getUserWorkspacesRequest.isExecuting ? ( | 185 | ) : ( |
158 | <Loader /> | 186 | <Fragment> |
159 | ) : ( | 187 | {/* ===== Workspace could not be loaded error ===== */} |
160 | <Fragment> | 188 | {getUserWorkspacesRequest.error ? ( |
161 | {/* ===== Workspace could not be loaded error ===== */} | 189 | <Infobox |
162 | {getUserWorkspacesRequest.error ? ( | 190 | icon="alert" |
163 | <Infobox | 191 | type="danger" |
164 | icon="alert" | 192 | ctaLabel={intl.formatMessage(messages.tryReloadWorkspaces)} |
165 | type="danger" | 193 | ctaLoading={getUserWorkspacesRequest.isExecuting} |
166 | ctaLabel={intl.formatMessage(messages.tryReloadWorkspaces)} | 194 | ctaOnClick={getUserWorkspacesRequest.retry} |
167 | ctaLoading={getUserWorkspacesRequest.isExecuting} | 195 | > |
168 | ctaOnClick={getUserWorkspacesRequest.retry} | 196 | {intl.formatMessage(messages.workspacesRequestFailed)} |
169 | > | 197 | </Infobox> |
170 | {intl.formatMessage(messages.workspacesRequestFailed)} | 198 | ) : ( |
171 | </Infobox> | 199 | <Fragment> |
172 | ) : ( | 200 | {workspaces.length === 0 ? ( |
173 | <Fragment> | 201 | <div className="align-middle settings__empty-state"> |
174 | {workspaces.length === 0 ? ( | 202 | {/* ===== Workspaces empty state ===== */} |
175 | <div className="align-middle settings__empty-state"> | 203 | <p className="settings__empty-text"> |
176 | {/* ===== Workspaces empty state ===== */} | 204 | <span className="emoji"> |
177 | <p className="settings__empty-text"> | 205 | <img src="./assets/images/emoji/sad.png" alt="" /> |
178 | <span className="emoji"> | 206 | </span> |
179 | <img src="./assets/images/emoji/sad.png" alt="" /> | 207 | {intl.formatMessage(messages.noServicesAdded)} |
180 | </span> | 208 | </p> |
181 | {intl.formatMessage(messages.noServicesAdded)} | 209 | </div> |
182 | </p> | 210 | ) : ( |
183 | </div> | 211 | <table className={classes.table}> |
184 | ) : ( | 212 | {/* ===== Workspaces list ===== */} |
185 | <table className={classes.table}> | 213 | <tbody> |
186 | {/* ===== Workspaces list ===== */} | 214 | {workspaces.map(workspace => ( |
187 | <tbody> | 215 | <WorkspaceItem |
188 | {workspaces.map(workspace => ( | 216 | key={workspace.id} |
189 | <WorkspaceItem | 217 | workspace={workspace} |
190 | key={workspace.id} | 218 | onItemClick={w => onWorkspaceClick(w)} |
191 | workspace={workspace} | 219 | /> |
192 | onItemClick={w => onWorkspaceClick(w)} | 220 | ))} |
193 | /> | 221 | </tbody> |
194 | ))} | 222 | </table> |
195 | </tbody> | 223 | )} |
196 | </table> | 224 | </Fragment> |
197 | )} | 225 | )} |
198 | </Fragment> | 226 | </Fragment> |
199 | )} | 227 | )} |
200 | </Fragment> | 228 | </> |
201 | )} | 229 | )} |
202 | </PremiumFeatureContainer> | ||
203 | </div> | 230 | </div> |
204 | </div> | 231 | </div> |
205 | ); | 232 | ); |
@@ -207,3 +234,9 @@ class WorkspacesDashboard extends Component { | |||
207 | } | 234 | } |
208 | 235 | ||
209 | export default WorkspacesDashboard; | 236 | export default WorkspacesDashboard; |
237 | |||
238 | WorkspacesDashboard.wrappedComponent.propTypes = { | ||
239 | stores: PropTypes.shape({ | ||
240 | ui: PropTypes.instanceOf(UIStore).isRequired, | ||
241 | }).isRequired, | ||
242 | }; | ||
diff --git a/src/features/workspaces/containers/WorkspacesScreen.js b/src/features/workspaces/containers/WorkspacesScreen.js index 2ab565fa1..affbd230d 100644 --- a/src/features/workspaces/containers/WorkspacesScreen.js +++ b/src/features/workspaces/containers/WorkspacesScreen.js | |||
@@ -11,7 +11,7 @@ import { | |||
11 | updateWorkspaceRequest, | 11 | updateWorkspaceRequest, |
12 | } from '../api'; | 12 | } from '../api'; |
13 | 13 | ||
14 | @inject('actions') @observer | 14 | @inject('stores', 'actions') @observer |
15 | class WorkspacesScreen extends Component { | 15 | class WorkspacesScreen extends Component { |
16 | static propTypes = { | 16 | static propTypes = { |
17 | actions: PropTypes.shape({ | 17 | actions: PropTypes.shape({ |
diff --git a/src/features/workspaces/index.js b/src/features/workspaces/index.js index ad9023b8b..560b732ab 100644 --- a/src/features/workspaces/index.js +++ b/src/features/workspaces/index.js | |||
@@ -2,9 +2,10 @@ import { reaction } from 'mobx'; | |||
2 | import WorkspacesStore from './store'; | 2 | import WorkspacesStore from './store'; |
3 | import { resetApiRequests } from './api'; | 3 | import { resetApiRequests } from './api'; |
4 | 4 | ||
5 | const debug = require('debug')('Franz:feature:workspaces'); | 5 | const debug = require('debug')('Ferdi:feature:workspaces'); |
6 | 6 | ||
7 | export const GA_CATEGORY_WORKSPACES = 'Workspaces'; | 7 | export const GA_CATEGORY_WORKSPACES = 'Workspaces'; |
8 | export const DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED = false; | ||
8 | 9 | ||
9 | export const workspaceStore = new WorkspacesStore(); | 10 | export const workspaceStore = new WorkspacesStore(); |
10 | 11 | ||
diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js index a82f6895c..da1582a77 100644 --- a/src/features/workspaces/store.js +++ b/src/features/workspaces/store.js | |||
@@ -17,16 +17,16 @@ import { WORKSPACES_ROUTES } from './index'; | |||
17 | import { createReactions } from '../../stores/lib/Reaction'; | 17 | import { createReactions } from '../../stores/lib/Reaction'; |
18 | import { createActionBindings } from '../utils/ActionBinding'; | 18 | import { createActionBindings } from '../utils/ActionBinding'; |
19 | 19 | ||
20 | const debug = require('debug')('Franz:feature:workspaces:store'); | 20 | const debug = require('debug')('Ferdi:feature:workspaces:store'); |
21 | 21 | ||
22 | export default class WorkspacesStore extends FeatureStore { | 22 | export default class WorkspacesStore extends FeatureStore { |
23 | @observable isFeatureEnabled = false; | 23 | @observable isFeatureEnabled = true; |
24 | 24 | ||
25 | @observable isFeatureActive = false; | 25 | @observable isFeatureActive = false; |
26 | 26 | ||
27 | @observable isPremiumFeature = true; | 27 | @observable isPremiumFeature = false; |
28 | 28 | ||
29 | @observable isPremiumUpgradeRequired = true; | 29 | @observable isPremiumUpgradeRequired = false; |
30 | 30 | ||
31 | @observable activeWorkspace = null; | 31 | @observable activeWorkspace = null; |
32 | 32 | ||
@@ -54,7 +54,8 @@ export default class WorkspacesStore extends FeatureStore { | |||
54 | } | 54 | } |
55 | 55 | ||
56 | @computed get isUserAllowedToUseFeature() { | 56 | @computed get isUserAllowedToUseFeature() { |
57 | return !this.isPremiumUpgradeRequired; | 57 | return true; |
58 | // return !this.isPremiumUpgradeRequired; | ||
58 | } | 59 | } |
59 | 60 | ||
60 | @computed get isAnyWorkspaceActive() { | 61 | @computed get isAnyWorkspaceActive() { |
@@ -97,6 +98,7 @@ export default class WorkspacesStore extends FeatureStore { | |||
97 | [workspaceActions.update, this._update], | 98 | [workspaceActions.update, this._update], |
98 | [workspaceActions.activate, this._setActiveWorkspace], | 99 | [workspaceActions.activate, this._setActiveWorkspace], |
99 | [workspaceActions.deactivate, this._deactivateActiveWorkspace], | 100 | [workspaceActions.deactivate, this._deactivateActiveWorkspace], |
101 | [workspaceActions.toggleKeepAllWorkspacesLoadedSetting, this._toggleKeepAllWorkspacesLoadedSetting], | ||
100 | ]); | 102 | ]); |
101 | this._allActions = this._freeUserActions.concat(this._premiumUserActions); | 103 | this._allActions = this._freeUserActions.concat(this._premiumUserActions); |
102 | this._registerActions(this._allActions); | 104 | this._registerActions(this._allActions); |
@@ -245,6 +247,10 @@ export default class WorkspacesStore extends FeatureStore { | |||
245 | await updateWorkspaceRequest.execute(activeWorkspace); | 247 | await updateWorkspaceRequest.execute(activeWorkspace); |
246 | }; | 248 | }; |
247 | 249 | ||
250 | _toggleKeepAllWorkspacesLoadedSetting = async () => { | ||
251 | this._updateSettings({ keepAllWorkspacesLoaded: !this.settings.keepAllWorkspacesLoaded }); | ||
252 | }; | ||
253 | |||
248 | // Reactions | 254 | // Reactions |
249 | 255 | ||
250 | _setFeatureEnabledReaction = () => { | 256 | _setFeatureEnabledReaction = () => { |
@@ -253,11 +259,10 @@ export default class WorkspacesStore extends FeatureStore { | |||
253 | }; | 259 | }; |
254 | 260 | ||
255 | _setIsPremiumFeatureReaction = () => { | 261 | _setIsPremiumFeatureReaction = () => { |
256 | const { features, user } = this.stores; | 262 | // const { features } = this.stores; |
257 | const { isPremium } = user.data; | 263 | // const { isWorkspaceIncludedInCurrentPlan } = features.features; |
258 | const { isWorkspacePremiumFeature } = features.features; | 264 | // this.isPremiumFeature = !isWorkspaceIncludedInCurrentPlan; |
259 | this.isPremiumFeature = isWorkspacePremiumFeature; | 265 | // this.isPremiumUpgradeRequired = !isWorkspaceIncludedInCurrentPlan; |
260 | this.isPremiumUpgradeRequired = isWorkspacePremiumFeature && !isPremium; | ||
261 | }; | 266 | }; |
262 | 267 | ||
263 | _setWorkspaceBeingEditedReaction = () => { | 268 | _setWorkspaceBeingEditedReaction = () => { |
diff --git a/src/helpers/plan-helpers.js b/src/helpers/plan-helpers.js new file mode 100644 index 000000000..e0f1fd89a --- /dev/null +++ b/src/helpers/plan-helpers.js | |||
@@ -0,0 +1,45 @@ | |||
1 | import { defineMessages } from 'react-intl'; | ||
2 | import { PLANS_MAPPING, PLANS } from '../config'; | ||
3 | |||
4 | const messages = defineMessages({ | ||
5 | [PLANS.PRO]: { | ||
6 | id: 'pricing.plan.pro', | ||
7 | defaultMessage: '!!!Franz Professional', | ||
8 | }, | ||
9 | [PLANS.PERSONAL]: { | ||
10 | id: 'pricing.plan.personal', | ||
11 | defaultMessage: '!!!Franz Personal', | ||
12 | }, | ||
13 | [PLANS.FREE]: { | ||
14 | id: 'pricing.plan.free', | ||
15 | defaultMessage: '!!!Franz Free', | ||
16 | }, | ||
17 | [PLANS.LEGACY]: { | ||
18 | id: 'pricing.plan.legacy', | ||
19 | defaultMessage: '!!!Franz Premium', | ||
20 | }, | ||
21 | }); | ||
22 | |||
23 | export function i18nPlanName(planId, intl) { | ||
24 | if (!planId) { | ||
25 | throw new Error('planId is required'); | ||
26 | } | ||
27 | |||
28 | if (!intl) { | ||
29 | throw new Error('intl context is required'); | ||
30 | } | ||
31 | |||
32 | const plan = PLANS_MAPPING[planId]; | ||
33 | |||
34 | return intl.formatMessage(messages[plan]); | ||
35 | } | ||
36 | |||
37 | export function getPlan(planId) { | ||
38 | if (!planId) { | ||
39 | throw new Error('planId is required'); | ||
40 | } | ||
41 | |||
42 | const plan = PLANS_MAPPING[planId]; | ||
43 | |||
44 | return plan; | ||
45 | } | ||
diff --git a/src/helpers/url-helpers.js b/src/helpers/url-helpers.js index 750d1f00c..2f429a25c 100644 --- a/src/helpers/url-helpers.js +++ b/src/helpers/url-helpers.js | |||
@@ -2,7 +2,7 @@ import { URL } from 'url'; | |||
2 | 2 | ||
3 | import { ALLOWED_PROTOCOLS } from '../config'; | 3 | import { ALLOWED_PROTOCOLS } from '../config'; |
4 | 4 | ||
5 | const debug = require('debug')('Franz:Helpers:url'); | 5 | const debug = require('debug')('Ferdi:Helpers:url'); |
6 | 6 | ||
7 | export function isValidExternalURL(url) { | 7 | export function isValidExternalURL(url) { |
8 | const parsedUrl = new URL(url); | 8 | const parsedUrl = new URL(url); |
diff --git a/src/i18n/globalMessages.js b/src/i18n/globalMessages.js index adf2cc306..86fb9e18d 100644 --- a/src/i18n/globalMessages.js +++ b/src/i18n/globalMessages.js | |||
@@ -25,4 +25,8 @@ export default defineMessages({ | |||
25 | id: 'global.spellchecking.autodetect.short', | 25 | id: 'global.spellchecking.autodetect.short', |
26 | defaultMessage: '!!!Automatic', | 26 | defaultMessage: '!!!Automatic', |
27 | }, | 27 | }, |
28 | proRequired: { | ||
29 | id: 'global.franzProRequired', | ||
30 | defaultMessage: '!!!Franz Professional Required', | ||
31 | }, | ||
28 | }); | 32 | }); |
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 5b63b97fb..4f1c5a052 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recarrega", | 2 | "app.errorHandler.action" : "Recarrega", |
3 | "app.errorHandler.headline" : "Quelcom ha anat malament", | 3 | "app.errorHandler.headline" : "Quelcom ha anat malament", |
4 | "feature.announcements.changelog.headline" : "Canvis en Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Canvis en Franz {version}", |
5 | "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", |
6 | "feature.delayApp.headline" : "Si us plau, compra una llicència de suport per a Ferdi per saltar l'espera", | 6 | "feature.delayApp.text" : "Franz continuarà en {seconds} segons", |
7 | "feature.delayApp.text" : "Ferdi continuarà en {seconds} segons", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Aconsegueix una llicència de suport per a Ferdi", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Millorar el teu compte", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Envia com a correu", | 13 | "feature.shareFranz.action.email" : "Envia com a correu", |
9 | "feature.shareFranz.action.facebook" : "Compartir en Facebook", | 14 | "feature.shareFranz.action.facebook" : "Compartir en Facebook", |
10 | "feature.shareFranz.action.twitter" : "Compartir a Twitter", | 15 | "feature.shareFranz.action.twitter" : "Compartir a Twitter", |
11 | "feature.shareFranz.headline" : "Junts millorem Franz!", | 16 | "feature.shareFranz.headline" : "Junts millorem Franz!", |
12 | "feature.shareFranz.shareText.email" : "He afegit {count} serveis a Franz! Obtén l'aplicació gratuïta per a Whatsapp, Messenger, Slack, Skype a www,meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "He afegit {count} serveis a Franz! Obtén l'aplicació gratuïta per a Whatsapp, Messenger, Slack, Skype a www,meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "He afegit {count} serveis a Franz! Obtén l'aplicació gratuïta de Whatsapp, Messenger, Slack, Skype i altres a www.meetfranz.com\/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "He afegit {count} serveis a Franz! Obtén l'aplicació gratuïta de Whatsapp, Messenger, Slack, Skype i altres a www.meetfranz.com\/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Digues als teus amics i col·legues l'increïble que és Ferdi i ajuda'ns a còrrer la veu ", | 19 | "feature.shareFranz.text" : "Digues als teus amics i col·legues l'increïble que és Franz i ajuda'ns a còrrer la veu ", |
15 | "global.api.unhealthy" : "No es pot connectar amb els serveis en lÃnia de Franz", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "No es pot connectar amb els serveis en lÃnia de Ferdi", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "No esteu connectat a Internet.", | 25 | "global.notConnectedToTheInternet" : "No esteu connectat a Internet.", |
17 | "global.spellchecker.useDefault" : "Utilitzar el predeterminat del sistema ({default})", | 26 | "global.spellchecker.useDefault" : "Utilitzar el predeterminat del sistema ({default})", |
18 | "global.spellchecking.autodetect" : "Detectar l'idioma automà ticament", | 27 | "global.spellchecking.autodetect" : "Detectar l'idioma automà ticament", |
19 | "global.spellchecking.autodetect.short" : "Automà tic", | 28 | "global.spellchecking.autodetect.short" : "Automà tic", |
20 | "global.spellchecking.language" : "Corrector ortogrà fic", | 29 | "global.spellchecking.language" : "Corrector ortogrà fic", |
21 | "import.headline" : "Importa els teus serveis Ferdi 4", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Ferdi 5", | 31 | "import.headline" : "Importa els teus serveis Franz 4", |
32 | "import.notSupportedHeadline" : "Serveis que encara no s'admeten a Franz 5", | ||
23 | "import.skip.label" : "Vull afegir serveis manualment", | 33 | "import.skip.label" : "Vull afegir serveis manualment", |
24 | "import.submit.label" : "Importa serveis", | 34 | "import.submit.label" : "Importa serveis", |
25 | "infobar.buttonChangelog" : "Que hi ha de nou?", | 35 | "infobar.buttonChangelog" : "Que hi ha de nou?", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "Recarrega els serveis", | 37 | "infobar.buttonReloadServices" : "Recarrega els serveis", |
28 | "infobar.requiredRequestsFailed" : "No s'han pogut carregar els serveis i la informació de l'usuari", | 38 | "infobar.requiredRequestsFailed" : "No s'han pogut carregar els serveis i la informació de l'usuari", |
29 | "infobar.servicesUpdated" : "Els teus serveis s'han actualitzat.", | 39 | "infobar.servicesUpdated" : "Els teus serveis s'han actualitzat.", |
40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", | ||
30 | "infobar.updateAvailable" : "Hi ha disponible una nova actualització per a Franz.", | 41 | "infobar.updateAvailable" : "Hi ha disponible una nova actualització per a Franz.", |
31 | "invite.email.label" : "Correu electrònic", | 42 | "invite.email.label" : "Correu electrònic", |
32 | "invite.headline.friends" : "Convida a tres dels teus amics o companys", | 43 | "invite.headline.friends" : "Convida a tres dels teus amics o companys", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "La teva sessió ha caducat, torna-la a iniciar.", | 54 | "login.serverLogout" : "La teva sessió ha caducat, torna-la a iniciar.", |
44 | "login.submit.label" : "Accedir", | 55 | "login.submit.label" : "Accedir", |
45 | "login.tokenExpired" : "La teva sessió ha caducat, torna a iniciar la sessió.", | 56 | "login.tokenExpired" : "La teva sessió ha caducat, torna a iniciar la sessió.", |
46 | "menu.app.about" : "Sobre Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
59 | "menu.app.about" : "Sobre Ferdi", | ||
47 | "menu.app.announcement" : "Què hi ha de nou?", | 60 | "menu.app.announcement" : "Què hi ha de nou?", |
48 | "menu.app.checkForUpdates" : "Comprova si hi ha actualitzacions", | 61 | "menu.app.checkForUpdates" : "Comprova si hi ha actualitzacions", |
49 | "menu.app.hide" : "Amaga", | 62 | "menu.app.hide" : "Amaga", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Fitxer", | 81 | "menu.file" : "Fitxer", |
69 | "menu.help" : "Ajuda", | 82 | "menu.help" : "Ajuda", |
70 | "menu.help.changelog" : "Registre de canvis", | 83 | "menu.help.changelog" : "Registre de canvis", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Conegueu-ne més detalls", | 87 | "menu.help.learnMore" : "Conegueu-ne més detalls", |
72 | "menu.help.privacy" : "Declaració de privacitat", | 88 | "menu.help.privacy" : "Declaració de privacitat", |
73 | "menu.help.support" : "Suport", | 89 | "menu.help.support" : "Suport", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Activate previous service", | 92 | "menu.services.activatePreviousService" : "Activate previous service", |
77 | "menu.services.addNewService" : "Afegeix un servei...", | 93 | "menu.services.addNewService" : "Afegeix un servei...", |
78 | "menu.services.setNextServiceActive" : "Activate next service", | 94 | "menu.services.setNextServiceActive" : "Activate next service", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Visualitza", | 97 | "menu.view" : "Visualitza", |
80 | "menu.view.enterFullScreen" : "Inicia la pantalla completa", | 98 | "menu.view.enterFullScreen" : "Inicia la pantalla completa", |
81 | "menu.view.exitFullScreen" : "Surt de pantalla completa", | 99 | "menu.view.exitFullScreen" : "Surt de pantalla completa", |
82 | "menu.view.reloadFranz" : "Torna a carregar Franz", | 100 | "menu.view.reloadFranz" : "Torna a carregar Ferdi", |
83 | "menu.view.reloadService" : "Torna a carregar el servei", | 101 | "menu.view.reloadService" : "Torna a carregar el servei", |
84 | "menu.view.resetZoom" : "Mida real", | 102 | "menu.view.resetZoom" : "Mida real", |
85 | "menu.view.toggleDevTools" : "Activa serveis per a desenvolupadors", | 103 | "menu.view.toggleDevTools" : "Activa serveis per a desenvolupadors", |
86 | "menu.view.toggleFullScreen" : "Activa la pantalla completa", | 104 | "menu.view.toggleFullScreen" : "Activa la pantalla completa", |
87 | "menu.view.toggleServiceDevTools" : "Habilita les eines de desenvolupador de serveis", | 105 | "menu.view.toggleServiceDevTools" : "Habilita les eines de desenvolupador de serveis", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Amplia", | 107 | "menu.view.zoomIn" : "Amplia", |
89 | "menu.view.zoomOut" : "Redueix", | 108 | "menu.view.zoomOut" : "Redueix", |
90 | "menu.window" : "Finestra", | 109 | "menu.window" : "Finestra", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Enviar", | 122 | "password.submit.label" : "Enviar", |
104 | "password.successInfo" : "Comproveu el vostre correu electrònic", | 123 | "password.successInfo" : "Comproveu el vostre correu electrònic", |
105 | "premiumFeature.button.upgradeAccount" : "Millorar el teu compte", | 124 | "premiumFeature.button.upgradeAccount" : "Millorar el teu compte", |
106 | "pricing.headline" : "Donar suport a Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "No vull donar suport al desenvolupament de Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Vull donar suport al desenvolupament de Franz", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Seleccioneu el vostre pla de suport", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Recarrega {name}", | 152 | "service.crashHandler.action" : "Recarrega {name}", |
111 | "service.crashHandler.autoReload" : "Intentant restablir automà ticament {name} en {seconds} segons", | 153 | "service.crashHandler.autoReload" : "Intentant restablir automà ticament {name} en {seconds} segons", |
112 | "service.crashHandler.headline" : "Oh no!", | 154 | "service.crashHandler.headline" : "Oh no!", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "Oh no!", | 160 | "service.errorHandler.headline" : "Oh no!", |
119 | "service.errorHandler.message" : "Error", | 161 | "service.errorHandler.message" : "Error", |
120 | "service.errorHandler.text" : "{name} ha fallat al carregar", | 162 | "service.errorHandler.text" : "{name} ha fallat al carregar", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Loading", | 168 | "service.webviewLoader.loading" : "Loading", |
122 | "services.getStarted" : "Introducció", | 169 | "services.getStarted" : "Introducció", |
123 | "services.welcome" : "Benvingut a Franz", | 170 | "services.welcome" : "Benvingut a Ferdi", |
124 | "settings.account.account.editButton" : "Editar Compte", | 171 | "settings.account.account.editButton" : "Editar Compte", |
125 | "settings.account.accountType.basic" : "Compte bà sic", | 172 | "settings.account.accountType.basic" : "Compte bà sic", |
126 | "settings.account.accountType.premium" : "Compte de Suport Premium", | 173 | "settings.account.accountType.premium" : "Compte de Suport Premium", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Canvia la contrasenya", | 182 | "settings.account.headlinePassword" : "Canvia la contrasenya", |
136 | "settings.account.headlineProfile" : "Actualitza el perfil", | 183 | "settings.account.headlineProfile" : "Actualitza el perfil", |
137 | "settings.account.headlineSubscription" : "La vostra subscripció", | 184 | "settings.account.headlineSubscription" : "La vostra subscripció", |
138 | "settings.account.headlineUpgrade" : "Actualitzeu el vostre compte i doneu suport a Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Descarregar", | 187 | "settings.account.invoiceDownload" : "Descarregar", |
140 | "settings.account.manageSubscription.label" : "Gestioneu la vostra subscripció", | 188 | "settings.account.manageSubscription.label" : "Gestioneu la vostra subscripció", |
141 | "settings.account.successInfo" : "S'han desat els canvis", | 189 | "settings.account.successInfo" : "S'han desat els canvis", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Torna a provar-ho", | 193 | "settings.account.tryReloadServices" : "Torna a provar-ho", |
143 | "settings.account.tryReloadUserInfoRequest" : "Torna a provar-ho", | 194 | "settings.account.tryReloadUserInfoRequest" : "Torna a provar-ho", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "No s'ha pogut carregar la informació de l'usuari", | 196 | "settings.account.userInfoRequestFailed" : "No s'ha pogut carregar la informació de l'usuari", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Buida la memòria cau", | 198 | "settings.app.buttonClearAllCache" : "Buida la memòria cau", |
146 | "settings.app.buttonInstallUpdate" : "Reinicia i instal·la l'actualització", | 199 | "settings.app.buttonInstallUpdate" : "Reinicia i instal·la l'actualització", |
147 | "settings.app.buttonSearchForUpdate" : "Comprova si hi ha actualitzacions", | 200 | "settings.app.buttonSearchForUpdate" : "Comprova si hi ha actualitzacions", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Uneix-te al Cantó Fosc", | 206 | "settings.app.form.darkMode" : "Uneix-te al Cantó Fosc", |
154 | "settings.app.form.enableGPUAcceleration" : "Activar acceleració GPU", | 207 | "settings.app.form.enableGPUAcceleration" : "Activar acceleració GPU", |
155 | "settings.app.form.enableSpellchecking" : "Habilita la comprobació ortogrà fica", | 208 | "settings.app.form.enableSpellchecking" : "Habilita la comprobació ortogrà fica", |
156 | "settings.app.form.enableSystemTray" : "Mostra Ferdi a la safata del sistema", | 209 | "settings.app.form.enableSystemTray" : "Mostra Franz a la safata del sistema", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Idioma", | 212 | "settings.app.form.language" : "Idioma", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimitza Ferdi a la safata del sistema", | 213 | "settings.app.form.minimizeToSystemTray" : "Minimitza Ferdi a la safata del sistema", |
159 | "settings.app.form.runInBackground" : "Mantén a Ferdi en segon pla en tancar la finestra", | 214 | "settings.app.form.runInBackground" : "Mantén a Ferdi en segon pla en tancar la finestra", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Ajuda'ns a traduir Ferdi en la teva llengua.", | 226 | "settings.app.translationHelp" : "Ajuda'ns a traduir Ferdi en la teva llengua.", |
172 | "settings.app.updateStatusAvailable" : "Actualització disponible, descarregant ...", | 227 | "settings.app.updateStatusAvailable" : "Actualització disponible, descarregant ...", |
173 | "settings.app.updateStatusSearching" : "Està buscant actualitzacions", | 228 | "settings.app.updateStatusSearching" : "Està buscant actualitzacions", |
174 | "settings.app.updateStatusUpToDate" : "Esteu utilitzant la versió més recent de Franz", | 229 | "settings.app.updateStatusUpToDate" : "Esteu utilitzant la versió més recent de Ferdi", |
175 | "settings.invite.headline" : "Convidar amics", | 230 | "settings.invite.headline" : "Convidar amics", |
176 | "settings.navigation.account" : "Compte", | 231 | "settings.navigation.account" : "Compte", |
177 | "settings.navigation.availableServices" : "Serveis disponibles", | 232 | "settings.navigation.availableServices" : "Serveis disponibles", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Els vostres serveis", | 237 | "settings.navigation.yourServices" : "Els vostres serveis", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Your workspaces", |
184 | "settings.recipes.all" : "Tots els serveis", | 239 | "settings.recipes.all" : "Tots els serveis", |
185 | "settings.recipes.dev" : "Desenvolupament", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Serveis disponibles", | 247 | "settings.recipes.headline" : "Serveis disponibles", |
187 | "settings.recipes.missingService" : "Trobes a faltar algun servei?", | 248 | "settings.recipes.missingService" : "Trobes a faltar algun servei?", |
188 | "settings.recipes.mostPopular" : "Els més populars", | 249 | "settings.recipes.mostPopular" : "Els més populars", |
@@ -217,7 +278,7 @@ | |||
217 | "settings.service.form.name" : "Nom", | 278 | "settings.service.form.name" : "Nom", |
218 | "settings.service.form.proxy.headline" : "Ajustaments Proxy HTTP\/HTTPS", | 279 | "settings.service.form.proxy.headline" : "Ajustaments Proxy HTTP\/HTTPS", |
219 | "settings.service.form.proxy.host" : "Host Proxy \/ IP", | 280 | "settings.service.form.proxy.host" : "Host Proxy \/ IP", |
220 | "settings.service.form.proxy.info" : "Els ajustaments del Proxy no es sincronitzaran amb els servidors de Franz", | 281 | "settings.service.form.proxy.info" : "Els ajustaments del Proxy no es sincronitzaran amb els servidors de Ferdi", |
221 | "settings.service.form.proxy.isEnabled" : "Utilitzar Proxy", | 282 | "settings.service.form.proxy.isEnabled" : "Utilitzar Proxy", |
222 | "settings.service.form.proxy.password" : "Contrasenya (opcional)", | 283 | "settings.service.form.proxy.password" : "Contrasenya (opcional)", |
223 | "settings.service.form.proxy.port" : "Port", | 284 | "settings.service.form.proxy.port" : "Port", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Afegeix nou servei", | 332 | "sidebar.addNewService" : "Afegeix nou servei", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 334 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", |
273 | "sidebar.muteApp" : "Desactivar notificacions i à udio", | 335 | "sidebar.muteApp" : "Desactivar notificacions i à udio", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "Configuració", | 338 | "sidebar.settings" : "Configuració", |
276 | "sidebar.unmuteApp" : "Activar notificacions i à udio", | 339 | "sidebar.unmuteApp" : "Activar notificacions i à udio", |
277 | "signup.company.label" : "Empresa", | ||
278 | "signup.email.label" : "Correu electrònic", | 340 | "signup.email.label" : "Correu electrònic", |
279 | "signup.emailDuplicate" : "Ja existeix un usuari amb aquesta adreça de correu electrònic", | 341 | "signup.emailDuplicate" : "Ja existeix un usuari amb aquesta adreça de correu electrònic", |
280 | "signup.firstname.label" : "Nom", | 342 | "signup.firstname.label" : "Nom", |
@@ -296,10 +358,16 @@ | |||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | 358 | "subscription.features.workspaces" : "Organize your services in workspaces", |
297 | "subscription.includedFeatures" : "El compte de pagament Ferdi Premium Supporter inclou", | 359 | "subscription.includedFeatures" : "El compte de pagament Ferdi Premium Supporter inclou", |
298 | "subscription.paymentSessionError" : "No s'ha pogut inicialitzar el formulari de pagament", | 360 | "subscription.paymentSessionError" : "No s'ha pogut inicialitzar el formulari de pagament", |
299 | "subscription.submit.label" : "Vull donar suport al desenvolupament de Franz", | 361 | "subscription.submit.label" : "Vull donar suport al desenvolupament de Ferdi", |
300 | "subscription.type.free" : "gratuït", | 362 | "subscription.type.free" : "gratuït", |
301 | "subscription.type.month" : "mes", | 363 | "subscription.type.month" : "mes", |
302 | "subscription.type.year" : "any", | 364 | "subscription.type.year" : "any", |
365 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", | ||
366 | "subscription.cta.allOptions" : "See all options", | ||
367 | "subscription.cta.choosePlan" : "Choose your plan", | ||
368 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", | ||
369 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", | ||
370 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | ||
303 | "subscriptionPopup.buttonCancel" : "Cancel·la", | 371 | "subscriptionPopup.buttonCancel" : "Cancel·la", |
304 | "subscriptionPopup.buttonDone" : "Fet", | 372 | "subscriptionPopup.buttonDone" : "Fet", |
305 | "tabs.item.deleteService" : "Suprimeix el servei", | 373 | "tabs.item.deleteService" : "Suprimeix el servei", |
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index e36f10d5e..4380df0d8 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Obnovit", | 2 | "app.errorHandler.action" : "Obnovit", |
3 | "app.errorHandler.headline" : "Něco se pokazilo", | 3 | "app.errorHandler.headline" : "Něco se pokazilo", |
4 | "feature.announcements.changelog.headline" : "Změny ve Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Změny ve Franz {version}", |
5 | "feature.delayApp.action" : "PodpoÅ™ Ferdi a zÃskej Supporter licenci", | 5 | "feature.delayApp.headline" : "Kup si Franz Supporter licenci a nebudeÅ¡ už muset Äekat", |
6 | "feature.delayApp.headline" : "Kup si Ferdi Supporter licenci a nebudeÅ¡ už muset Äekat", | 6 | "feature.delayApp.text" : "Franz bude pokraÄovat v {seconds} sekundách.", |
7 | "feature.delayApp.text" : "Ferdi bude pokraÄovat v {seconds} sekundách.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "PodpoÅ™ Franz a zÃskej Supporter licenci", | ||
11 | "feature.delayApp.upgrade.actionShort" : "VylepÅ¡i si svůj úÄet", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Poslat jako e-mail", | 13 | "feature.shareFranz.action.email" : "Poslat jako e-mail", |
9 | "feature.shareFranz.action.facebook" : "SdÃlet na Facebooku", | 14 | "feature.shareFranz.action.facebook" : "SdÃlet na Facebooku", |
10 | "feature.shareFranz.action.twitter" : "SdÃlet na Twitteru", | 15 | "feature.shareFranz.action.twitter" : "SdÃlet na Twitteru", |
11 | "feature.shareFranz.headline" : "Ferdi is better together!", | 16 | "feature.shareFranz.headline" : "SpoleÄnÄ› je Franz jeÅ¡tÄ› lepÅ¡Ã!", |
12 | "feature.shareFranz.shareText.email" : "PÅ™idali jsme {count} služeb do Franze. ZÃskejte zdarma aplikace pro WhatsApp, Messenger, SLack, Skype a dalÅ¡Ã na www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "PÅ™idali jsme {count} služeb do Franze. ZÃskejte zdarma aplikace pro WhatsApp, Messenger, SLack, Skype a dalÅ¡Ã na www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
15 | "global.api.unhealthy" : "Nemůžeme připojit Ferdi k online službám", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Nemůžeme připojit Franz k online službám", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Připojenà k internetu nenà k dispozici.", | 25 | "global.notConnectedToTheInternet" : "Připojenà k internetu nenà k dispozici.", |
17 | "global.spellchecker.useDefault" : "Use System Default ({default})", | 26 | "global.spellchecker.useDefault" : "Use System Default ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 27 | "global.spellchecking.autodetect" : "Detect language automatically", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 28 | "global.spellchecking.autodetect.short" : "Automatic", |
20 | "global.spellchecking.language" : "Oprava překlepů jazyka", | 29 | "global.spellchecking.language" : "Oprava překlepů jazyka", |
21 | "import.headline" : "Importovat služby z Ferdi 4", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Služby nejsou podporovány ve verzi Ferdi 5", | 31 | "import.headline" : "Importovat služby z Franz 4", |
32 | "import.notSupportedHeadline" : "Služby nejsou podporovány ve verzi Franz 5", | ||
23 | "import.skip.label" : "Chci pÅ™idat službu ruÄnÄ›", | 33 | "import.skip.label" : "Chci pÅ™idat službu ruÄnÄ›", |
24 | "import.submit.label" : "Importovat služby", | 34 | "import.submit.label" : "Importovat služby", |
25 | "infobar.buttonChangelog" : "Co je nového?", | 35 | "infobar.buttonChangelog" : "Co je nového?", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Obnovit služby", | 37 | "infobar.buttonReloadServices" : "Obnovit služby", |
28 | "infobar.requiredRequestsFailed" : "Nenà možné nahrát služby a informace o uživateli", | 38 | "infobar.requiredRequestsFailed" : "Nenà možné nahrát služby a informace o uživateli", |
29 | "infobar.servicesUpdated" : "Vaše služby byly aktualizovány", | 39 | "infobar.servicesUpdated" : "Vaše služby byly aktualizovány", |
30 | "infobar.updateAvailable" : "Nová aktualizace Ferdi je k dispozici", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Nová aktualizace Franz je k dispozici", | ||
31 | "invite.email.label" : "E-mailová adresa", | 42 | "invite.email.label" : "E-mailová adresa", |
32 | "invite.headline.friends" : "Pozvěte 3 přátele nebo kolegy", | 43 | "invite.headline.friends" : "Pozvěte 3 přátele nebo kolegy", |
33 | "invite.name.label" : "Jméno", | 44 | "invite.name.label" : "Jméno", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "Sezenà vypršelo, je třeba se znovu přihlásit.", | 54 | "login.serverLogout" : "Sezenà vypršelo, je třeba se znovu přihlásit.", |
44 | "login.submit.label" : "Přihlásit se", | 55 | "login.submit.label" : "Přihlásit se", |
45 | "login.tokenExpired" : "Sezenà vyprÅ¡elo, prosÃm pÅ™ihlaste se znovu", | 56 | "login.tokenExpired" : "Sezenà vyprÅ¡elo, prosÃm pÅ™ihlaste se znovu", |
57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", | ||
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
46 | "menu.app.about" : "O aplikaci", | 59 | "menu.app.about" : "O aplikaci", |
47 | "menu.app.announcement" : "What's new?", | 60 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Zkontrolovat aktualizace", | 61 | "menu.app.checkForUpdates" : "Zkontrolovat aktualizace", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Soubor", | 81 | "menu.file" : "Soubor", |
69 | "menu.help" : "Nápověda", | 82 | "menu.help" : "Nápověda", |
70 | "menu.help.changelog" : "Seznam změn", | 83 | "menu.help.changelog" : "Seznam změn", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "DozvÄ›dÄ›t se vÃce", | 87 | "menu.help.learnMore" : "DozvÄ›dÄ›t se vÃce", |
72 | "menu.help.privacy" : "Prohlášenà o ochranÄ› soukromÃ", | 88 | "menu.help.privacy" : "Prohlášenà o ochranÄ› soukromÃ", |
73 | "menu.help.support" : "Podpora", | 89 | "menu.help.support" : "Podpora", |
@@ -76,6 +92,8 @@ | |||
76 | "menu.services.activatePreviousService" : "Activate previous service", | 92 | "menu.services.activatePreviousService" : "Activate previous service", |
77 | "menu.services.addNewService" : "Přidat novou službu...", | 93 | "menu.services.addNewService" : "Přidat novou službu...", |
78 | "menu.services.setNextServiceActive" : "Activate next service", | 94 | "menu.services.setNextServiceActive" : "Activate next service", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "ZobrazenÃ", | 97 | "menu.view" : "ZobrazenÃ", |
80 | "menu.view.enterFullScreen" : "Spustit režim celé obrazovky", | 98 | "menu.view.enterFullScreen" : "Spustit režim celé obrazovky", |
81 | "menu.view.exitFullScreen" : "UkonÄit celoobrazovkový režim", | 99 | "menu.view.exitFullScreen" : "UkonÄit celoobrazovkový režim", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "Zobrazit Vývojářské nástroje", | 103 | "menu.view.toggleDevTools" : "Zobrazit Vývojářské nástroje", |
86 | "menu.view.toggleFullScreen" : "Přepnout na celou obrazovku", | 104 | "menu.view.toggleFullScreen" : "Přepnout na celou obrazovku", |
87 | "menu.view.toggleServiceDevTools" : "Zobrazit Vývojářské nástroje pro službu", | 105 | "menu.view.toggleServiceDevTools" : "Zobrazit Vývojářské nástroje pro službu", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "PřiblÞit", | 107 | "menu.view.zoomIn" : "PřiblÞit", |
89 | "menu.view.zoomOut" : "Oddálit", | 108 | "menu.view.zoomOut" : "Oddálit", |
90 | "menu.window" : "Okno", | 109 | "menu.window" : "Okno", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Odeslat", | 122 | "password.submit.label" : "Odeslat", |
104 | "password.successInfo" : "ProsÃm, zkontrolujte svůj e-mail", | 123 | "password.successInfo" : "ProsÃm, zkontrolujte svůj e-mail", |
105 | "premiumFeature.button.upgradeAccount" : "VylepÅ¡i si svůj úÄet", | 124 | "premiumFeature.button.upgradeAccount" : "VylepÅ¡i si svůj úÄet", |
106 | "pricing.headline" : "Podpořit Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Nechci podporovat vývoj aplikace Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Chci podpořit vývoj aplikace Franz", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Vyberte váš plán podpory", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "NaÄÃst znovu {name}", | 152 | "service.crashHandler.action" : "NaÄÃst znovu {name}", |
111 | "service.crashHandler.autoReload" : "Pokus o automatické obnovenà {name} za {seconds} sekund", | 153 | "service.crashHandler.autoReload" : "Pokus o automatické obnovenà {name} za {seconds} sekund", |
112 | "service.crashHandler.headline" : "Ale ne!", | 154 | "service.crashHandler.headline" : "Ale ne!", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "Ale ne!", | 160 | "service.errorHandler.headline" : "Ale ne!", |
119 | "service.errorHandler.message" : "Chyba", | 161 | "service.errorHandler.message" : "Chyba", |
120 | "service.errorHandler.text" : "{name} se nepodaÅ™ilo naÄÃst.", | 162 | "service.errorHandler.text" : "{name} se nepodaÅ™ilo naÄÃst.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Loading", | 168 | "service.webviewLoader.loading" : "Loading", |
122 | "services.getStarted" : "ZaÄnÄ›me", | 169 | "services.getStarted" : "ZaÄnÄ›me", |
123 | "services.welcome" : "VÃtejte v programu Franz", | 170 | "services.welcome" : "VÃtejte v programu Ferdi", |
124 | "settings.account.account.editButton" : "Upravit úÄet", | 171 | "settings.account.account.editButton" : "Upravit úÄet", |
125 | "settings.account.accountType.basic" : "Základnà úÄet", | 172 | "settings.account.accountType.basic" : "Základnà úÄet", |
126 | "settings.account.accountType.premium" : "Prémiový úÄet podporovatele", | 173 | "settings.account.accountType.premium" : "Prémiový úÄet podporovatele", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Změnit heslo", | 182 | "settings.account.headlinePassword" : "Změnit heslo", |
136 | "settings.account.headlineProfile" : "Aktualizovat profil", | 183 | "settings.account.headlineProfile" : "Aktualizovat profil", |
137 | "settings.account.headlineSubscription" : "Vaše předplatné", | 184 | "settings.account.headlineSubscription" : "Vaše předplatné", |
138 | "settings.account.headlineUpgrade" : "Aktualizujte svůj úÄet a podpoÅ™te Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Stáhnout", | 187 | "settings.account.invoiceDownload" : "Stáhnout", |
140 | "settings.account.manageSubscription.label" : "Spravovat vaše předplatné", | 188 | "settings.account.manageSubscription.label" : "Spravovat vaše předplatné", |
141 | "settings.account.successInfo" : "Vaše změny byly uloženy", | 189 | "settings.account.successInfo" : "Vaše změny byly uloženy", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Zkusit opět", | 193 | "settings.account.tryReloadServices" : "Zkusit opět", |
143 | "settings.account.tryReloadUserInfoRequest" : "Zkusit znovu", | 194 | "settings.account.tryReloadUserInfoRequest" : "Zkusit znovu", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Nelze naÄÃst informace o uživateli.", | 196 | "settings.account.userInfoRequestFailed" : "Nelze naÄÃst informace o uživateli.", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Vyprázdnit mezipaměti", | 198 | "settings.app.buttonClearAllCache" : "Vyprázdnit mezipaměti", |
146 | "settings.app.buttonInstallUpdate" : "Restartovat a nainstalovat aktualizace", | 199 | "settings.app.buttonInstallUpdate" : "Restartovat a nainstalovat aktualizace", |
147 | "settings.app.buttonSearchForUpdate" : "Zkontrolovat aktualizace", | 200 | "settings.app.buttonSearchForUpdate" : "Zkontrolovat aktualizace", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Připoj se k Temné straně", | 206 | "settings.app.form.darkMode" : "Připoj se k Temné straně", |
154 | "settings.app.form.enableGPUAcceleration" : "Aktivovat GPU zrychlenÃ", | 207 | "settings.app.form.enableGPUAcceleration" : "Aktivovat GPU zrychlenÃ", |
155 | "settings.app.form.enableSpellchecking" : "Zapnout kontrolu pravopisu", | 208 | "settings.app.form.enableSpellchecking" : "Zapnout kontrolu pravopisu", |
156 | "settings.app.form.enableSystemTray" : "Zobrazit Ferdi v systémové liště", | 209 | "settings.app.form.enableSystemTray" : "Zobrazit Franz v systémové liště", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Jazyk", | 212 | "settings.app.form.language" : "Jazyk", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimalizovat Ferdi do systémové lišty", | 213 | "settings.app.form.minimizeToSystemTray" : "Minimalizovat Ferdi do systémové lišty", |
159 | "settings.app.form.runInBackground" : "Ponechat Franze v pozadà pÅ™i zavÃránà okna", | 214 | "settings.app.form.runInBackground" : "Ponechat Franze v pozadà pÅ™i zavÃránà okna", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Pomozte nám přeložit Ferdi do svého jazyka.", | 226 | "settings.app.translationHelp" : "Pomozte nám přeložit Ferdi do svého jazyka.", |
172 | "settings.app.updateStatusAvailable" : "Aktualizace k dispozici, stahovánÃ...", | 227 | "settings.app.updateStatusAvailable" : "Aktualizace k dispozici, stahovánÃ...", |
173 | "settings.app.updateStatusSearching" : "Hledá aktualizace", | 228 | "settings.app.updateStatusSearching" : "Hledá aktualizace", |
174 | "settings.app.updateStatusUpToDate" : "PoužÃváte nejnovÄ›jÅ¡Ã verzi programu Franz", | 229 | "settings.app.updateStatusUpToDate" : "PoužÃváte nejnovÄ›jÅ¡Ã verzi programu Ferdi", |
175 | "settings.invite.headline" : "Pozvi přátele", | 230 | "settings.invite.headline" : "Pozvi přátele", |
176 | "settings.navigation.account" : "ÚÄet", | 231 | "settings.navigation.account" : "ÚÄet", |
177 | "settings.navigation.availableServices" : "Dostupné služby", | 232 | "settings.navigation.availableServices" : "Dostupné služby", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Vaše služby", | 237 | "settings.navigation.yourServices" : "Vaše služby", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Your workspaces", |
184 | "settings.recipes.all" : "Všechny služby", | 239 | "settings.recipes.all" : "Všechny služby", |
185 | "settings.recipes.dev" : "Vývoj", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Dostupné služby", | 247 | "settings.recipes.headline" : "Dostupné služby", |
187 | "settings.recipes.missingService" : "ChybÄ›jÃcà služba?", | 248 | "settings.recipes.missingService" : "ChybÄ›jÃcà služba?", |
188 | "settings.recipes.mostPopular" : "NejpopulárnÄ›jÅ¡Ã", | 249 | "settings.recipes.mostPopular" : "NejpopulárnÄ›jÅ¡Ã", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Přidat novou službu", | 332 | "sidebar.addNewService" : "Přidat novou službu", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 334 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", |
273 | "sidebar.muteApp" : "Vypnout upozorněnà a zvuky", | 335 | "sidebar.muteApp" : "Vypnout upozorněnà a zvuky", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "NastavenÃ", | 338 | "sidebar.settings" : "NastavenÃ", |
276 | "sidebar.unmuteApp" : "Zapnout upozorněnà a zvuky", | 339 | "sidebar.unmuteApp" : "Zapnout upozorněnà a zvuky", |
277 | "signup.company.label" : "SpoleÄnost", | ||
278 | "signup.email.label" : "Emailová adresa", | 340 | "signup.email.label" : "Emailová adresa", |
279 | "signup.emailDuplicate" : "Uživatel s touto emailovou adresou již existuje", | 341 | "signup.emailDuplicate" : "Uživatel s touto emailovou adresou již existuje", |
280 | "signup.firstname.label" : "Jméno", | 342 | "signup.firstname.label" : "Jméno", |
@@ -296,10 +358,16 @@ | |||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | 358 | "subscription.features.workspaces" : "Organize your services in workspaces", |
297 | "subscription.includedFeatures" : "Placený úÄet Premium Supporter Ferdi zahrnuje", | 359 | "subscription.includedFeatures" : "Placený úÄet Premium Supporter Ferdi zahrnuje", |
298 | "subscription.paymentSessionError" : "Nebylo možné inicializovat platbu od", | 360 | "subscription.paymentSessionError" : "Nebylo možné inicializovat platbu od", |
299 | "subscription.submit.label" : "Chci podpořit vývoj aplikace Franz", | 361 | "subscription.submit.label" : "Chci podpořit vývoj aplikace Ferdi", |
300 | "subscription.type.free" : "zdarma", | 362 | "subscription.type.free" : "zdarma", |
301 | "subscription.type.month" : "mÄ›sÃc", | 363 | "subscription.type.month" : "mÄ›sÃc", |
302 | "subscription.type.year" : "rok", | 364 | "subscription.type.year" : "rok", |
365 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", | ||
366 | "subscription.cta.allOptions" : "See all options", | ||
367 | "subscription.cta.choosePlan" : "Choose your plan", | ||
368 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", | ||
369 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", | ||
370 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | ||
303 | "subscriptionPopup.buttonCancel" : "Zrušit", | 371 | "subscriptionPopup.buttonCancel" : "Zrušit", |
304 | "subscriptionPopup.buttonDone" : "DokonÄit", | 372 | "subscriptionPopup.buttonDone" : "DokonÄit", |
305 | "tabs.item.deleteService" : "Odstranit službu", | 373 | "tabs.item.deleteService" : "Odstranit službu", |
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 42cfb9ad1..2908b7dab 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json | |||
@@ -1,23 +1,33 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Neu laden", | 2 | "app.errorHandler.action" : "Neu laden", |
3 | "app.errorHandler.headline" : "Es ist ein Fehler aufgetreten", | 3 | "app.errorHandler.headline" : "Es ist ein Fehler aufgetreten", |
4 | "feature.announcements.changelog.headline" : "Was ist neu in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Was ist neu in Franz {version}", |
5 | "feature.delayApp.action" : "Hol dir Ferdi Premium!", | 5 | "feature.delayApp.headline" : "Erspare dir das Warten mit Franz Premium!", |
6 | "feature.delayApp.headline" : "Erspare dir das Warten mit Ferdi Premium!", | ||
7 | "feature.delayApp.text" : "In {seconds} Sekunden geht's weiter!", | 6 | "feature.delayApp.text" : "In {seconds} Sekunden geht's weiter!", |
7 | "feature.delayApp.trial.action" : "Ja, ich möchte Franz Professional 14 Tage gratis testen", | ||
8 | "feature.delayApp.trial.actionShort" : "Aktiviere die kostenlose Franz Professional Testlizenz", | ||
9 | "feature.delayApp.trial.headline" : "Hol dir die kostenlose Franz Professional Testlizenz und es geht ohne Warten weiter!", | ||
10 | "feature.delayApp.upgrade.action" : "Hol dir Franz Premium!", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Account upgraden", | ||
12 | "feature.serviceLimit.limitReached" : "Du hast {amount} von {limit} in deiner Lizenz inkludierten Services hinzugefügt. Bitte führe ein Upgrade deines Accounts durch, um mehr Services hinzuzufügen.", | ||
8 | "feature.shareFranz.action.email" : "Als E-Mail senden", | 13 | "feature.shareFranz.action.email" : "Als E-Mail senden", |
9 | "feature.shareFranz.action.facebook" : "Auf Facebook teilen", | 14 | "feature.shareFranz.action.facebook" : "Auf Facebook teilen", |
10 | "feature.shareFranz.action.twitter" : "Auf Twitter teilen", | 15 | "feature.shareFranz.action.twitter" : "Auf Twitter teilen", |
11 | "feature.shareFranz.headline" : "Gemeinsam ist Ferdi noch besser!", | 16 | "feature.shareFranz.headline" : "Gemeinsam ist Franz noch besser!", |
12 | "feature.shareFranz.shareText.email" : "Ich habe {count} Services zu Ferdi hinzugefügt! Hol dir jetzt die kostenlose App für WhatsApp, Messenger, Slack, Skype und viele mehr auf www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "Ich habe {count} Services zu Franz hinzugefügt! Hol dir jetzt die kostenlose App für WhatsApp, Messenger, Slack, Skype und viele mehr auf www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "Ich habe {count} Services zu Ferdi hinzugefügt! Hol dir die kostenlose App für WhatsApp, Messenger, Slack, Skype und viele mehr auf www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "Ich habe {count} Services zu Franz hinzugefügt! Hol dir die kostenlose App für WhatsApp, Messenger, Slack, Skype und viele mehr auf www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Bitte erzähle deinen Freunden und Kolleginnen, warum du Ferdi toll findest.", | 19 | "feature.shareFranz.text" : "Bitte erzähle deinen Freunden und Kolleginnen, warum du Franz toll findest.", |
20 | "feature.todos.premium.info" : "Franz ToDos sind jetzt für Premium User verfügbar!", | ||
21 | "feature.todos.premium.rollout" : "Alle anderen müssen sich noch ein wenig gedulden.", | ||
22 | "feature.todos.premium.upgrade" : "Account Upgrade", | ||
15 | "global.api.unhealthy" : "Verbindung zum Franz-Online-Service fehlgeschlagen", | 23 | "global.api.unhealthy" : "Verbindung zum Franz-Online-Service fehlgeschlagen", |
24 | "global.franzProRequired" : "Franz Professional benötigt", | ||
16 | "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.", | 25 | "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.", |
17 | "global.spellchecker.useDefault" : "Standard benutzen ({default})", | 26 | "global.spellchecker.useDefault" : "Standard benutzen ({default})", |
18 | "global.spellchecking.autodetect" : "Sprache automatisch erkennen", | 27 | "global.spellchecking.autodetect" : "Sprache automatisch erkennen", |
19 | "global.spellchecking.autodetect.short" : "Automatisch", | 28 | "global.spellchecking.autodetect.short" : "Automatisch", |
20 | "global.spellchecking.language" : "Sprache für Rechtschreibprüfung", | 29 | "global.spellchecking.language" : "Sprache für Rechtschreibprüfung", |
30 | "global.upgradeButton.upgradeToPro" : "Upgrade zu Franz Professional", | ||
21 | "import.headline" : "Deine Franz-4-Dienste importieren", | 31 | "import.headline" : "Deine Franz-4-Dienste importieren", |
22 | "import.notSupportedHeadline" : "Dienste, die noch nicht von Ferdi 5 unterstützt werden", | 32 | "import.notSupportedHeadline" : "Dienste, die noch nicht von Ferdi 5 unterstützt werden", |
23 | "import.skip.label" : "Ich möchte Dienste selbst hinzufügen", | 33 | "import.skip.label" : "Ich möchte Dienste selbst hinzufügen", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Dienste neu laden", | 37 | "infobar.buttonReloadServices" : "Dienste neu laden", |
28 | "infobar.requiredRequestsFailed" : "Dienste und Benutzerinformationen konnten nicht geladen werden", | 38 | "infobar.requiredRequestsFailed" : "Dienste und Benutzerinformationen konnten nicht geladen werden", |
29 | "infobar.servicesUpdated" : "Deine Dienste wurden aktualisiert.", | 39 | "infobar.servicesUpdated" : "Deine Dienste wurden aktualisiert.", |
30 | "infobar.updateAvailable" : "Eine neue Version von Ferdi ist verfügbar!", | 40 | "infobar.trialActivated" : "Deine kostenlose Testlizenz wurde erfolgreich aktiviert. Viel Spaß!", |
41 | "infobar.updateAvailable" : "Eine neue Version von Franz ist verfügbar!", | ||
31 | "invite.email.label" : "E-Mail-Adresse", | 42 | "invite.email.label" : "E-Mail-Adresse", |
32 | "invite.headline.friends" : "Lade drei Freunde oder Kolleginnen ein!", | 43 | "invite.headline.friends" : "Lade drei Freunde oder Kolleginnen ein!", |
33 | "invite.name.label" : "Name", | 44 | "invite.name.label" : "Name", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an.", | 54 | "login.serverLogout" : "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an.", |
44 | "login.submit.label" : "Anmelden", | 55 | "login.submit.label" : "Anmelden", |
45 | "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an.", | 56 | "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde Dich erneut an.", |
46 | "menu.app.about" : "Über Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "ToDos schließen", |
58 | "menu.Todoss.openTodosDrawer" : "ToDos öffnen", | ||
59 | "menu.app.about" : "Ãœber Ferdi", | ||
47 | "menu.app.announcement" : "Was ist neu?", | 60 | "menu.app.announcement" : "Was ist neu?", |
48 | "menu.app.checkForUpdates" : "Nach Updates suchen", | 61 | "menu.app.checkForUpdates" : "Nach Updates suchen", |
49 | "menu.app.hide" : "Ausblenden", | 62 | "menu.app.hide" : "Ausblenden", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Datei", | 81 | "menu.file" : "Datei", |
69 | "menu.help" : "Hilfe", | 82 | "menu.help" : "Hilfe", |
70 | "menu.help.changelog" : "Changelog", | 83 | "menu.help.changelog" : "Changelog", |
84 | "menu.help.debugInfo" : "Debugging-Information anzeigen", | ||
85 | "menu.help.debugInfoCopiedBody" : "Deine Debugging-Information wurde in die Zwischenablage kopiert.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debugging-Information", | ||
71 | "menu.help.learnMore" : "Mehr erfahren", | 87 | "menu.help.learnMore" : "Mehr erfahren", |
72 | "menu.help.privacy" : "Datenschutzerklärung", | 88 | "menu.help.privacy" : "Datenschutzerklärung", |
73 | "menu.help.support" : "Hilfe", | 89 | "menu.help.support" : "Hilfe", |
@@ -76,6 +92,8 @@ | |||
76 | "menu.services.activatePreviousService" : "Vorheriger Dienst", | 92 | "menu.services.activatePreviousService" : "Vorheriger Dienst", |
77 | "menu.services.addNewService" : "Dienst hinzufügen", | 93 | "menu.services.addNewService" : "Dienst hinzufügen", |
78 | "menu.services.setNextServiceActive" : "Nächster Dienst", | 94 | "menu.services.setNextServiceActive" : "Nächster Dienst", |
95 | "menu.todos" : "ToDos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Darstellung", | 97 | "menu.view" : "Darstellung", |
80 | "menu.view.enterFullScreen" : "Vollbildmodus", | 98 | "menu.view.enterFullScreen" : "Vollbildmodus", |
81 | "menu.view.exitFullScreen" : "Vollbildmodus aus", | 99 | "menu.view.exitFullScreen" : "Vollbildmodus aus", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "Entwicklertools anzeigen", | 103 | "menu.view.toggleDevTools" : "Entwicklertools anzeigen", |
86 | "menu.view.toggleFullScreen" : "Vollbildmodus umschalten", | 104 | "menu.view.toggleFullScreen" : "Vollbildmodus umschalten", |
87 | "menu.view.toggleServiceDevTools" : "Entwicklertools für Dienst anzeigen", | 105 | "menu.view.toggleServiceDevTools" : "Entwicklertools für Dienst anzeigen", |
106 | "menu.view.toggleTodosDevTools" : "ToDos Developer Tools umschalten", | ||
88 | "menu.view.zoomIn" : "Vergrößern", | 107 | "menu.view.zoomIn" : "Vergrößern", |
89 | "menu.view.zoomOut" : "Verkleinern", | 108 | "menu.view.zoomOut" : "Verkleinern", |
90 | "menu.window" : "Fenster", | 109 | "menu.window" : "Fenster", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Absenden", | 122 | "password.submit.label" : "Absenden", |
104 | "password.successInfo" : "Wir haben Dir eine E-Mail mit weiteren Anweisungen geschickt.", | 123 | "password.successInfo" : "Wir haben Dir eine E-Mail mit weiteren Anweisungen geschickt.", |
105 | "premiumFeature.button.upgradeAccount" : "Account upgraden", | 124 | "premiumFeature.button.upgradeAccount" : "Account upgraden", |
106 | "pricing.headline" : "Ferdi unterstützen", | 125 | "pricing.features.adFree" : "Keine Werbung", |
107 | "pricing.link.skipPayment" : "Ich möchte die Entwicklung von Ferdi nicht unterstützen.", | 126 | "pricing.features.appDelays" : "Keine unnötigen Unterbrechungen", |
108 | "pricing.submit.label" : "Ich möchte die Entwicklung von Ferdi unterstützen.", | 127 | "pricing.features.customWebsites" : "Hinzufügen von eigenen Websites", |
109 | "pricing.support.label" : "Wie möchtest Du Ferdi unterstützen?", | 128 | "pricing.features.onPremise" : "On-premise & andere Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Rechtschreibprüfung", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Integration von Services über Drittanbieter", | ||
133 | "pricing.features.unlimitedServices" : "Unbegrenztes hinzufügen von Services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal monatlich", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal jährlich", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional monatlich", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional jährlich", | ||
143 | "pricing.trial.cta.accept" : "Ja, Upgrade zu Franz Professional durchführen", | ||
144 | "pricing.trial.cta.skip" : "Weiter zu Franz!", | ||
145 | "pricing.trial.error" : "Tut uns leid, wir konnten deine kostenlose Testlizenz nicht aktivieren.", | ||
146 | "pricing.trial.features.headline" : "Franz Professional beinhaltet:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Dein persönliches Willkommensangebot:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Deine kostenlose Testlizenz endet automatisch nach 14 Tagen", | ||
150 | "pricing.trial.terms.headline" : "Ohne Bindung, ohne Haken", | ||
151 | "pricing.trial.terms.noCreditCard" : "Keine Kreditkarte notwendig", | ||
110 | "service.crashHandler.action" : "{name} neu laden", | 152 | "service.crashHandler.action" : "{name} neu laden", |
111 | "service.crashHandler.autoReload" : "{name} wird in {seconds} Sekunden automatisch wiederhergestellt", | 153 | "service.crashHandler.autoReload" : "{name} wird in {seconds} Sekunden automatisch wiederhergestellt", |
112 | "service.crashHandler.headline" : "Oh nein!", | 154 | "service.crashHandler.headline" : "Oh nein!", |
@@ -118,6 +160,11 @@ | |||
118 | "service.errorHandler.headline" : "Oh nein!", | 160 | "service.errorHandler.headline" : "Oh nein!", |
119 | "service.errorHandler.message" : "Fehler", | 161 | "service.errorHandler.message" : "Fehler", |
120 | "service.errorHandler.text" : "{name} konnte nicht geladen werden.", | 162 | "service.errorHandler.text" : "{name} konnte nicht geladen werden.", |
163 | "service.restrictedHandler.action" : "Account Upgrade", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional benötigt", | ||
165 | "service.restrictedHandler.customUrl.text" : "Bitte ein Upgrade zu Franz Professional durchführen um benutzerdefinierte URLs und Self Hosted Services verwenden zu können.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "Du hast deine maximale Anzahl an Services erreicht.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Bitte führe eine Upgrade deines Accounts durch um mehr als {count} Services verwenden zu können.", | ||
121 | "service.webviewLoader.loading" : "Lade", | 168 | "service.webviewLoader.loading" : "Lade", |
122 | "services.getStarted" : "Los geht's!", | 169 | "services.getStarted" : "Los geht's!", |
123 | "services.welcome" : "Willkommen bei Franz!", | 170 | "services.welcome" : "Willkommen bei Franz!", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Passwort ändern", | 182 | "settings.account.headlinePassword" : "Passwort ändern", |
136 | "settings.account.headlineProfile" : "Profil aktualisieren", | 183 | "settings.account.headlineProfile" : "Profil aktualisieren", |
137 | "settings.account.headlineSubscription" : "Dein Abonnement", | 184 | "settings.account.headlineSubscription" : "Dein Abonnement", |
138 | "settings.account.headlineUpgrade" : "Dein Konto upgraden & Ferdi unterstützen", | 185 | "settings.account.headlineTrialUpgrade" : "Hol dir die kostenlose 14-tägige Franz Professional Testlizenz!", |
186 | "settings.account.headlineUpgradeAccount" : "Hol dir ein Upgrade deines Accounts und bekomme alle Features von Franz!", | ||
139 | "settings.account.invoiceDownload" : "Herunterladen", | 187 | "settings.account.invoiceDownload" : "Herunterladen", |
140 | "settings.account.manageSubscription.label" : "Dein Abonnement verwalten", | 188 | "settings.account.manageSubscription.label" : "Dein Abonnement verwalten", |
141 | "settings.account.successInfo" : "Deine Änderungen wurden gespeichert", | 189 | "settings.account.successInfo" : "Deine Änderungen wurden gespeichert", |
190 | "settings.account.trial" : "Kostenlose Testlizenz", | ||
191 | "settings.account.trialEndsIn" : "Deine kostenlose Testlizenz endet in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Bitte aktualisiere deine Zahlungsinformation damit du {license} nach der kostenlosen Testphase weiter nutzen kannst.", | ||
142 | "settings.account.tryReloadServices" : "Erneut versuchen", | 193 | "settings.account.tryReloadServices" : "Erneut versuchen", |
143 | "settings.account.tryReloadUserInfoRequest" : "Erneut versuchen", | 194 | "settings.account.tryReloadUserInfoRequest" : "Erneut versuchen", |
195 | "settings.account.upgradeToPro.label" : "Upgrade zu Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Benutzerinformationen konnten nicht geladen werden", | 196 | "settings.account.userInfoRequestFailed" : "Benutzerinformationen konnten nicht geladen werden", |
197 | "settings.account.yourLicense" : "Deine Franz Lizenz", | ||
145 | "settings.app.buttonClearAllCache" : "Cache leeren", | 198 | "settings.app.buttonClearAllCache" : "Cache leeren", |
146 | "settings.app.buttonInstallUpdate" : "Neu starten & Update installieren", | 199 | "settings.app.buttonInstallUpdate" : "Neu starten & Update installieren", |
147 | "settings.app.buttonSearchForUpdate" : "Nach Updates suchen", | 200 | "settings.app.buttonSearchForUpdate" : "Nach Updates suchen", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Die dunkle Seite erwartet dich! (Dark Mode)", | 206 | "settings.app.form.darkMode" : "Die dunkle Seite erwartet dich! (Dark Mode)", |
154 | "settings.app.form.enableGPUAcceleration" : "Hardwarebeschleunigung aktivieren", | 207 | "settings.app.form.enableGPUAcceleration" : "Hardwarebeschleunigung aktivieren", |
155 | "settings.app.form.enableSpellchecking" : "Rechtschreibprüfung aktivieren", | 208 | "settings.app.form.enableSpellchecking" : "Rechtschreibprüfung aktivieren", |
156 | "settings.app.form.enableSystemTray" : "Ferdi im Infobereich anzeigen", | 209 | "settings.app.form.enableSystemTray" : "Franz im Infobereich anzeigen", |
210 | "settings.app.form.enableTodos" : "Franz Todos aktivieren", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Sprache", | 212 | "settings.app.form.language" : "Sprache", |
158 | "settings.app.form.minimizeToSystemTray" : "Ferdi in den Infobereich minimieren", | 213 | "settings.app.form.minimizeToSystemTray" : "Ferdi in den Infobereich minimieren", |
159 | "settings.app.form.runInBackground" : "Ferdi im Hintergrund behalten, wenn das Fenster geschlossen wird", | 214 | "settings.app.form.runInBackground" : "Ferdi im Hintergrund behalten, wenn das Fenster geschlossen wird", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Hilf uns, Ferdi in Deine Sprache zu übersetzen.", | 226 | "settings.app.translationHelp" : "Hilf uns, Ferdi in Deine Sprache zu übersetzen.", |
172 | "settings.app.updateStatusAvailable" : "Update verfügbar, lädt herunter ...", | 227 | "settings.app.updateStatusAvailable" : "Update verfügbar, lädt herunter ...", |
173 | "settings.app.updateStatusSearching" : "Suche nach Updates", | 228 | "settings.app.updateStatusSearching" : "Suche nach Updates", |
174 | "settings.app.updateStatusUpToDate" : "Du nutzt die aktuellste Version von Franz", | 229 | "settings.app.updateStatusUpToDate" : "Du nutzt die aktuellste Version von Ferdi", |
175 | "settings.invite.headline" : "Lade drei Deiner Freunde ein", | 230 | "settings.invite.headline" : "Lade drei Deiner Freunde ein", |
176 | "settings.navigation.account" : "Konto", | 231 | "settings.navigation.account" : "Konto", |
177 | "settings.navigation.availableServices" : "Verfügbare Dienste", | 232 | "settings.navigation.availableServices" : "Verfügbare Dienste", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Deine Dienste", | 237 | "settings.navigation.yourServices" : "Deine Dienste", |
183 | "settings.navigation.yourWorkspaces" : "Deine Workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Deine Workspaces", |
184 | "settings.recipes.all" : "Alle Dienste", | 239 | "settings.recipes.all" : "Alle Dienste", |
185 | "settings.recipes.dev" : "Entwicklung", | 240 | "settings.recipes.custom" : "Eigene Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Benutzerdefinierte Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Eigene Recipes", | ||
244 | "settings.recipes.customService.intro" : "Um ein benutzerdefiniertes Service hinzuzufügen, kopiere das Service Recipe nach:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Entwicklerdokumentation", | ||
246 | "settings.recipes.customService.openFolder" : "Ordner öffnen", | ||
186 | "settings.recipes.headline" : "Verfügbare Dienste", | 247 | "settings.recipes.headline" : "Verfügbare Dienste", |
187 | "settings.recipes.missingService" : "Fehlt ein Dienst?", | 248 | "settings.recipes.missingService" : "Fehlt ein Dienst?", |
188 | "settings.recipes.mostPopular" : "Am beliebtesten", | 249 | "settings.recipes.mostPopular" : "Am beliebtesten", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Mit Ferdi Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her. Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Mit Ferdi Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her. Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Workspaces konnte nicht geladen werden", | 331 | "settings.workspaces.workspacesRequestFailed" : "Workspaces konnte nicht geladen werden", |
271 | "sidebar.addNewService" : "Neuen Dienst hinzufügen", | 332 | "sidebar.addNewService" : "Neuen Dienst hinzufügen", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Workspaces schließen", | 334 | "sidebar.closeWorkspaceDrawer" : "Workspaces schließen", |
273 | "sidebar.muteApp" : "Benachrichtigungen & Audio deaktivieren", | 335 | "sidebar.muteApp" : "Benachrichtigungen & Audio deaktivieren", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Workspaces öffnen", | 337 | "sidebar.openWorkspaceDrawer" : "Workspaces öffnen", |
275 | "sidebar.settings" : "Einstellungen", | 338 | "sidebar.settings" : "Einstellungen", |
276 | "sidebar.unmuteApp" : "Benachrichtigungen & Audio aktivieren", | 339 | "sidebar.unmuteApp" : "Benachrichtigungen & Audio aktivieren", |
277 | "signup.company.label" : "Firma", | ||
278 | "signup.email.label" : "E-Mail-Adresse", | 340 | "signup.email.label" : "E-Mail-Adresse", |
279 | "signup.emailDuplicate" : "Es existiert bereits ein Benutzer mit dieser E-Mail Adresse.", | 341 | "signup.emailDuplicate" : "Es existiert bereits ein Benutzer mit dieser E-Mail Adresse.", |
280 | "signup.firstname.label" : "Vorname", | 342 | "signup.firstname.label" : "Vorname", |
@@ -300,6 +362,12 @@ | |||
300 | "subscription.type.free" : "kostenlos", | 362 | "subscription.type.free" : "kostenlos", |
301 | "subscription.type.month" : "Monat", | 363 | "subscription.type.month" : "Monat", |
302 | "subscription.type.year" : "Jahr", | 364 | "subscription.type.year" : "Jahr", |
365 | "subscription.cta.activateTrial" : "Ja, kostenlose Franz Professional Testlizenz starten", | ||
366 | "subscription.cta.allOptions" : "Alle Optionen anzeigen", | ||
367 | "subscription.cta.choosePlan" : "Wähle deine Lizenz", | ||
368 | "subscription.includedProFeatures" : "Die Franz Professional Lizenz beinhaltet:", | ||
369 | "subscription.teaser.includedFeatures" : "Bezahlte Franz Lizenzen beinhalten:", | ||
370 | "subscription.teaser.intro" : "Franz 5 ist voll gepackt mit vielen neuen Features, damit du für jegliche kommunikative Eventualität gerüstet bist. Nimm dir was du brauchst und leg los!", | ||
303 | "subscriptionPopup.buttonCancel" : "Abbrechen", | 371 | "subscriptionPopup.buttonCancel" : "Abbrechen", |
304 | "subscriptionPopup.buttonDone" : "Fertig", | 372 | "subscriptionPopup.buttonDone" : "Fertig", |
305 | "tabs.item.deleteService" : "Dienst löschen", | 373 | "tabs.item.deleteService" : "Dienst löschen", |
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 7d0e075cc..8e74c0705 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -443,55 +443,120 @@ | |||
443 | { | 443 | { |
444 | "descriptors": [ | 444 | "descriptors": [ |
445 | { | 445 | { |
446 | "defaultMessage": "!!!Support Ferdi", | 446 | "defaultMessage": "!!!Franz Professional", |
447 | "end": { | 447 | "end": { |
448 | "column": 3, | 448 | "column": 3, |
449 | "line": 16 | 449 | "line": 18 |
450 | }, | 450 | }, |
451 | "file": "src/components/auth/Pricing.js", | 451 | "file": "src/components/auth/Pricing.js", |
452 | "id": "pricing.headline", | 452 | "id": "pricing.trial.headline", |
453 | "start": { | 453 | "start": { |
454 | "column": 12, | 454 | "column": 12, |
455 | "line": 13 | 455 | "line": 15 |
456 | } | 456 | } |
457 | }, | 457 | }, |
458 | { | 458 | { |
459 | "defaultMessage": "!!!Select your support plan", | 459 | "defaultMessage": "!!!Your personal welcome offer:", |
460 | "end": { | 460 | "end": { |
461 | "column": 3, | 461 | "column": 3, |
462 | "line": 20 | 462 | "line": 22 |
463 | }, | 463 | }, |
464 | "file": "src/components/auth/Pricing.js", | 464 | "file": "src/components/auth/Pricing.js", |
465 | "id": "pricing.support.label", | 465 | "id": "pricing.trial.subheadline", |
466 | "start": { | 466 | "start": { |
467 | "column": 23, | 467 | "column": 17, |
468 | "line": 17 | 468 | "line": 19 |
469 | } | 469 | } |
470 | }, | 470 | }, |
471 | { | 471 | { |
472 | "defaultMessage": "!!!Support the development of Ferdi", | 472 | "defaultMessage": "!!!No strings attached", |
473 | "end": { | 473 | "end": { |
474 | "column": 3, | 474 | "column": 3, |
475 | "line": 24 | 475 | "line": 26 |
476 | }, | ||
477 | "file": "src/components/auth/Pricing.js", | ||
478 | "id": "pricing.trial.terms.headline", | ||
479 | "start": { | ||
480 | "column": 29, | ||
481 | "line": 23 | ||
482 | } | ||
483 | }, | ||
484 | { | ||
485 | "defaultMessage": "!!!No credit card required", | ||
486 | "end": { | ||
487 | "column": 3, | ||
488 | "line": 30 | ||
489 | }, | ||
490 | "file": "src/components/auth/Pricing.js", | ||
491 | "id": "pricing.trial.terms.noCreditCard", | ||
492 | "start": { | ||
493 | "column": 16, | ||
494 | "line": 27 | ||
495 | } | ||
496 | }, | ||
497 | { | ||
498 | "defaultMessage": "!!!Your free trial ends automatically after 14 days", | ||
499 | "end": { | ||
500 | "column": 3, | ||
501 | "line": 34 | ||
476 | }, | 502 | }, |
477 | "file": "src/components/auth/Pricing.js", | 503 | "file": "src/components/auth/Pricing.js", |
478 | "id": "pricing.submit.label", | 504 | "id": "pricing.trial.terms.automaticTrialEnd", |
479 | "start": { | 505 | "start": { |
480 | "column": 21, | 506 | "column": 21, |
481 | "line": 21 | 507 | "line": 31 |
482 | } | 508 | } |
483 | }, | 509 | }, |
484 | { | 510 | { |
485 | "defaultMessage": "!!!I don't want to support the development of Ferdi.", | 511 | "defaultMessage": "!!!Sorry, we could not activate your trial!", |
486 | "end": { | 512 | "end": { |
487 | "column": 3, | 513 | "column": 3, |
488 | "line": 28 | 514 | "line": 38 |
489 | }, | 515 | }, |
490 | "file": "src/components/auth/Pricing.js", | 516 | "file": "src/components/auth/Pricing.js", |
491 | "id": "pricing.link.skipPayment", | 517 | "id": "pricing.trial.error", |
492 | "start": { | 518 | "start": { |
493 | "column": 15, | 519 | "column": 19, |
494 | "line": 25 | 520 | "line": 35 |
521 | } | ||
522 | }, | ||
523 | { | ||
524 | "defaultMessage": "!!!Yes, upgrade my account to Franz Professional", | ||
525 | "end": { | ||
526 | "column": 3, | ||
527 | "line": 42 | ||
528 | }, | ||
529 | "file": "src/components/auth/Pricing.js", | ||
530 | "id": "pricing.trial.cta.accept", | ||
531 | "start": { | ||
532 | "column": 13, | ||
533 | "line": 39 | ||
534 | } | ||
535 | }, | ||
536 | { | ||
537 | "defaultMessage": "!!!Continue to Ferdi", | ||
538 | "end": { | ||
539 | "column": 3, | ||
540 | "line": 46 | ||
541 | }, | ||
542 | "file": "src/components/auth/Pricing.js", | ||
543 | "id": "pricing.trial.cta.skip", | ||
544 | "start": { | ||
545 | "column": 11, | ||
546 | "line": 43 | ||
547 | } | ||
548 | }, | ||
549 | { | ||
550 | "defaultMessage": "!!!Franz Professional includes:", | ||
551 | "end": { | ||
552 | "column": 3, | ||
553 | "line": 50 | ||
554 | }, | ||
555 | "file": "src/components/auth/Pricing.js", | ||
556 | "id": "pricing.trial.features.headline", | ||
557 | "start": { | ||
558 | "column": 20, | ||
559 | "line": 47 | ||
495 | } | 560 | } |
496 | } | 561 | } |
497 | ], | 562 | ], |
@@ -503,156 +568,143 @@ | |||
503 | "defaultMessage": "!!!Sign up", | 568 | "defaultMessage": "!!!Sign up", |
504 | "end": { | 569 | "end": { |
505 | "column": 3, | 570 | "column": 3, |
506 | "line": 21 | 571 | "line": 20 |
507 | }, | 572 | }, |
508 | "file": "src/components/auth/Signup.js", | 573 | "file": "src/components/auth/Signup.js", |
509 | "id": "signup.headline", | 574 | "id": "signup.headline", |
510 | "start": { | 575 | "start": { |
511 | "column": 12, | 576 | "column": 12, |
512 | "line": 18 | 577 | "line": 17 |
513 | } | 578 | } |
514 | }, | 579 | }, |
515 | { | 580 | { |
516 | "defaultMessage": "!!!Firstname", | 581 | "defaultMessage": "!!!Firstname", |
517 | "end": { | 582 | "end": { |
518 | "column": 3, | 583 | "column": 3, |
519 | "line": 25 | 584 | "line": 24 |
520 | }, | 585 | }, |
521 | "file": "src/components/auth/Signup.js", | 586 | "file": "src/components/auth/Signup.js", |
522 | "id": "signup.firstname.label", | 587 | "id": "signup.firstname.label", |
523 | "start": { | 588 | "start": { |
524 | "column": 18, | 589 | "column": 18, |
525 | "line": 22 | 590 | "line": 21 |
526 | } | 591 | } |
527 | }, | 592 | }, |
528 | { | 593 | { |
529 | "defaultMessage": "!!!Lastname", | 594 | "defaultMessage": "!!!Lastname", |
530 | "end": { | 595 | "end": { |
531 | "column": 3, | 596 | "column": 3, |
532 | "line": 29 | 597 | "line": 28 |
533 | }, | 598 | }, |
534 | "file": "src/components/auth/Signup.js", | 599 | "file": "src/components/auth/Signup.js", |
535 | "id": "signup.lastname.label", | 600 | "id": "signup.lastname.label", |
536 | "start": { | 601 | "start": { |
537 | "column": 17, | 602 | "column": 17, |
538 | "line": 26 | 603 | "line": 25 |
539 | } | 604 | } |
540 | }, | 605 | }, |
541 | { | 606 | { |
542 | "defaultMessage": "!!!Email address", | 607 | "defaultMessage": "!!!Email address", |
543 | "end": { | 608 | "end": { |
544 | "column": 3, | 609 | "column": 3, |
545 | "line": 33 | 610 | "line": 32 |
546 | }, | 611 | }, |
547 | "file": "src/components/auth/Signup.js", | 612 | "file": "src/components/auth/Signup.js", |
548 | "id": "signup.email.label", | 613 | "id": "signup.email.label", |
549 | "start": { | 614 | "start": { |
550 | "column": 14, | 615 | "column": 14, |
551 | "line": 30 | 616 | "line": 29 |
552 | } | ||
553 | }, | ||
554 | { | ||
555 | "defaultMessage": "!!!Company", | ||
556 | "end": { | ||
557 | "column": 3, | ||
558 | "line": 37 | ||
559 | }, | ||
560 | "file": "src/components/auth/Signup.js", | ||
561 | "id": "signup.company.label", | ||
562 | "start": { | ||
563 | "column": 16, | ||
564 | "line": 34 | ||
565 | } | 617 | } |
566 | }, | 618 | }, |
567 | { | 619 | { |
568 | "defaultMessage": "!!!Password", | 620 | "defaultMessage": "!!!Password", |
569 | "end": { | 621 | "end": { |
570 | "column": 3, | 622 | "column": 3, |
571 | "line": 41 | 623 | "line": 40 |
572 | }, | 624 | }, |
573 | "file": "src/components/auth/Signup.js", | 625 | "file": "src/components/auth/Signup.js", |
574 | "id": "signup.password.label", | 626 | "id": "signup.password.label", |
575 | "start": { | 627 | "start": { |
576 | "column": 17, | 628 | "column": 17, |
577 | "line": 38 | 629 | "line": 37 |
578 | } | 630 | } |
579 | }, | 631 | }, |
580 | { | 632 | { |
581 | "defaultMessage": "!!!By creating a Ferdi account you accept the", | 633 | "defaultMessage": "!!!By creating a Ferdi account you accept the", |
582 | "end": { | 634 | "end": { |
583 | "column": 3, | 635 | "column": 3, |
584 | "line": 45 | 636 | "line": 44 |
585 | }, | 637 | }, |
586 | "file": "src/components/auth/Signup.js", | 638 | "file": "src/components/auth/Signup.js", |
587 | "id": "signup.legal.info", | 639 | "id": "signup.legal.info", |
588 | "start": { | 640 | "start": { |
589 | "column": 13, | 641 | "column": 13, |
590 | "line": 42 | 642 | "line": 41 |
591 | } | 643 | } |
592 | }, | 644 | }, |
593 | { | 645 | { |
594 | "defaultMessage": "!!!Terms of service", | 646 | "defaultMessage": "!!!Terms of service", |
595 | "end": { | 647 | "end": { |
596 | "column": 3, | 648 | "column": 3, |
597 | "line": 49 | 649 | "line": 48 |
598 | }, | 650 | }, |
599 | "file": "src/components/auth/Signup.js", | 651 | "file": "src/components/auth/Signup.js", |
600 | "id": "signup.legal.terms", | 652 | "id": "signup.legal.terms", |
601 | "start": { | 653 | "start": { |
602 | "column": 9, | 654 | "column": 9, |
603 | "line": 46 | 655 | "line": 45 |
604 | } | 656 | } |
605 | }, | 657 | }, |
606 | { | 658 | { |
607 | "defaultMessage": "!!!Privacy Statement", | 659 | "defaultMessage": "!!!Privacy Statement", |
608 | "end": { | 660 | "end": { |
609 | "column": 3, | 661 | "column": 3, |
610 | "line": 53 | 662 | "line": 52 |
611 | }, | 663 | }, |
612 | "file": "src/components/auth/Signup.js", | 664 | "file": "src/components/auth/Signup.js", |
613 | "id": "signup.legal.privacy", | 665 | "id": "signup.legal.privacy", |
614 | "start": { | 666 | "start": { |
615 | "column": 11, | 667 | "column": 11, |
616 | "line": 50 | 668 | "line": 49 |
617 | } | 669 | } |
618 | }, | 670 | }, |
619 | { | 671 | { |
620 | "defaultMessage": "!!!Create account", | 672 | "defaultMessage": "!!!Create account", |
621 | "end": { | 673 | "end": { |
622 | "column": 3, | 674 | "column": 3, |
623 | "line": 57 | 675 | "line": 56 |
624 | }, | 676 | }, |
625 | "file": "src/components/auth/Signup.js", | 677 | "file": "src/components/auth/Signup.js", |
626 | "id": "signup.submit.label", | 678 | "id": "signup.submit.label", |
627 | "start": { | 679 | "start": { |
628 | "column": 21, | 680 | "column": 21, |
629 | "line": 54 | 681 | "line": 53 |
630 | } | 682 | } |
631 | }, | 683 | }, |
632 | { | 684 | { |
633 | "defaultMessage": "!!!Already have an account, sign in?", | 685 | "defaultMessage": "!!!Already have an account, sign in?", |
634 | "end": { | 686 | "end": { |
635 | "column": 3, | 687 | "column": 3, |
636 | "line": 61 | 688 | "line": 60 |
637 | }, | 689 | }, |
638 | "file": "src/components/auth/Signup.js", | 690 | "file": "src/components/auth/Signup.js", |
639 | "id": "signup.link.login", | 691 | "id": "signup.link.login", |
640 | "start": { | 692 | "start": { |
641 | "column": 13, | 693 | "column": 13, |
642 | "line": 58 | 694 | "line": 57 |
643 | } | 695 | } |
644 | }, | 696 | }, |
645 | { | 697 | { |
646 | "defaultMessage": "!!!A user with that email address already exists", | 698 | "defaultMessage": "!!!A user with that email address already exists", |
647 | "end": { | 699 | "end": { |
648 | "column": 3, | 700 | "column": 3, |
649 | "line": 65 | 701 | "line": 64 |
650 | }, | 702 | }, |
651 | "file": "src/components/auth/Signup.js", | 703 | "file": "src/components/auth/Signup.js", |
652 | "id": "signup.emailDuplicate", | 704 | "id": "signup.emailDuplicate", |
653 | "start": { | 705 | "start": { |
654 | "column": 18, | 706 | "column": 18, |
655 | "line": 62 | 707 | "line": 61 |
656 | } | 708 | } |
657 | } | 709 | } |
658 | ], | 710 | ], |
@@ -695,52 +747,52 @@ | |||
695 | "defaultMessage": "!!!Your services have been updated.", | 747 | "defaultMessage": "!!!Your services have been updated.", |
696 | "end": { | 748 | "end": { |
697 | "column": 3, | 749 | "column": 3, |
698 | "line": 28 | 750 | "line": 30 |
699 | }, | 751 | }, |
700 | "file": "src/components/layout/AppLayout.js", | 752 | "file": "src/components/layout/AppLayout.js", |
701 | "id": "infobar.servicesUpdated", | 753 | "id": "infobar.servicesUpdated", |
702 | "start": { | 754 | "start": { |
703 | "column": 19, | 755 | "column": 19, |
704 | "line": 25 | 756 | "line": 27 |
705 | } | 757 | } |
706 | }, | 758 | }, |
707 | { | 759 | { |
708 | "defaultMessage": "!!!Reload services", | 760 | "defaultMessage": "!!!Reload services", |
709 | "end": { | 761 | "end": { |
710 | "column": 3, | 762 | "column": 3, |
711 | "line": 32 | 763 | "line": 34 |
712 | }, | 764 | }, |
713 | "file": "src/components/layout/AppLayout.js", | 765 | "file": "src/components/layout/AppLayout.js", |
714 | "id": "infobar.buttonReloadServices", | 766 | "id": "infobar.buttonReloadServices", |
715 | "start": { | 767 | "start": { |
716 | "column": 24, | 768 | "column": 24, |
717 | "line": 29 | 769 | "line": 31 |
718 | } | 770 | } |
719 | }, | 771 | }, |
720 | { | 772 | { |
721 | "defaultMessage": "!!!Could not load services and user information", | 773 | "defaultMessage": "!!!Could not load services and user information", |
722 | "end": { | 774 | "end": { |
723 | "column": 3, | 775 | "column": 3, |
724 | "line": 36 | 776 | "line": 38 |
725 | }, | 777 | }, |
726 | "file": "src/components/layout/AppLayout.js", | 778 | "file": "src/components/layout/AppLayout.js", |
727 | "id": "infobar.requiredRequestsFailed", | 779 | "id": "infobar.requiredRequestsFailed", |
728 | "start": { | 780 | "start": { |
729 | "column": 26, | 781 | "column": 26, |
730 | "line": 33 | 782 | "line": 35 |
731 | } | 783 | } |
732 | }, | 784 | }, |
733 | { | 785 | { |
734 | "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", | 786 | "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", |
735 | "end": { | 787 | "end": { |
736 | "column": 3, | 788 | "column": 3, |
737 | "line": 40 | 789 | "line": 42 |
738 | }, | 790 | }, |
739 | "file": "src/components/layout/AppLayout.js", | 791 | "file": "src/components/layout/AppLayout.js", |
740 | "id": "infobar.authRequestFailed", | 792 | "id": "infobar.authRequestFailed", |
741 | "start": { | 793 | "start": { |
742 | "column": 21, | 794 | "column": 21, |
743 | "line": 37 | 795 | "line": 39 |
744 | } | 796 | } |
745 | } | 797 | } |
746 | ], | 798 | ], |
@@ -752,78 +804,104 @@ | |||
752 | "defaultMessage": "!!!Settings", | 804 | "defaultMessage": "!!!Settings", |
753 | "end": { | 805 | "end": { |
754 | "column": 3, | 806 | "column": 3, |
755 | "line": 16 | 807 | "line": 18 |
756 | }, | 808 | }, |
757 | "file": "src/components/layout/Sidebar.js", | 809 | "file": "src/components/layout/Sidebar.js", |
758 | "id": "sidebar.settings", | 810 | "id": "sidebar.settings", |
759 | "start": { | 811 | "start": { |
760 | "column": 12, | 812 | "column": 12, |
761 | "line": 13 | 813 | "line": 15 |
762 | } | 814 | } |
763 | }, | 815 | }, |
764 | { | 816 | { |
765 | "defaultMessage": "!!!Add new service", | 817 | "defaultMessage": "!!!Add new service", |
766 | "end": { | 818 | "end": { |
767 | "column": 3, | 819 | "column": 3, |
768 | "line": 20 | 820 | "line": 22 |
769 | }, | 821 | }, |
770 | "file": "src/components/layout/Sidebar.js", | 822 | "file": "src/components/layout/Sidebar.js", |
771 | "id": "sidebar.addNewService", | 823 | "id": "sidebar.addNewService", |
772 | "start": { | 824 | "start": { |
773 | "column": 17, | 825 | "column": 17, |
774 | "line": 17 | 826 | "line": 19 |
775 | } | 827 | } |
776 | }, | 828 | }, |
777 | { | 829 | { |
778 | "defaultMessage": "!!!Disable notifications & audio", | 830 | "defaultMessage": "!!!Disable notifications & audio", |
779 | "end": { | 831 | "end": { |
780 | "column": 3, | 832 | "column": 3, |
781 | "line": 24 | 833 | "line": 26 |
782 | }, | 834 | }, |
783 | "file": "src/components/layout/Sidebar.js", | 835 | "file": "src/components/layout/Sidebar.js", |
784 | "id": "sidebar.muteApp", | 836 | "id": "sidebar.muteApp", |
785 | "start": { | 837 | "start": { |
786 | "column": 8, | 838 | "column": 8, |
787 | "line": 21 | 839 | "line": 23 |
788 | } | 840 | } |
789 | }, | 841 | }, |
790 | { | 842 | { |
791 | "defaultMessage": "!!!Enable notifications & audio", | 843 | "defaultMessage": "!!!Enable notifications & audio", |
792 | "end": { | 844 | "end": { |
793 | "column": 3, | 845 | "column": 3, |
794 | "line": 28 | 846 | "line": 30 |
795 | }, | 847 | }, |
796 | "file": "src/components/layout/Sidebar.js", | 848 | "file": "src/components/layout/Sidebar.js", |
797 | "id": "sidebar.unmuteApp", | 849 | "id": "sidebar.unmuteApp", |
798 | "start": { | 850 | "start": { |
799 | "column": 10, | 851 | "column": 10, |
800 | "line": 25 | 852 | "line": 27 |
801 | } | 853 | } |
802 | }, | 854 | }, |
803 | { | 855 | { |
804 | "defaultMessage": "!!!Open workspace drawer", | 856 | "defaultMessage": "!!!Open workspace drawer", |
805 | "end": { | 857 | "end": { |
806 | "column": 3, | 858 | "column": 3, |
807 | "line": 32 | 859 | "line": 34 |
808 | }, | 860 | }, |
809 | "file": "src/components/layout/Sidebar.js", | 861 | "file": "src/components/layout/Sidebar.js", |
810 | "id": "sidebar.openWorkspaceDrawer", | 862 | "id": "sidebar.openWorkspaceDrawer", |
811 | "start": { | 863 | "start": { |
812 | "column": 23, | 864 | "column": 23, |
813 | "line": 29 | 865 | "line": 31 |
814 | } | 866 | } |
815 | }, | 867 | }, |
816 | { | 868 | { |
817 | "defaultMessage": "!!!Close workspace drawer", | 869 | "defaultMessage": "!!!Close workspace drawer", |
818 | "end": { | 870 | "end": { |
819 | "column": 3, | 871 | "column": 3, |
820 | "line": 36 | 872 | "line": 38 |
821 | }, | 873 | }, |
822 | "file": "src/components/layout/Sidebar.js", | 874 | "file": "src/components/layout/Sidebar.js", |
823 | "id": "sidebar.closeWorkspaceDrawer", | 875 | "id": "sidebar.closeWorkspaceDrawer", |
824 | "start": { | 876 | "start": { |
825 | "column": 24, | 877 | "column": 24, |
826 | "line": 33 | 878 | "line": 35 |
879 | } | ||
880 | }, | ||
881 | { | ||
882 | "defaultMessage": "!!!Open Franz Todos", | ||
883 | "end": { | ||
884 | "column": 3, | ||
885 | "line": 42 | ||
886 | }, | ||
887 | "file": "src/components/layout/Sidebar.js", | ||
888 | "id": "sidebar.openTodosDrawer", | ||
889 | "start": { | ||
890 | "column": 19, | ||
891 | "line": 39 | ||
892 | } | ||
893 | }, | ||
894 | { | ||
895 | "defaultMessage": "!!!Close Franz Todos", | ||
896 | "end": { | ||
897 | "column": 3, | ||
898 | "line": 46 | ||
899 | }, | ||
900 | "file": "src/components/layout/Sidebar.js", | ||
901 | "id": "sidebar.closeTodosDrawer", | ||
902 | "start": { | ||
903 | "column": 20, | ||
904 | "line": 43 | ||
827 | } | 905 | } |
828 | } | 906 | } |
829 | ], | 907 | ], |
@@ -933,55 +1011,125 @@ | |||
933 | { | 1011 | { |
934 | "descriptors": [ | 1012 | "descriptors": [ |
935 | { | 1013 | { |
936 | "defaultMessage": "!!!Welcome to Ferdi", | 1014 | "defaultMessage": "!!!You have reached your service limit.", |
937 | "end": { | 1015 | "end": { |
938 | "column": 3, | 1016 | "column": 3, |
939 | "line": 14 | 1017 | "line": 14 |
940 | }, | 1018 | }, |
1019 | "file": "src/components/services/content/ServiceRestricted.js", | ||
1020 | "id": "service.restrictedHandler.serviceLimit.headline", | ||
1021 | "start": { | ||
1022 | "column": 24, | ||
1023 | "line": 11 | ||
1024 | } | ||
1025 | }, | ||
1026 | { | ||
1027 | "defaultMessage": "!!!Please upgrade your account to use more than {count} services.", | ||
1028 | "end": { | ||
1029 | "column": 3, | ||
1030 | "line": 18 | ||
1031 | }, | ||
1032 | "file": "src/components/services/content/ServiceRestricted.js", | ||
1033 | "id": "service.restrictedHandler.serviceLimit.text", | ||
1034 | "start": { | ||
1035 | "column": 20, | ||
1036 | "line": 15 | ||
1037 | } | ||
1038 | }, | ||
1039 | { | ||
1040 | "defaultMessage": "!!!Franz Professional Plan required", | ||
1041 | "end": { | ||
1042 | "column": 3, | ||
1043 | "line": 22 | ||
1044 | }, | ||
1045 | "file": "src/components/services/content/ServiceRestricted.js", | ||
1046 | "id": "service.restrictedHandler.customUrl.headline", | ||
1047 | "start": { | ||
1048 | "column": 21, | ||
1049 | "line": 19 | ||
1050 | } | ||
1051 | }, | ||
1052 | { | ||
1053 | "defaultMessage": "!!!Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
1054 | "end": { | ||
1055 | "column": 3, | ||
1056 | "line": 26 | ||
1057 | }, | ||
1058 | "file": "src/components/services/content/ServiceRestricted.js", | ||
1059 | "id": "service.restrictedHandler.customUrl.text", | ||
1060 | "start": { | ||
1061 | "column": 17, | ||
1062 | "line": 23 | ||
1063 | } | ||
1064 | }, | ||
1065 | { | ||
1066 | "defaultMessage": "!!!Upgrade Account", | ||
1067 | "end": { | ||
1068 | "column": 3, | ||
1069 | "line": 30 | ||
1070 | }, | ||
1071 | "file": "src/components/services/content/ServiceRestricted.js", | ||
1072 | "id": "service.restrictedHandler.action", | ||
1073 | "start": { | ||
1074 | "column": 10, | ||
1075 | "line": 27 | ||
1076 | } | ||
1077 | } | ||
1078 | ], | ||
1079 | "path": "src/components/services/content/ServiceRestricted.json" | ||
1080 | }, | ||
1081 | { | ||
1082 | "descriptors": [ | ||
1083 | { | ||
1084 | "defaultMessage": "!!!Welcome to Ferdi", | ||
1085 | "end": { | ||
1086 | "column": 3, | ||
1087 | "line": 17 | ||
1088 | }, | ||
941 | "file": "src/components/services/content/Services.js", | 1089 | "file": "src/components/services/content/Services.js", |
942 | "id": "services.welcome", | 1090 | "id": "services.welcome", |
943 | "start": { | 1091 | "start": { |
944 | "column": 11, | 1092 | "column": 11, |
945 | "line": 11 | 1093 | "line": 14 |
946 | } | 1094 | } |
947 | }, | 1095 | }, |
948 | { | 1096 | { |
949 | "defaultMessage": "!!!Get started", | 1097 | "defaultMessage": "!!!Get started", |
950 | "end": { | 1098 | "end": { |
951 | "column": 3, | 1099 | "column": 3, |
952 | "line": 18 | 1100 | "line": 21 |
953 | }, | 1101 | }, |
954 | "file": "src/components/services/content/Services.js", | 1102 | "file": "src/components/services/content/Services.js", |
955 | "id": "services.getStarted", | 1103 | "id": "services.getStarted", |
956 | "start": { | 1104 | "start": { |
957 | "column": 14, | 1105 | "column": 14, |
958 | "line": 15 | 1106 | "line": 18 |
959 | } | 1107 | } |
960 | }, | 1108 | }, |
961 | { | 1109 | { |
962 | "defaultMessage": "!!!Please login to use Ferdi.", | 1110 | "defaultMessage": "!!!Please login to use Ferdi.", |
963 | "end": { | 1111 | "end": { |
964 | "column": 3, | 1112 | "column": 3, |
965 | "line": 22 | 1113 | "line": 25 |
966 | }, | 1114 | }, |
967 | "file": "src/components/services/content/Services.js", | 1115 | "file": "src/components/services/content/Services.js", |
968 | "id": "services.login", | 1116 | "id": "services.login", |
969 | "start": { | 1117 | "start": { |
970 | "column": 9, | 1118 | "column": 9, |
971 | "line": 19 | 1119 | "line": 22 |
972 | } | 1120 | } |
973 | }, | 1121 | }, |
974 | { | 1122 | { |
975 | "defaultMessage": "!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", | 1123 | "defaultMessage": "!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", |
976 | "end": { | 1124 | "end": { |
977 | "column": 3, | 1125 | "column": 3, |
978 | "line": 26 | 1126 | "line": 29 |
979 | }, | 1127 | }, |
980 | "file": "src/components/services/content/Services.js", | 1128 | "file": "src/components/services/content/Services.js", |
981 | "id": "services.serverInfo", | 1129 | "id": "services.serverInfo", |
982 | "start": { | 1130 | "start": { |
983 | "column": 14, | 1131 | "column": 14, |
984 | "line": 23 | 1132 | "line": 26 |
985 | } | 1133 | } |
986 | } | 1134 | } |
987 | ], | 1135 | ], |
@@ -1172,38 +1320,25 @@ | |||
1172 | "defaultMessage": "!!!Account", | 1320 | "defaultMessage": "!!!Account", |
1173 | "end": { | 1321 | "end": { |
1174 | "column": 3, | 1322 | "column": 3, |
1175 | "line": 17 | 1323 | "line": 21 |
1176 | }, | 1324 | }, |
1177 | "file": "src/components/settings/account/AccountDashboard.js", | 1325 | "file": "src/components/settings/account/AccountDashboard.js", |
1178 | "id": "settings.account.headline", | 1326 | "id": "settings.account.headline", |
1179 | "start": { | 1327 | "start": { |
1180 | "column": 12, | 1328 | "column": 12, |
1181 | "line": 14 | 1329 | "line": 18 |
1182 | } | 1330 | } |
1183 | }, | 1331 | }, |
1184 | { | 1332 | { |
1185 | "defaultMessage": "!!!Your Subscription", | 1333 | "defaultMessage": "!!!Your Subscription", |
1186 | "end": { | 1334 | "end": { |
1187 | "column": 3, | 1335 | "column": 3, |
1188 | "line": 21 | 1336 | "line": 25 |
1189 | }, | 1337 | }, |
1190 | "file": "src/components/settings/account/AccountDashboard.js", | 1338 | "file": "src/components/settings/account/AccountDashboard.js", |
1191 | "id": "settings.account.headlineSubscription", | 1339 | "id": "settings.account.headlineSubscription", |
1192 | "start": { | 1340 | "start": { |
1193 | "column": 24, | 1341 | "column": 24, |
1194 | "line": 18 | ||
1195 | } | ||
1196 | }, | ||
1197 | { | ||
1198 | "defaultMessage": "!!!Upgrade your Account", | ||
1199 | "end": { | ||
1200 | "column": 3, | ||
1201 | "line": 25 | ||
1202 | }, | ||
1203 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1204 | "id": "settings.account.headlineUpgrade", | ||
1205 | "start": { | ||
1206 | "column": 19, | ||
1207 | "line": 22 | 1342 | "line": 22 |
1208 | } | 1343 | } |
1209 | }, | 1344 | }, |
@@ -1234,133 +1369,198 @@ | |||
1234 | } | 1369 | } |
1235 | }, | 1370 | }, |
1236 | { | 1371 | { |
1237 | "defaultMessage": "!!!Basic Account", | 1372 | "defaultMessage": "!!!Upgrade to Franz Professional", |
1238 | "end": { | 1373 | "end": { |
1239 | "column": 3, | 1374 | "column": 3, |
1240 | "line": 37 | 1375 | "line": 37 |
1241 | }, | 1376 | }, |
1242 | "file": "src/components/settings/account/AccountDashboard.js", | 1377 | "file": "src/components/settings/account/AccountDashboard.js", |
1378 | "id": "settings.account.upgradeToPro.label", | ||
1379 | "start": { | ||
1380 | "column": 23, | ||
1381 | "line": 34 | ||
1382 | } | ||
1383 | }, | ||
1384 | { | ||
1385 | "defaultMessage": "!!!Basic Account", | ||
1386 | "end": { | ||
1387 | "column": 3, | ||
1388 | "line": 41 | ||
1389 | }, | ||
1390 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1243 | "id": "settings.account.accountType.basic", | 1391 | "id": "settings.account.accountType.basic", |
1244 | "start": { | 1392 | "start": { |
1245 | "column": 20, | 1393 | "column": 20, |
1246 | "line": 34 | 1394 | "line": 38 |
1247 | } | 1395 | } |
1248 | }, | 1396 | }, |
1249 | { | 1397 | { |
1250 | "defaultMessage": "!!!Premium Supporter Account", | 1398 | "defaultMessage": "!!!Premium Supporter Account", |
1251 | "end": { | 1399 | "end": { |
1252 | "column": 3, | 1400 | "column": 3, |
1253 | "line": 41 | 1401 | "line": 45 |
1254 | }, | 1402 | }, |
1255 | "file": "src/components/settings/account/AccountDashboard.js", | 1403 | "file": "src/components/settings/account/AccountDashboard.js", |
1256 | "id": "settings.account.accountType.premium", | 1404 | "id": "settings.account.accountType.premium", |
1257 | "start": { | 1405 | "start": { |
1258 | "column": 22, | 1406 | "column": 22, |
1259 | "line": 38 | 1407 | "line": 42 |
1260 | } | 1408 | } |
1261 | }, | 1409 | }, |
1262 | { | 1410 | { |
1263 | "defaultMessage": "!!!Edit Account", | 1411 | "defaultMessage": "!!!Edit Account", |
1264 | "end": { | 1412 | "end": { |
1265 | "column": 3, | 1413 | "column": 3, |
1266 | "line": 45 | 1414 | "line": 49 |
1267 | }, | 1415 | }, |
1268 | "file": "src/components/settings/account/AccountDashboard.js", | 1416 | "file": "src/components/settings/account/AccountDashboard.js", |
1269 | "id": "settings.account.account.editButton", | 1417 | "id": "settings.account.account.editButton", |
1270 | "start": { | 1418 | "start": { |
1271 | "column": 21, | 1419 | "column": 21, |
1272 | "line": 42 | 1420 | "line": 46 |
1273 | } | 1421 | } |
1274 | }, | 1422 | }, |
1275 | { | 1423 | { |
1276 | "defaultMessage": "!!Invoices", | 1424 | "defaultMessage": "!!Invoices", |
1277 | "end": { | 1425 | "end": { |
1278 | "column": 3, | 1426 | "column": 3, |
1279 | "line": 49 | 1427 | "line": 53 |
1280 | }, | 1428 | }, |
1281 | "file": "src/components/settings/account/AccountDashboard.js", | 1429 | "file": "src/components/settings/account/AccountDashboard.js", |
1282 | "id": "settings.account.headlineInvoices", | 1430 | "id": "settings.account.headlineInvoices", |
1283 | "start": { | 1431 | "start": { |
1284 | "column": 18, | 1432 | "column": 18, |
1285 | "line": 46 | 1433 | "line": 50 |
1286 | } | 1434 | } |
1287 | }, | 1435 | }, |
1288 | { | 1436 | { |
1289 | "defaultMessage": "!!!Download", | 1437 | "defaultMessage": "!!!Download", |
1290 | "end": { | 1438 | "end": { |
1291 | "column": 3, | 1439 | "column": 3, |
1292 | "line": 53 | 1440 | "line": 57 |
1293 | }, | 1441 | }, |
1294 | "file": "src/components/settings/account/AccountDashboard.js", | 1442 | "file": "src/components/settings/account/AccountDashboard.js", |
1295 | "id": "settings.account.invoiceDownload", | 1443 | "id": "settings.account.invoiceDownload", |
1296 | "start": { | 1444 | "start": { |
1297 | "column": 19, | 1445 | "column": 19, |
1298 | "line": 50 | 1446 | "line": 54 |
1299 | } | 1447 | } |
1300 | }, | 1448 | }, |
1301 | { | 1449 | { |
1302 | "defaultMessage": "!!!Could not load user information", | 1450 | "defaultMessage": "!!!Could not load user information", |
1303 | "end": { | 1451 | "end": { |
1304 | "column": 3, | 1452 | "column": 3, |
1305 | "line": 57 | 1453 | "line": 61 |
1306 | }, | 1454 | }, |
1307 | "file": "src/components/settings/account/AccountDashboard.js", | 1455 | "file": "src/components/settings/account/AccountDashboard.js", |
1308 | "id": "settings.account.userInfoRequestFailed", | 1456 | "id": "settings.account.userInfoRequestFailed", |
1309 | "start": { | 1457 | "start": { |
1310 | "column": 25, | 1458 | "column": 25, |
1311 | "line": 54 | 1459 | "line": 58 |
1312 | } | 1460 | } |
1313 | }, | 1461 | }, |
1314 | { | 1462 | { |
1315 | "defaultMessage": "!!!Try again", | 1463 | "defaultMessage": "!!!Try again", |
1316 | "end": { | 1464 | "end": { |
1317 | "column": 3, | 1465 | "column": 3, |
1318 | "line": 61 | 1466 | "line": 65 |
1319 | }, | 1467 | }, |
1320 | "file": "src/components/settings/account/AccountDashboard.js", | 1468 | "file": "src/components/settings/account/AccountDashboard.js", |
1321 | "id": "settings.account.tryReloadUserInfoRequest", | 1469 | "id": "settings.account.tryReloadUserInfoRequest", |
1322 | "start": { | 1470 | "start": { |
1323 | "column": 28, | 1471 | "column": 28, |
1324 | "line": 58 | 1472 | "line": 62 |
1325 | } | 1473 | } |
1326 | }, | 1474 | }, |
1327 | { | 1475 | { |
1328 | "defaultMessage": "!!!Delete account", | 1476 | "defaultMessage": "!!!Delete account", |
1329 | "end": { | 1477 | "end": { |
1330 | "column": 3, | 1478 | "column": 3, |
1331 | "line": 65 | 1479 | "line": 69 |
1332 | }, | 1480 | }, |
1333 | "file": "src/components/settings/account/AccountDashboard.js", | 1481 | "file": "src/components/settings/account/AccountDashboard.js", |
1334 | "id": "settings.account.deleteAccount", | 1482 | "id": "settings.account.deleteAccount", |
1335 | "start": { | 1483 | "start": { |
1336 | "column": 17, | 1484 | "column": 17, |
1337 | "line": 62 | 1485 | "line": 66 |
1338 | } | 1486 | } |
1339 | }, | 1487 | }, |
1340 | { | 1488 | { |
1341 | "defaultMessage": "!!!If you don't need your Ferdi account any longer, you can delete your account and all related data here.", | 1489 | "defaultMessage": "!!!If you don't need your Ferdi account any longer, you can delete your account and all related data here.", |
1342 | "end": { | 1490 | "end": { |
1343 | "column": 3, | 1491 | "column": 3, |
1344 | "line": 69 | 1492 | "line": 73 |
1345 | }, | 1493 | }, |
1346 | "file": "src/components/settings/account/AccountDashboard.js", | 1494 | "file": "src/components/settings/account/AccountDashboard.js", |
1347 | "id": "settings.account.deleteInfo", | 1495 | "id": "settings.account.deleteInfo", |
1348 | "start": { | 1496 | "start": { |
1349 | "column": 14, | 1497 | "column": 14, |
1350 | "line": 66 | 1498 | "line": 70 |
1351 | } | 1499 | } |
1352 | }, | 1500 | }, |
1353 | { | 1501 | { |
1354 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", | 1502 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", |
1355 | "end": { | 1503 | "end": { |
1356 | "column": 3, | 1504 | "column": 3, |
1357 | "line": 73 | 1505 | "line": 77 |
1358 | }, | 1506 | }, |
1359 | "file": "src/components/settings/account/AccountDashboard.js", | 1507 | "file": "src/components/settings/account/AccountDashboard.js", |
1360 | "id": "settings.account.deleteEmailSent", | 1508 | "id": "settings.account.deleteEmailSent", |
1361 | "start": { | 1509 | "start": { |
1362 | "column": 19, | 1510 | "column": 19, |
1363 | "line": 70 | 1511 | "line": 74 |
1512 | } | ||
1513 | }, | ||
1514 | { | ||
1515 | "defaultMessage": "!!!Free Trial", | ||
1516 | "end": { | ||
1517 | "column": 3, | ||
1518 | "line": 81 | ||
1519 | }, | ||
1520 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1521 | "id": "settings.account.trial", | ||
1522 | "start": { | ||
1523 | "column": 9, | ||
1524 | "line": 78 | ||
1525 | } | ||
1526 | }, | ||
1527 | { | ||
1528 | "defaultMessage": "!!!Your Franz License:", | ||
1529 | "end": { | ||
1530 | "column": 3, | ||
1531 | "line": 85 | ||
1532 | }, | ||
1533 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1534 | "id": "settings.account.yourLicense", | ||
1535 | "start": { | ||
1536 | "column": 15, | ||
1537 | "line": 82 | ||
1538 | } | ||
1539 | }, | ||
1540 | { | ||
1541 | "defaultMessage": "!!!Your free trial ends in {duration}.", | ||
1542 | "end": { | ||
1543 | "column": 3, | ||
1544 | "line": 89 | ||
1545 | }, | ||
1546 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1547 | "id": "settings.account.trialEndsIn", | ||
1548 | "start": { | ||
1549 | "column": 15, | ||
1550 | "line": 86 | ||
1551 | } | ||
1552 | }, | ||
1553 | { | ||
1554 | "defaultMessage": "!!!Please update your billing info to continue using {license} after your trial period.", | ||
1555 | "end": { | ||
1556 | "column": 3, | ||
1557 | "line": 93 | ||
1558 | }, | ||
1559 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1560 | "id": "settings.account.trialUpdateBillingInfo", | ||
1561 | "start": { | ||
1562 | "column": 33, | ||
1563 | "line": 90 | ||
1364 | } | 1564 | } |
1365 | } | 1565 | } |
1366 | ], | 1566 | ], |
@@ -1372,104 +1572,104 @@ | |||
1372 | "defaultMessage": "!!!Available services", | 1572 | "defaultMessage": "!!!Available services", |
1373 | "end": { | 1573 | "end": { |
1374 | "column": 3, | 1574 | "column": 3, |
1375 | "line": 16 | 1575 | "line": 17 |
1376 | }, | 1576 | }, |
1377 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 1577 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
1378 | "id": "settings.navigation.availableServices", | 1578 | "id": "settings.navigation.availableServices", |
1379 | "start": { | 1579 | "start": { |
1380 | "column": 21, | 1580 | "column": 21, |
1381 | "line": 13 | 1581 | "line": 14 |
1382 | } | 1582 | } |
1383 | }, | 1583 | }, |
1384 | { | 1584 | { |
1385 | "defaultMessage": "!!!Your services", | 1585 | "defaultMessage": "!!!Your services", |
1386 | "end": { | 1586 | "end": { |
1387 | "column": 3, | 1587 | "column": 3, |
1388 | "line": 20 | 1588 | "line": 21 |
1389 | }, | 1589 | }, |
1390 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 1590 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
1391 | "id": "settings.navigation.yourServices", | 1591 | "id": "settings.navigation.yourServices", |
1392 | "start": { | 1592 | "start": { |
1393 | "column": 16, | 1593 | "column": 16, |
1394 | "line": 17 | 1594 | "line": 18 |
1395 | } | 1595 | } |
1396 | }, | 1596 | }, |
1397 | { | 1597 | { |
1398 | "defaultMessage": "!!!Your workspaces", | 1598 | "defaultMessage": "!!!Your workspaces", |
1399 | "end": { | 1599 | "end": { |
1400 | "column": 3, | 1600 | "column": 3, |
1401 | "line": 24 | 1601 | "line": 25 |
1402 | }, | 1602 | }, |
1403 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 1603 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
1404 | "id": "settings.navigation.yourWorkspaces", | 1604 | "id": "settings.navigation.yourWorkspaces", |
1405 | "start": { | 1605 | "start": { |
1406 | "column": 18, | 1606 | "column": 18, |
1407 | "line": 21 | 1607 | "line": 22 |
1408 | } | 1608 | } |
1409 | }, | 1609 | }, |
1410 | { | 1610 | { |
1411 | "defaultMessage": "!!!Account", | 1611 | "defaultMessage": "!!!Account", |
1412 | "end": { | 1612 | "end": { |
1413 | "column": 3, | 1613 | "column": 3, |
1414 | "line": 28 | 1614 | "line": 29 |
1415 | }, | 1615 | }, |
1416 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 1616 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
1417 | "id": "settings.navigation.account", | 1617 | "id": "settings.navigation.account", |
1418 | "start": { | 1618 | "start": { |
1419 | "column": 11, | 1619 | "column": 11, |
1420 | "line": 25 | 1620 | "line": 26 |
1421 | } | 1621 | } |
1422 | }, | 1622 | }, |
1423 | { | 1623 | { |
1424 | "defaultMessage": "!!!Manage Team", | 1624 | "defaultMessage": "!!!Manage Team", |
1425 | "end": { | 1625 | "end": { |
1426 | "column": 3, | 1626 | "column": 3, |
1427 | "line": 32 | 1627 | "line": 33 |
1428 | }, | 1628 | }, |
1429 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 1629 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
1430 | "id": "settings.navigation.team", | 1630 | "id": "settings.navigation.team", |
1431 | "start": { | 1631 | "start": { |
1432 | "column": 8, | 1632 | "column": 8, |
1433 | "line": 29 | 1633 | "line": 30 |
1434 | } | 1634 | } |
1435 | }, | 1635 | }, |
1436 | { | 1636 | { |
1437 | "defaultMessage": "!!!Settings", | 1637 | "defaultMessage": "!!!Settings", |
1438 | "end": { | 1638 | "end": { |
1439 | "column": 3, | 1639 | "column": 3, |
1440 | "line": 36 | 1640 | "line": 37 |
1441 | }, | 1641 | }, |
1442 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 1642 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
1443 | "id": "settings.navigation.settings", | 1643 | "id": "settings.navigation.settings", |
1444 | "start": { | 1644 | "start": { |
1445 | "column": 12, | 1645 | "column": 12, |
1446 | "line": 33 | 1646 | "line": 34 |
1447 | } | 1647 | } |
1448 | }, | 1648 | }, |
1449 | { | 1649 | { |
1450 | "defaultMessage": "!!!Invite Friends", | 1650 | "defaultMessage": "!!!Invite Friends", |
1451 | "end": { | 1651 | "end": { |
1452 | "column": 3, | 1652 | "column": 3, |
1453 | "line": 40 | 1653 | "line": 41 |
1454 | }, | 1654 | }, |
1455 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 1655 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
1456 | "id": "settings.navigation.inviteFriends", | 1656 | "id": "settings.navigation.inviteFriends", |
1457 | "start": { | 1657 | "start": { |
1458 | "column": 17, | 1658 | "column": 17, |
1459 | "line": 37 | 1659 | "line": 38 |
1460 | } | 1660 | } |
1461 | }, | 1661 | }, |
1462 | { | 1662 | { |
1463 | "defaultMessage": "!!!Logout", | 1663 | "defaultMessage": "!!!Logout", |
1464 | "end": { | 1664 | "end": { |
1465 | "column": 3, | 1665 | "column": 3, |
1466 | "line": 44 | 1666 | "line": 45 |
1467 | }, | 1667 | }, |
1468 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 1668 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
1469 | "id": "settings.navigation.logout", | 1669 | "id": "settings.navigation.logout", |
1470 | "start": { | 1670 | "start": { |
1471 | "column": 10, | 1671 | "column": 10, |
1472 | "line": 41 | 1672 | "line": 42 |
1473 | } | 1673 | } |
1474 | } | 1674 | } |
1475 | ], | 1675 | ], |
@@ -1481,104 +1681,182 @@ | |||
1481 | "defaultMessage": "!!!Available Services", | 1681 | "defaultMessage": "!!!Available Services", |
1482 | "end": { | 1682 | "end": { |
1483 | "column": 3, | 1683 | "column": 3, |
1484 | "line": 18 | 1684 | "line": 23 |
1485 | }, | 1685 | }, |
1486 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 1686 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
1487 | "id": "settings.recipes.headline", | 1687 | "id": "settings.recipes.headline", |
1488 | "start": { | 1688 | "start": { |
1489 | "column": 12, | 1689 | "column": 12, |
1490 | "line": 15 | 1690 | "line": 20 |
1491 | } | 1691 | } |
1492 | }, | 1692 | }, |
1493 | { | 1693 | { |
1494 | "defaultMessage": "!!!Search service", | 1694 | "defaultMessage": "!!!Search service", |
1495 | "end": { | 1695 | "end": { |
1496 | "column": 3, | 1696 | "column": 3, |
1497 | "line": 22 | 1697 | "line": 27 |
1498 | }, | 1698 | }, |
1499 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 1699 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
1500 | "id": "settings.searchService", | 1700 | "id": "settings.searchService", |
1501 | "start": { | 1701 | "start": { |
1502 | "column": 17, | 1702 | "column": 17, |
1503 | "line": 19 | 1703 | "line": 24 |
1504 | } | 1704 | } |
1505 | }, | 1705 | }, |
1506 | { | 1706 | { |
1507 | "defaultMessage": "!!!Most popular", | 1707 | "defaultMessage": "!!!Most popular", |
1508 | "end": { | 1708 | "end": { |
1509 | "column": 3, | 1709 | "column": 3, |
1510 | "line": 26 | 1710 | "line": 31 |
1511 | }, | 1711 | }, |
1512 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 1712 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
1513 | "id": "settings.recipes.mostPopular", | 1713 | "id": "settings.recipes.mostPopular", |
1514 | "start": { | 1714 | "start": { |
1515 | "column": 22, | 1715 | "column": 22, |
1516 | "line": 23 | 1716 | "line": 28 |
1517 | } | 1717 | } |
1518 | }, | 1718 | }, |
1519 | { | 1719 | { |
1520 | "defaultMessage": "!!!All services", | 1720 | "defaultMessage": "!!!All services", |
1521 | "end": { | 1721 | "end": { |
1522 | "column": 3, | 1722 | "column": 3, |
1523 | "line": 30 | 1723 | "line": 35 |
1524 | }, | 1724 | }, |
1525 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 1725 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
1526 | "id": "settings.recipes.all", | 1726 | "id": "settings.recipes.all", |
1527 | "start": { | 1727 | "start": { |
1528 | "column": 14, | 1728 | "column": 14, |
1529 | "line": 27 | 1729 | "line": 32 |
1530 | } | 1730 | } |
1531 | }, | 1731 | }, |
1532 | { | 1732 | { |
1533 | "defaultMessage": "!!!Development", | 1733 | "defaultMessage": "!!!Custom Services", |
1534 | "end": { | 1734 | "end": { |
1535 | "column": 3, | 1735 | "column": 3, |
1536 | "line": 34 | 1736 | "line": 39 |
1537 | }, | 1737 | }, |
1538 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 1738 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
1539 | "id": "settings.recipes.dev", | 1739 | "id": "settings.recipes.custom", |
1540 | "start": { | 1740 | "start": { |
1541 | "column": 14, | 1741 | "column": 17, |
1542 | "line": 31 | 1742 | "line": 36 |
1543 | } | 1743 | } |
1544 | }, | 1744 | }, |
1545 | { | 1745 | { |
1546 | "defaultMessage": "!!!Sorry, but no service matched your search term.", | 1746 | "defaultMessage": "!!!Sorry, but no service matched your search term.", |
1547 | "end": { | 1747 | "end": { |
1548 | "column": 3, | 1748 | "column": 3, |
1549 | "line": 38 | 1749 | "line": 43 |
1550 | }, | 1750 | }, |
1551 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 1751 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
1552 | "id": "settings.recipes.nothingFound", | 1752 | "id": "settings.recipes.nothingFound", |
1553 | "start": { | 1753 | "start": { |
1554 | "column": 16, | 1754 | "column": 16, |
1555 | "line": 35 | 1755 | "line": 40 |
1556 | } | 1756 | } |
1557 | }, | 1757 | }, |
1558 | { | 1758 | { |
1559 | "defaultMessage": "!!!Service successfully added", | 1759 | "defaultMessage": "!!!Service successfully added", |
1560 | "end": { | 1760 | "end": { |
1561 | "column": 3, | 1761 | "column": 3, |
1562 | "line": 42 | 1762 | "line": 47 |
1563 | }, | 1763 | }, |
1564 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 1764 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
1565 | "id": "settings.recipes.servicesSuccessfulAddedInfo", | 1765 | "id": "settings.recipes.servicesSuccessfulAddedInfo", |
1566 | "start": { | 1766 | "start": { |
1567 | "column": 31, | 1767 | "column": 31, |
1568 | "line": 39 | 1768 | "line": 44 |
1569 | } | 1769 | } |
1570 | }, | 1770 | }, |
1571 | { | 1771 | { |
1572 | "defaultMessage": "!!!Missing a service?", | 1772 | "defaultMessage": "!!!Missing a service?", |
1573 | "end": { | 1773 | "end": { |
1574 | "column": 3, | 1774 | "column": 3, |
1575 | "line": 46 | 1775 | "line": 51 |
1576 | }, | 1776 | }, |
1577 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 1777 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
1578 | "id": "settings.recipes.missingService", | 1778 | "id": "settings.recipes.missingService", |
1579 | "start": { | 1779 | "start": { |
1580 | "column": 18, | 1780 | "column": 18, |
1581 | "line": 43 | 1781 | "line": 48 |
1782 | } | ||
1783 | }, | ||
1784 | { | ||
1785 | "defaultMessage": "!!!To add a custom service, copy the recipe folder into:", | ||
1786 | "end": { | ||
1787 | "column": 3, | ||
1788 | "line": 55 | ||
1789 | }, | ||
1790 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1791 | "id": "settings.recipes.customService.intro", | ||
1792 | "start": { | ||
1793 | "column": 21, | ||
1794 | "line": 52 | ||
1795 | } | ||
1796 | }, | ||
1797 | { | ||
1798 | "defaultMessage": "!!!Open directory", | ||
1799 | "end": { | ||
1800 | "column": 3, | ||
1801 | "line": 59 | ||
1802 | }, | ||
1803 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1804 | "id": "settings.recipes.customService.openFolder", | ||
1805 | "start": { | ||
1806 | "column": 14, | ||
1807 | "line": 56 | ||
1808 | } | ||
1809 | }, | ||
1810 | { | ||
1811 | "defaultMessage": "!!!Developer Documentation", | ||
1812 | "end": { | ||
1813 | "column": 3, | ||
1814 | "line": 63 | ||
1815 | }, | ||
1816 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1817 | "id": "settings.recipes.customService.openDevDocs", | ||
1818 | "start": { | ||
1819 | "column": 15, | ||
1820 | "line": 60 | ||
1821 | } | ||
1822 | }, | ||
1823 | { | ||
1824 | "defaultMessage": "!!!Custom 3rd Party Recipes", | ||
1825 | "end": { | ||
1826 | "column": 3, | ||
1827 | "line": 67 | ||
1828 | }, | ||
1829 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1830 | "id": "settings.recipes.customService.headline.customRecipes", | ||
1831 | "start": { | ||
1832 | "column": 25, | ||
1833 | "line": 64 | ||
1834 | } | ||
1835 | }, | ||
1836 | { | ||
1837 | "defaultMessage": "!!!Community 3rd Party Recipes", | ||
1838 | "end": { | ||
1839 | "column": 3, | ||
1840 | "line": 71 | ||
1841 | }, | ||
1842 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1843 | "id": "settings.recipes.customService.headline.communityRecipes", | ||
1844 | "start": { | ||
1845 | "column": 28, | ||
1846 | "line": 68 | ||
1847 | } | ||
1848 | }, | ||
1849 | { | ||
1850 | "defaultMessage": "!!!Your Development Service Recipes", | ||
1851 | "end": { | ||
1852 | "column": 3, | ||
1853 | "line": 75 | ||
1854 | }, | ||
1855 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
1856 | "id": "settings.recipes.customService.headline.devRecipes", | ||
1857 | "start": { | ||
1858 | "column": 22, | ||
1859 | "line": 72 | ||
1582 | } | 1860 | } |
1583 | } | 1861 | } |
1584 | ], | 1862 | ], |
@@ -1590,286 +1868,286 @@ | |||
1590 | "defaultMessage": "!!!Save service", | 1868 | "defaultMessage": "!!!Save service", |
1591 | "end": { | 1869 | "end": { |
1592 | "column": 3, | 1870 | "column": 3, |
1593 | "line": 25 | 1871 | "line": 27 |
1594 | }, | 1872 | }, |
1595 | "file": "src/components/settings/services/EditServiceForm.js", | 1873 | "file": "src/components/settings/services/EditServiceForm.js", |
1596 | "id": "settings.service.form.saveButton", | 1874 | "id": "settings.service.form.saveButton", |
1597 | "start": { | 1875 | "start": { |
1598 | "column": 15, | 1876 | "column": 15, |
1599 | "line": 22 | 1877 | "line": 24 |
1600 | } | 1878 | } |
1601 | }, | 1879 | }, |
1602 | { | 1880 | { |
1603 | "defaultMessage": "!!!Delete Service", | 1881 | "defaultMessage": "!!!Delete Service", |
1604 | "end": { | 1882 | "end": { |
1605 | "column": 3, | 1883 | "column": 3, |
1606 | "line": 29 | 1884 | "line": 31 |
1607 | }, | 1885 | }, |
1608 | "file": "src/components/settings/services/EditServiceForm.js", | 1886 | "file": "src/components/settings/services/EditServiceForm.js", |
1609 | "id": "settings.service.form.deleteButton", | 1887 | "id": "settings.service.form.deleteButton", |
1610 | "start": { | 1888 | "start": { |
1611 | "column": 17, | 1889 | "column": 17, |
1612 | "line": 26 | 1890 | "line": 28 |
1613 | } | 1891 | } |
1614 | }, | 1892 | }, |
1615 | { | 1893 | { |
1616 | "defaultMessage": "!!!Available services", | 1894 | "defaultMessage": "!!!Available services", |
1617 | "end": { | 1895 | "end": { |
1618 | "column": 3, | 1896 | "column": 3, |
1619 | "line": 33 | 1897 | "line": 35 |
1620 | }, | 1898 | }, |
1621 | "file": "src/components/settings/services/EditServiceForm.js", | 1899 | "file": "src/components/settings/services/EditServiceForm.js", |
1622 | "id": "settings.service.form.availableServices", | 1900 | "id": "settings.service.form.availableServices", |
1623 | "start": { | 1901 | "start": { |
1624 | "column": 21, | 1902 | "column": 21, |
1625 | "line": 30 | 1903 | "line": 32 |
1626 | } | 1904 | } |
1627 | }, | 1905 | }, |
1628 | { | 1906 | { |
1629 | "defaultMessage": "!!!Your services", | 1907 | "defaultMessage": "!!!Your services", |
1630 | "end": { | 1908 | "end": { |
1631 | "column": 3, | 1909 | "column": 3, |
1632 | "line": 37 | 1910 | "line": 39 |
1633 | }, | 1911 | }, |
1634 | "file": "src/components/settings/services/EditServiceForm.js", | 1912 | "file": "src/components/settings/services/EditServiceForm.js", |
1635 | "id": "settings.service.form.yourServices", | 1913 | "id": "settings.service.form.yourServices", |
1636 | "start": { | 1914 | "start": { |
1637 | "column": 16, | 1915 | "column": 16, |
1638 | "line": 34 | 1916 | "line": 36 |
1639 | } | 1917 | } |
1640 | }, | 1918 | }, |
1641 | { | 1919 | { |
1642 | "defaultMessage": "!!!Add {name}", | 1920 | "defaultMessage": "!!!Add {name}", |
1643 | "end": { | 1921 | "end": { |
1644 | "column": 3, | 1922 | "column": 3, |
1645 | "line": 41 | 1923 | "line": 43 |
1646 | }, | 1924 | }, |
1647 | "file": "src/components/settings/services/EditServiceForm.js", | 1925 | "file": "src/components/settings/services/EditServiceForm.js", |
1648 | "id": "settings.service.form.addServiceHeadline", | 1926 | "id": "settings.service.form.addServiceHeadline", |
1649 | "start": { | 1927 | "start": { |
1650 | "column": 22, | 1928 | "column": 22, |
1651 | "line": 38 | 1929 | "line": 40 |
1652 | } | 1930 | } |
1653 | }, | 1931 | }, |
1654 | { | 1932 | { |
1655 | "defaultMessage": "!!!Edit {name}", | 1933 | "defaultMessage": "!!!Edit {name}", |
1656 | "end": { | 1934 | "end": { |
1657 | "column": 3, | 1935 | "column": 3, |
1658 | "line": 45 | 1936 | "line": 47 |
1659 | }, | 1937 | }, |
1660 | "file": "src/components/settings/services/EditServiceForm.js", | 1938 | "file": "src/components/settings/services/EditServiceForm.js", |
1661 | "id": "settings.service.form.editServiceHeadline", | 1939 | "id": "settings.service.form.editServiceHeadline", |
1662 | "start": { | 1940 | "start": { |
1663 | "column": 23, | 1941 | "column": 23, |
1664 | "line": 42 | 1942 | "line": 44 |
1665 | } | 1943 | } |
1666 | }, | 1944 | }, |
1667 | { | 1945 | { |
1668 | "defaultMessage": "!!!Hosted", | 1946 | "defaultMessage": "!!!Hosted", |
1669 | "end": { | 1947 | "end": { |
1670 | "column": 3, | 1948 | "column": 3, |
1671 | "line": 49 | 1949 | "line": 51 |
1672 | }, | 1950 | }, |
1673 | "file": "src/components/settings/services/EditServiceForm.js", | 1951 | "file": "src/components/settings/services/EditServiceForm.js", |
1674 | "id": "settings.service.form.tabHosted", | 1952 | "id": "settings.service.form.tabHosted", |
1675 | "start": { | 1953 | "start": { |
1676 | "column": 13, | 1954 | "column": 13, |
1677 | "line": 46 | 1955 | "line": 48 |
1678 | } | 1956 | } |
1679 | }, | 1957 | }, |
1680 | { | 1958 | { |
1681 | "defaultMessage": "!!!Self hosted âï¸", | 1959 | "defaultMessage": "!!!Self hosted âï¸", |
1682 | "end": { | 1960 | "end": { |
1683 | "column": 3, | 1961 | "column": 3, |
1684 | "line": 53 | 1962 | "line": 55 |
1685 | }, | 1963 | }, |
1686 | "file": "src/components/settings/services/EditServiceForm.js", | 1964 | "file": "src/components/settings/services/EditServiceForm.js", |
1687 | "id": "settings.service.form.tabOnPremise", | 1965 | "id": "settings.service.form.tabOnPremise", |
1688 | "start": { | 1966 | "start": { |
1689 | "column": 16, | 1967 | "column": 16, |
1690 | "line": 50 | 1968 | "line": 52 |
1691 | } | 1969 | } |
1692 | }, | 1970 | }, |
1693 | { | 1971 | { |
1694 | "defaultMessage": "!!!Use the hosted {name} service.", | 1972 | "defaultMessage": "!!!Use the hosted {name} service.", |
1695 | "end": { | 1973 | "end": { |
1696 | "column": 3, | 1974 | "column": 3, |
1697 | "line": 57 | 1975 | "line": 59 |
1698 | }, | 1976 | }, |
1699 | "file": "src/components/settings/services/EditServiceForm.js", | 1977 | "file": "src/components/settings/services/EditServiceForm.js", |
1700 | "id": "settings.service.form.useHostedService", | 1978 | "id": "settings.service.form.useHostedService", |
1701 | "start": { | 1979 | "start": { |
1702 | "column": 20, | 1980 | "column": 20, |
1703 | "line": 54 | 1981 | "line": 56 |
1704 | } | 1982 | } |
1705 | }, | 1983 | }, |
1706 | { | 1984 | { |
1707 | "defaultMessage": "!!!Could not validate custom {name} server.", | 1985 | "defaultMessage": "!!!Could not validate custom {name} server.", |
1708 | "end": { | 1986 | "end": { |
1709 | "column": 3, | 1987 | "column": 3, |
1710 | "line": 61 | 1988 | "line": 63 |
1711 | }, | 1989 | }, |
1712 | "file": "src/components/settings/services/EditServiceForm.js", | 1990 | "file": "src/components/settings/services/EditServiceForm.js", |
1713 | "id": "settings.service.form.customUrlValidationError", | 1991 | "id": "settings.service.form.customUrlValidationError", |
1714 | "start": { | 1992 | "start": { |
1715 | "column": 28, | 1993 | "column": 28, |
1716 | "line": 58 | 1994 | "line": 60 |
1717 | } | 1995 | } |
1718 | }, | 1996 | }, |
1719 | { | 1997 | { |
1720 | "defaultMessage": "!!!To add self hosted services, you need a Ferdi Premium Supporter Account.", | 1998 | "defaultMessage": "!!!To add self hosted services, you need a Ferdi Premium Supporter Account.", |
1721 | "end": { | 1999 | "end": { |
1722 | "column": 3, | 2000 | "column": 3, |
1723 | "line": 65 | 2001 | "line": 67 |
1724 | }, | 2002 | }, |
1725 | "file": "src/components/settings/services/EditServiceForm.js", | 2003 | "file": "src/components/settings/services/EditServiceForm.js", |
1726 | "id": "settings.service.form.customUrlPremiumInfo", | 2004 | "id": "settings.service.form.customUrlPremiumInfo", |
1727 | "start": { | 2005 | "start": { |
1728 | "column": 24, | 2006 | "column": 24, |
1729 | "line": 62 | 2007 | "line": 64 |
1730 | } | 2008 | } |
1731 | }, | 2009 | }, |
1732 | { | 2010 | { |
1733 | "defaultMessage": "!!!Upgrade your account", | 2011 | "defaultMessage": "!!!Upgrade your account", |
1734 | "end": { | 2012 | "end": { |
1735 | "column": 3, | 2013 | "column": 3, |
1736 | "line": 69 | 2014 | "line": 71 |
1737 | }, | 2015 | }, |
1738 | "file": "src/components/settings/services/EditServiceForm.js", | 2016 | "file": "src/components/settings/services/EditServiceForm.js", |
1739 | "id": "settings.service.form.customUrlUpgradeAccount", | 2017 | "id": "settings.service.form.customUrlUpgradeAccount", |
1740 | "start": { | 2018 | "start": { |
1741 | "column": 27, | 2019 | "column": 27, |
1742 | "line": 66 | 2020 | "line": 68 |
1743 | } | 2021 | } |
1744 | }, | 2022 | }, |
1745 | { | 2023 | { |
1746 | "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", | 2024 | "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", |
1747 | "end": { | 2025 | "end": { |
1748 | "column": 3, | 2026 | "column": 3, |
1749 | "line": 73 | 2027 | "line": 75 |
1750 | }, | 2028 | }, |
1751 | "file": "src/components/settings/services/EditServiceForm.js", | 2029 | "file": "src/components/settings/services/EditServiceForm.js", |
1752 | "id": "settings.service.form.indirectMessageInfo", | 2030 | "id": "settings.service.form.indirectMessageInfo", |
1753 | "start": { | 2031 | "start": { |
1754 | "column": 23, | 2032 | "column": 23, |
1755 | "line": 70 | 2033 | "line": 72 |
1756 | } | 2034 | } |
1757 | }, | 2035 | }, |
1758 | { | 2036 | { |
1759 | "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", | 2037 | "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", |
1760 | "end": { | 2038 | "end": { |
1761 | "column": 3, | 2039 | "column": 3, |
1762 | "line": 77 | 2040 | "line": 79 |
1763 | }, | 2041 | }, |
1764 | "file": "src/components/settings/services/EditServiceForm.js", | 2042 | "file": "src/components/settings/services/EditServiceForm.js", |
1765 | "id": "settings.service.form.isMutedInfo", | 2043 | "id": "settings.service.form.isMutedInfo", |
1766 | "start": { | 2044 | "start": { |
1767 | "column": 15, | 2045 | "column": 15, |
1768 | "line": 74 | 2046 | "line": 76 |
1769 | } | 2047 | } |
1770 | }, | 2048 | }, |
1771 | { | 2049 | { |
1772 | "defaultMessage": "!!!Notifications", | 2050 | "defaultMessage": "!!!Notifications", |
1773 | "end": { | 2051 | "end": { |
1774 | "column": 3, | 2052 | "column": 3, |
1775 | "line": 81 | 2053 | "line": 83 |
1776 | }, | 2054 | }, |
1777 | "file": "src/components/settings/services/EditServiceForm.js", | 2055 | "file": "src/components/settings/services/EditServiceForm.js", |
1778 | "id": "settings.service.form.headlineNotifications", | 2056 | "id": "settings.service.form.headlineNotifications", |
1779 | "start": { | 2057 | "start": { |
1780 | "column": 25, | 2058 | "column": 25, |
1781 | "line": 78 | 2059 | "line": 80 |
1782 | } | 2060 | } |
1783 | }, | 2061 | }, |
1784 | { | 2062 | { |
1785 | "defaultMessage": "!!!Unread message badges", | 2063 | "defaultMessage": "!!!Unread message badges", |
1786 | "end": { | 2064 | "end": { |
1787 | "column": 3, | 2065 | "column": 3, |
1788 | "line": 85 | 2066 | "line": 87 |
1789 | }, | 2067 | }, |
1790 | "file": "src/components/settings/services/EditServiceForm.js", | 2068 | "file": "src/components/settings/services/EditServiceForm.js", |
1791 | "id": "settings.service.form.headlineBadges", | 2069 | "id": "settings.service.form.headlineBadges", |
1792 | "start": { | 2070 | "start": { |
1793 | "column": 18, | 2071 | "column": 18, |
1794 | "line": 82 | 2072 | "line": 84 |
1795 | } | 2073 | } |
1796 | }, | 2074 | }, |
1797 | { | 2075 | { |
1798 | "defaultMessage": "!!!General", | 2076 | "defaultMessage": "!!!General", |
1799 | "end": { | 2077 | "end": { |
1800 | "column": 3, | 2078 | "column": 3, |
1801 | "line": 89 | 2079 | "line": 91 |
1802 | }, | 2080 | }, |
1803 | "file": "src/components/settings/services/EditServiceForm.js", | 2081 | "file": "src/components/settings/services/EditServiceForm.js", |
1804 | "id": "settings.service.form.headlineGeneral", | 2082 | "id": "settings.service.form.headlineGeneral", |
1805 | "start": { | 2083 | "start": { |
1806 | "column": 19, | 2084 | "column": 19, |
1807 | "line": 86 | 2085 | "line": 88 |
1808 | } | 2086 | } |
1809 | }, | 2087 | }, |
1810 | { | 2088 | { |
1811 | "defaultMessage": "!!!Delete", | 2089 | "defaultMessage": "!!!Delete", |
1812 | "end": { | 2090 | "end": { |
1813 | "column": 3, | 2091 | "column": 3, |
1814 | "line": 93 | 2092 | "line": 95 |
1815 | }, | 2093 | }, |
1816 | "file": "src/components/settings/services/EditServiceForm.js", | 2094 | "file": "src/components/settings/services/EditServiceForm.js", |
1817 | "id": "settings.service.form.iconDelete", | 2095 | "id": "settings.service.form.iconDelete", |
1818 | "start": { | 2096 | "start": { |
1819 | "column": 14, | 2097 | "column": 14, |
1820 | "line": 90 | 2098 | "line": 92 |
1821 | } | 2099 | } |
1822 | }, | 2100 | }, |
1823 | { | 2101 | { |
1824 | "defaultMessage": "!!!Drop your image, or click here", | 2102 | "defaultMessage": "!!!Drop your image, or click here", |
1825 | "end": { | 2103 | "end": { |
1826 | "column": 3, | 2104 | "column": 3, |
1827 | "line": 97 | 2105 | "line": 99 |
1828 | }, | 2106 | }, |
1829 | "file": "src/components/settings/services/EditServiceForm.js", | 2107 | "file": "src/components/settings/services/EditServiceForm.js", |
1830 | "id": "settings.service.form.iconUpload", | 2108 | "id": "settings.service.form.iconUpload", |
1831 | "start": { | 2109 | "start": { |
1832 | "column": 14, | 2110 | "column": 14, |
1833 | "line": 94 | 2111 | "line": 96 |
1834 | } | 2112 | } |
1835 | }, | 2113 | }, |
1836 | { | 2114 | { |
1837 | "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", | 2115 | "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", |
1838 | "end": { | 2116 | "end": { |
1839 | "column": 3, | 2117 | "column": 3, |
1840 | "line": 101 | 2118 | "line": 103 |
1841 | }, | 2119 | }, |
1842 | "file": "src/components/settings/services/EditServiceForm.js", | 2120 | "file": "src/components/settings/services/EditServiceForm.js", |
1843 | "id": "settings.service.form.proxy.headline", | 2121 | "id": "settings.service.form.proxy.headline", |
1844 | "start": { | 2122 | "start": { |
1845 | "column": 17, | 2123 | "column": 17, |
1846 | "line": 98 | 2124 | "line": 100 |
1847 | } | 2125 | } |
1848 | }, | 2126 | }, |
1849 | { | 2127 | { |
1850 | "defaultMessage": "!!!Please restart Ferdi after changing proxy Settings.", | 2128 | "defaultMessage": "!!!Please restart Ferdi after changing proxy Settings.", |
1851 | "end": { | 2129 | "end": { |
1852 | "column": 3, | 2130 | "column": 3, |
1853 | "line": 105 | 2131 | "line": 107 |
1854 | }, | 2132 | }, |
1855 | "file": "src/components/settings/services/EditServiceForm.js", | 2133 | "file": "src/components/settings/services/EditServiceForm.js", |
1856 | "id": "settings.service.form.proxy.restartInfo", | 2134 | "id": "settings.service.form.proxy.restartInfo", |
1857 | "start": { | 2135 | "start": { |
1858 | "column": 20, | 2136 | "column": 20, |
1859 | "line": 102 | 2137 | "line": 104 |
1860 | } | 2138 | } |
1861 | }, | 2139 | }, |
1862 | { | 2140 | { |
1863 | "defaultMessage": "!!!Proxy settings will not be synchronized with the Ferdi servers.", | 2141 | "defaultMessage": "!!!Proxy settings will not be synchronized with the Ferdi servers.", |
1864 | "end": { | 2142 | "end": { |
1865 | "column": 3, | 2143 | "column": 3, |
1866 | "line": 109 | 2144 | "line": 111 |
1867 | }, | 2145 | }, |
1868 | "file": "src/components/settings/services/EditServiceForm.js", | 2146 | "file": "src/components/settings/services/EditServiceForm.js", |
1869 | "id": "settings.service.form.proxy.info", | 2147 | "id": "settings.service.form.proxy.info", |
1870 | "start": { | 2148 | "start": { |
1871 | "column": 13, | 2149 | "column": 13, |
1872 | "line": 106 | 2150 | "line": 108 |
1873 | } | 2151 | } |
1874 | } | 2152 | } |
1875 | ], | 2153 | ], |
@@ -1982,117 +2260,117 @@ | |||
1982 | "defaultMessage": "!!!Your services", | 2260 | "defaultMessage": "!!!Your services", |
1983 | "end": { | 2261 | "end": { |
1984 | "column": 3, | 2262 | "column": 3, |
1985 | "line": 17 | 2263 | "line": 18 |
1986 | }, | 2264 | }, |
1987 | "file": "src/components/settings/services/ServicesDashboard.js", | 2265 | "file": "src/components/settings/services/ServicesDashboard.js", |
1988 | "id": "settings.services.headline", | 2266 | "id": "settings.services.headline", |
1989 | "start": { | 2267 | "start": { |
1990 | "column": 12, | 2268 | "column": 12, |
1991 | "line": 14 | 2269 | "line": 15 |
1992 | } | 2270 | } |
1993 | }, | 2271 | }, |
1994 | { | 2272 | { |
1995 | "defaultMessage": "!!!Search service", | 2273 | "defaultMessage": "!!!Search service", |
1996 | "end": { | 2274 | "end": { |
1997 | "column": 3, | 2275 | "column": 3, |
1998 | "line": 21 | 2276 | "line": 22 |
1999 | }, | 2277 | }, |
2000 | "file": "src/components/settings/services/ServicesDashboard.js", | 2278 | "file": "src/components/settings/services/ServicesDashboard.js", |
2001 | "id": "settings.searchService", | 2279 | "id": "settings.searchService", |
2002 | "start": { | 2280 | "start": { |
2003 | "column": 17, | 2281 | "column": 17, |
2004 | "line": 18 | 2282 | "line": 19 |
2005 | } | 2283 | } |
2006 | }, | 2284 | }, |
2007 | { | 2285 | { |
2008 | "defaultMessage": "!!!You haven't added any services yet.", | 2286 | "defaultMessage": "!!!You haven't added any services yet.", |
2009 | "end": { | 2287 | "end": { |
2010 | "column": 3, | 2288 | "column": 3, |
2011 | "line": 25 | 2289 | "line": 26 |
2012 | }, | 2290 | }, |
2013 | "file": "src/components/settings/services/ServicesDashboard.js", | 2291 | "file": "src/components/settings/services/ServicesDashboard.js", |
2014 | "id": "settings.services.noServicesAdded", | 2292 | "id": "settings.services.noServicesAdded", |
2015 | "start": { | 2293 | "start": { |
2016 | "column": 19, | 2294 | "column": 19, |
2017 | "line": 22 | 2295 | "line": 23 |
2018 | } | 2296 | } |
2019 | }, | 2297 | }, |
2020 | { | 2298 | { |
2021 | "defaultMessage": "!!!Sorry, but no service matched your search term.", | 2299 | "defaultMessage": "!!!Sorry, but no service matched your search term.", |
2022 | "end": { | 2300 | "end": { |
2023 | "column": 3, | 2301 | "column": 3, |
2024 | "line": 29 | 2302 | "line": 30 |
2025 | }, | 2303 | }, |
2026 | "file": "src/components/settings/services/ServicesDashboard.js", | 2304 | "file": "src/components/settings/services/ServicesDashboard.js", |
2027 | "id": "settings.recipes.nothingFound", | 2305 | "id": "settings.recipes.nothingFound", |
2028 | "start": { | 2306 | "start": { |
2029 | "column": 18, | 2307 | "column": 18, |
2030 | "line": 26 | 2308 | "line": 27 |
2031 | } | 2309 | } |
2032 | }, | 2310 | }, |
2033 | { | 2311 | { |
2034 | "defaultMessage": "!!!Discover services", | 2312 | "defaultMessage": "!!!Discover services", |
2035 | "end": { | 2313 | "end": { |
2036 | "column": 3, | 2314 | "column": 3, |
2037 | "line": 33 | 2315 | "line": 34 |
2038 | }, | 2316 | }, |
2039 | "file": "src/components/settings/services/ServicesDashboard.js", | 2317 | "file": "src/components/settings/services/ServicesDashboard.js", |
2040 | "id": "settings.services.discoverServices", | 2318 | "id": "settings.services.discoverServices", |
2041 | "start": { | 2319 | "start": { |
2042 | "column": 20, | 2320 | "column": 20, |
2043 | "line": 30 | 2321 | "line": 31 |
2044 | } | 2322 | } |
2045 | }, | 2323 | }, |
2046 | { | 2324 | { |
2047 | "defaultMessage": "!!!Could not load your services", | 2325 | "defaultMessage": "!!!Could not load your services", |
2048 | "end": { | 2326 | "end": { |
2049 | "column": 3, | 2327 | "column": 3, |
2050 | "line": 37 | 2328 | "line": 38 |
2051 | }, | 2329 | }, |
2052 | "file": "src/components/settings/services/ServicesDashboard.js", | 2330 | "file": "src/components/settings/services/ServicesDashboard.js", |
2053 | "id": "settings.services.servicesRequestFailed", | 2331 | "id": "settings.services.servicesRequestFailed", |
2054 | "start": { | 2332 | "start": { |
2055 | "column": 25, | 2333 | "column": 25, |
2056 | "line": 34 | 2334 | "line": 35 |
2057 | } | 2335 | } |
2058 | }, | 2336 | }, |
2059 | { | 2337 | { |
2060 | "defaultMessage": "!!!Try again", | 2338 | "defaultMessage": "!!!Try again", |
2061 | "end": { | 2339 | "end": { |
2062 | "column": 3, | 2340 | "column": 3, |
2063 | "line": 41 | 2341 | "line": 42 |
2064 | }, | 2342 | }, |
2065 | "file": "src/components/settings/services/ServicesDashboard.js", | 2343 | "file": "src/components/settings/services/ServicesDashboard.js", |
2066 | "id": "settings.account.tryReloadServices", | 2344 | "id": "settings.account.tryReloadServices", |
2067 | "start": { | 2345 | "start": { |
2068 | "column": 21, | 2346 | "column": 21, |
2069 | "line": 38 | 2347 | "line": 39 |
2070 | } | 2348 | } |
2071 | }, | 2349 | }, |
2072 | { | 2350 | { |
2073 | "defaultMessage": "!!!Your changes have been saved", | 2351 | "defaultMessage": "!!!Your changes have been saved", |
2074 | "end": { | 2352 | "end": { |
2075 | "column": 3, | 2353 | "column": 3, |
2076 | "line": 45 | 2354 | "line": 46 |
2077 | }, | 2355 | }, |
2078 | "file": "src/components/settings/services/ServicesDashboard.js", | 2356 | "file": "src/components/settings/services/ServicesDashboard.js", |
2079 | "id": "settings.services.updatedInfo", | 2357 | "id": "settings.services.updatedInfo", |
2080 | "start": { | 2358 | "start": { |
2081 | "column": 15, | 2359 | "column": 15, |
2082 | "line": 42 | 2360 | "line": 43 |
2083 | } | 2361 | } |
2084 | }, | 2362 | }, |
2085 | { | 2363 | { |
2086 | "defaultMessage": "!!!Service has been deleted", | 2364 | "defaultMessage": "!!!Service has been deleted", |
2087 | "end": { | 2365 | "end": { |
2088 | "column": 3, | 2366 | "column": 3, |
2089 | "line": 49 | 2367 | "line": 50 |
2090 | }, | 2368 | }, |
2091 | "file": "src/components/settings/services/ServicesDashboard.js", | 2369 | "file": "src/components/settings/services/ServicesDashboard.js", |
2092 | "id": "settings.services.deletedInfo", | 2370 | "id": "settings.services.deletedInfo", |
2093 | "start": { | 2371 | "start": { |
2094 | "column": 15, | 2372 | "column": 15, |
2095 | "line": 46 | 2373 | "line": 47 |
2096 | } | 2374 | } |
2097 | } | 2375 | } |
2098 | ], | 2376 | ], |
@@ -2140,211 +2418,224 @@ | |||
2140 | } | 2418 | } |
2141 | }, | 2419 | }, |
2142 | { | 2420 | { |
2143 | "defaultMessage": "!!!Language", | 2421 | "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. The default server will only work for premium users. (default: https://app.franztodos.com)", |
2144 | "end": { | 2422 | "end": { |
2145 | "column": 3, | 2423 | "column": 3, |
2146 | "line": 32 | 2424 | "line": 32 |
2147 | }, | 2425 | }, |
2148 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2426 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2427 | "id": "settings.app.todoServerInfo", | ||
2428 | "start": { | ||
2429 | "column": 18, | ||
2430 | "line": 29 | ||
2431 | } | ||
2432 | }, | ||
2433 | { | ||
2434 | "defaultMessage": "!!!Language", | ||
2435 | "end": { | ||
2436 | "column": 3, | ||
2437 | "line": 36 | ||
2438 | }, | ||
2439 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
2149 | "id": "settings.app.headlineLanguage", | 2440 | "id": "settings.app.headlineLanguage", |
2150 | "start": { | 2441 | "start": { |
2151 | "column": 20, | 2442 | "column": 20, |
2152 | "line": 29 | 2443 | "line": 33 |
2153 | } | 2444 | } |
2154 | }, | 2445 | }, |
2155 | { | 2446 | { |
2156 | "defaultMessage": "!!!Updates", | 2447 | "defaultMessage": "!!!Updates", |
2157 | "end": { | 2448 | "end": { |
2158 | "column": 3, | 2449 | "column": 3, |
2159 | "line": 36 | 2450 | "line": 40 |
2160 | }, | 2451 | }, |
2161 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2452 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2162 | "id": "settings.app.headlineUpdates", | 2453 | "id": "settings.app.headlineUpdates", |
2163 | "start": { | 2454 | "start": { |
2164 | "column": 19, | 2455 | "column": 19, |
2165 | "line": 33 | 2456 | "line": 37 |
2166 | } | 2457 | } |
2167 | }, | 2458 | }, |
2168 | { | 2459 | { |
2169 | "defaultMessage": "!!!Appearance", | 2460 | "defaultMessage": "!!!Appearance", |
2170 | "end": { | 2461 | "end": { |
2171 | "column": 3, | 2462 | "column": 3, |
2172 | "line": 40 | 2463 | "line": 44 |
2173 | }, | 2464 | }, |
2174 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2465 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2175 | "id": "settings.app.headlineAppearance", | 2466 | "id": "settings.app.headlineAppearance", |
2176 | "start": { | 2467 | "start": { |
2177 | "column": 22, | 2468 | "column": 22, |
2178 | "line": 37 | 2469 | "line": 41 |
2179 | } | 2470 | } |
2180 | }, | 2471 | }, |
2181 | { | 2472 | { |
2182 | "defaultMessage": "!!!Advanced", | 2473 | "defaultMessage": "!!!Advanced", |
2183 | "end": { | 2474 | "end": { |
2184 | "column": 3, | 2475 | "column": 3, |
2185 | "line": 44 | 2476 | "line": 48 |
2186 | }, | 2477 | }, |
2187 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2478 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2188 | "id": "settings.app.headlineAdvanced", | 2479 | "id": "settings.app.headlineAdvanced", |
2189 | "start": { | 2480 | "start": { |
2190 | "column": 20, | 2481 | "column": 20, |
2191 | "line": 41 | 2482 | "line": 45 |
2192 | } | 2483 | } |
2193 | }, | 2484 | }, |
2194 | { | 2485 | { |
2195 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", | 2486 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", |
2196 | "end": { | 2487 | "end": { |
2197 | "column": 3, | 2488 | "column": 3, |
2198 | "line": 48 | 2489 | "line": 52 |
2199 | }, | 2490 | }, |
2200 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2491 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2201 | "id": "settings.app.translationHelp", | 2492 | "id": "settings.app.translationHelp", |
2202 | "start": { | 2493 | "start": { |
2203 | "column": 19, | 2494 | "column": 19, |
2204 | "line": 45 | 2495 | "line": 49 |
2205 | } | 2496 | } |
2206 | }, | 2497 | }, |
2207 | { | 2498 | { |
2208 | "defaultMessage": "!!!Cache", | 2499 | "defaultMessage": "!!!Cache", |
2209 | "end": { | 2500 | "end": { |
2210 | "column": 3, | 2501 | "column": 3, |
2211 | "line": 52 | 2502 | "line": 56 |
2212 | }, | 2503 | }, |
2213 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2504 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2214 | "id": "settings.app.subheadlineCache", | 2505 | "id": "settings.app.subheadlineCache", |
2215 | "start": { | 2506 | "start": { |
2216 | "column": 20, | 2507 | "column": 20, |
2217 | "line": 49 | 2508 | "line": 53 |
2218 | } | 2509 | } |
2219 | }, | 2510 | }, |
2220 | { | 2511 | { |
2221 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", | 2512 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", |
2222 | "end": { | 2513 | "end": { |
2223 | "column": 3, | 2514 | "column": 3, |
2224 | "line": 56 | 2515 | "line": 60 |
2225 | }, | 2516 | }, |
2226 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2517 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2227 | "id": "settings.app.cacheInfo", | 2518 | "id": "settings.app.cacheInfo", |
2228 | "start": { | 2519 | "start": { |
2229 | "column": 13, | 2520 | "column": 13, |
2230 | "line": 53 | 2521 | "line": 57 |
2231 | } | 2522 | } |
2232 | }, | 2523 | }, |
2233 | { | 2524 | { |
2234 | "defaultMessage": "!!!Clear cache", | 2525 | "defaultMessage": "!!!Clear cache", |
2235 | "end": { | 2526 | "end": { |
2236 | "column": 3, | 2527 | "column": 3, |
2237 | "line": 60 | 2528 | "line": 64 |
2238 | }, | 2529 | }, |
2239 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2530 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2240 | "id": "settings.app.buttonClearAllCache", | 2531 | "id": "settings.app.buttonClearAllCache", |
2241 | "start": { | 2532 | "start": { |
2242 | "column": 23, | 2533 | "column": 23, |
2243 | "line": 57 | 2534 | "line": 61 |
2244 | } | 2535 | } |
2245 | }, | 2536 | }, |
2246 | { | 2537 | { |
2247 | "defaultMessage": "!!!Check for updates", | 2538 | "defaultMessage": "!!!Check for updates", |
2248 | "end": { | 2539 | "end": { |
2249 | "column": 3, | 2540 | "column": 3, |
2250 | "line": 64 | 2541 | "line": 68 |
2251 | }, | 2542 | }, |
2252 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2543 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2253 | "id": "settings.app.buttonSearchForUpdate", | 2544 | "id": "settings.app.buttonSearchForUpdate", |
2254 | "start": { | 2545 | "start": { |
2255 | "column": 25, | 2546 | "column": 25, |
2256 | "line": 61 | 2547 | "line": 65 |
2257 | } | 2548 | } |
2258 | }, | 2549 | }, |
2259 | { | 2550 | { |
2260 | "defaultMessage": "!!!Restart & install update", | 2551 | "defaultMessage": "!!!Restart & install update", |
2261 | "end": { | 2552 | "end": { |
2262 | "column": 3, | 2553 | "column": 3, |
2263 | "line": 68 | 2554 | "line": 72 |
2264 | }, | 2555 | }, |
2265 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2556 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2266 | "id": "settings.app.buttonInstallUpdate", | 2557 | "id": "settings.app.buttonInstallUpdate", |
2267 | "start": { | 2558 | "start": { |
2268 | "column": 23, | 2559 | "column": 23, |
2269 | "line": 65 | 2560 | "line": 69 |
2270 | } | 2561 | } |
2271 | }, | 2562 | }, |
2272 | { | 2563 | { |
2273 | "defaultMessage": "!!!Is searching for update", | 2564 | "defaultMessage": "!!!Is searching for update", |
2274 | "end": { | 2565 | "end": { |
2275 | "column": 3, | 2566 | "column": 3, |
2276 | "line": 72 | 2567 | "line": 76 |
2277 | }, | 2568 | }, |
2278 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2569 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2279 | "id": "settings.app.updateStatusSearching", | 2570 | "id": "settings.app.updateStatusSearching", |
2280 | "start": { | 2571 | "start": { |
2281 | "column": 25, | 2572 | "column": 25, |
2282 | "line": 69 | 2573 | "line": 73 |
2283 | } | 2574 | } |
2284 | }, | 2575 | }, |
2285 | { | 2576 | { |
2286 | "defaultMessage": "!!!Update available, downloading...", | 2577 | "defaultMessage": "!!!Update available, downloading...", |
2287 | "end": { | 2578 | "end": { |
2288 | "column": 3, | 2579 | "column": 3, |
2289 | "line": 76 | 2580 | "line": 80 |
2290 | }, | 2581 | }, |
2291 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2582 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2292 | "id": "settings.app.updateStatusAvailable", | 2583 | "id": "settings.app.updateStatusAvailable", |
2293 | "start": { | 2584 | "start": { |
2294 | "column": 25, | 2585 | "column": 25, |
2295 | "line": 73 | 2586 | "line": 77 |
2296 | } | 2587 | } |
2297 | }, | 2588 | }, |
2298 | { | 2589 | { |
2299 | "defaultMessage": "!!!You are using the latest version of Franz", | 2590 | "defaultMessage": "!!!You are using the latest version of Ferdi", |
2300 | "end": { | 2591 | "end": { |
2301 | "column": 3, | 2592 | "column": 3, |
2302 | "line": 80 | 2593 | "line": 84 |
2303 | }, | 2594 | }, |
2304 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2595 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2305 | "id": "settings.app.updateStatusUpToDate", | 2596 | "id": "settings.app.updateStatusUpToDate", |
2306 | "start": { | 2597 | "start": { |
2307 | "column": 24, | 2598 | "column": 24, |
2308 | "line": 77 | 2599 | "line": 81 |
2309 | } | 2600 | } |
2310 | }, | 2601 | }, |
2311 | { | 2602 | { |
2312 | "defaultMessage": "!!!Current version:", | 2603 | "defaultMessage": "!!!Current version:", |
2313 | "end": { | 2604 | "end": { |
2314 | "column": 3, | 2605 | "column": 3, |
2315 | "line": 84 | 2606 | "line": 88 |
2316 | }, | 2607 | }, |
2317 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2608 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2318 | "id": "settings.app.currentVersion", | 2609 | "id": "settings.app.currentVersion", |
2319 | "start": { | 2610 | "start": { |
2320 | "column": 18, | 2611 | "column": 18, |
2321 | "line": 81 | 2612 | "line": 85 |
2322 | } | 2613 | } |
2323 | }, | 2614 | }, |
2324 | { | 2615 | { |
2325 | "defaultMessage": "!!!Changes require restart", | 2616 | "defaultMessage": "!!!Changes require restart", |
2326 | "end": { | 2617 | "end": { |
2327 | "column": 3, | 2618 | "column": 3, |
2328 | "line": 88 | 2619 | "line": 92 |
2329 | }, | 2620 | }, |
2330 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2621 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2331 | "id": "settings.app.restartRequired", | 2622 | "id": "settings.app.restartRequired", |
2332 | "start": { | 2623 | "start": { |
2333 | "column": 29, | 2624 | "column": 29, |
2334 | "line": 85 | 2625 | "line": 89 |
2335 | } | 2626 | } |
2336 | }, | 2627 | }, |
2337 | { | 2628 | { |
2338 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", | 2629 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", |
2339 | "end": { | 2630 | "end": { |
2340 | "column": 3, | 2631 | "column": 3, |
2341 | "line": 92 | 2632 | "line": 96 |
2342 | }, | 2633 | }, |
2343 | "file": "src/components/settings/settings/EditSettingsForm.js", | 2634 | "file": "src/components/settings/settings/EditSettingsForm.js", |
2344 | "id": "settings.app.languageDisclaimer", | 2635 | "id": "settings.app.languageDisclaimer", |
2345 | "start": { | 2636 | "start": { |
2346 | "column": 22, | 2637 | "column": 22, |
2347 | "line": 89 | 2638 | "line": 93 |
2348 | } | 2639 | } |
2349 | } | 2640 | } |
2350 | ], | 2641 | ], |
@@ -2356,78 +2647,78 @@ | |||
2356 | "defaultMessage": "!!!Team", | 2647 | "defaultMessage": "!!!Team", |
2357 | "end": { | 2648 | "end": { |
2358 | "column": 3, | 2649 | "column": 3, |
2359 | "line": 17 | 2650 | "line": 20 |
2360 | }, | 2651 | }, |
2361 | "file": "src/components/settings/team/TeamDashboard.js", | 2652 | "file": "src/components/settings/team/TeamDashboard.js", |
2362 | "id": "settings.team.headline", | 2653 | "id": "settings.team.headline", |
2363 | "start": { | 2654 | "start": { |
2364 | "column": 12, | 2655 | "column": 12, |
2365 | "line": 14 | 2656 | "line": 17 |
2366 | } | 2657 | } |
2367 | }, | 2658 | }, |
2368 | { | 2659 | { |
2369 | "defaultMessage": "!!!Ferdi for Teams", | 2660 | "defaultMessage": "!!!Ferdi for Teams", |
2370 | "end": { | 2661 | "end": { |
2371 | "column": 3, | 2662 | "column": 3, |
2372 | "line": 21 | 2663 | "line": 24 |
2373 | }, | 2664 | }, |
2374 | "file": "src/components/settings/team/TeamDashboard.js", | 2665 | "file": "src/components/settings/team/TeamDashboard.js", |
2375 | "id": "settings.team.contentHeadline", | 2666 | "id": "settings.team.contentHeadline", |
2376 | "start": { | 2667 | "start": { |
2377 | "column": 19, | 2668 | "column": 19, |
2378 | "line": 18 | 2669 | "line": 21 |
2379 | } | 2670 | } |
2380 | }, | 2671 | }, |
2381 | { | 2672 | { |
2382 | "defaultMessage": "!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 2673 | "defaultMessage": "!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", |
2383 | "end": { | 2674 | "end": { |
2384 | "column": 3, | 2675 | "column": 3, |
2385 | "line": 25 | 2676 | "line": 28 |
2386 | }, | 2677 | }, |
2387 | "file": "src/components/settings/team/TeamDashboard.js", | 2678 | "file": "src/components/settings/team/TeamDashboard.js", |
2388 | "id": "settings.team.intro", | 2679 | "id": "settings.team.intro", |
2389 | "start": { | 2680 | "start": { |
2390 | "column": 9, | 2681 | "column": 9, |
2391 | "line": 22 | 2682 | "line": 25 |
2392 | } | 2683 | } |
2393 | }, | 2684 | }, |
2394 | { | 2685 | { |
2395 | "defaultMessage": "!!!Ferdi for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 2686 | "defaultMessage": "!!!Ferdi for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", |
2396 | "end": { | 2687 | "end": { |
2397 | "column": 3, | 2688 | "column": 3, |
2398 | "line": 29 | 2689 | "line": 32 |
2399 | }, | 2690 | }, |
2400 | "file": "src/components/settings/team/TeamDashboard.js", | 2691 | "file": "src/components/settings/team/TeamDashboard.js", |
2401 | "id": "settings.team.copy", | 2692 | "id": "settings.team.copy", |
2402 | "start": { | 2693 | "start": { |
2403 | "column": 8, | 2694 | "column": 8, |
2404 | "line": 26 | 2695 | "line": 29 |
2405 | } | 2696 | } |
2406 | }, | 2697 | }, |
2407 | { | 2698 | { |
2408 | "defaultMessage": "!!!Manage your Team on meetfranz.com", | 2699 | "defaultMessage": "!!!Manage your Team on meetfranz.com", |
2409 | "end": { | 2700 | "end": { |
2410 | "column": 3, | 2701 | "column": 3, |
2411 | "line": 33 | 2702 | "line": 36 |
2412 | }, | 2703 | }, |
2413 | "file": "src/components/settings/team/TeamDashboard.js", | 2704 | "file": "src/components/settings/team/TeamDashboard.js", |
2414 | "id": "settings.team.manageAction", | 2705 | "id": "settings.team.manageAction", |
2415 | "start": { | 2706 | "start": { |
2416 | "column": 16, | 2707 | "column": 16, |
2417 | "line": 30 | 2708 | "line": 33 |
2418 | } | 2709 | } |
2419 | }, | 2710 | }, |
2420 | { | 2711 | { |
2421 | "defaultMessage": "!!!Upgrade your Account", | 2712 | "defaultMessage": "!!!Upgrade your Account", |
2422 | "end": { | 2713 | "end": { |
2423 | "column": 3, | 2714 | "column": 3, |
2424 | "line": 37 | 2715 | "line": 40 |
2425 | }, | 2716 | }, |
2426 | "file": "src/components/settings/team/TeamDashboard.js", | 2717 | "file": "src/components/settings/team/TeamDashboard.js", |
2427 | "id": "settings.team.upgradeAction", | 2718 | "id": "settings.team.upgradeAction", |
2428 | "start": { | 2719 | "start": { |
2429 | "column": 17, | 2720 | "column": 17, |
2430 | "line": 34 | 2721 | "line": 37 |
2431 | } | 2722 | } |
2432 | } | 2723 | } |
2433 | ], | 2724 | ], |
@@ -2519,220 +2810,435 @@ | |||
2519 | { | 2810 | { |
2520 | "descriptors": [ | 2811 | "descriptors": [ |
2521 | { | 2812 | { |
2522 | "defaultMessage": "!!!Support the development of Franz", | 2813 | "defaultMessage": "!!!Choose your plan", |
2814 | "end": { | ||
2815 | "column": 3, | ||
2816 | "line": 16 | ||
2817 | }, | ||
2818 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2819 | "id": "subscription.cta.choosePlan", | ||
2820 | "start": { | ||
2821 | "column": 21, | ||
2822 | "line": 13 | ||
2823 | } | ||
2824 | }, | ||
2825 | { | ||
2826 | "defaultMessage": "!!!Upgrade your account and get the full Franz experience", | ||
2523 | "end": { | 2827 | "end": { |
2524 | "column": 3, | 2828 | "column": 3, |
2829 | "line": 20 | ||
2830 | }, | ||
2831 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2832 | "id": "settings.account.headlineUpgradeAccount", | ||
2833 | "start": { | ||
2834 | "column": 18, | ||
2525 | "line": 17 | 2835 | "line": 17 |
2836 | } | ||
2837 | }, | ||
2838 | { | ||
2839 | "defaultMessage": "!!!Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | ||
2840 | "end": { | ||
2841 | "column": 3, | ||
2842 | "line": 24 | ||
2526 | }, | 2843 | }, |
2527 | "file": "src/components/subscription/SubscriptionForm.js", | 2844 | "file": "src/components/subscription/SubscriptionForm.js", |
2528 | "id": "subscription.submit.label", | 2845 | "id": "subscription.teaser.intro", |
2846 | "start": { | ||
2847 | "column": 14, | ||
2848 | "line": 21 | ||
2849 | } | ||
2850 | }, | ||
2851 | { | ||
2852 | "defaultMessage": "!!!Paid Franz Plans include:", | ||
2853 | "end": { | ||
2854 | "column": 3, | ||
2855 | "line": 28 | ||
2856 | }, | ||
2857 | "file": "src/components/subscription/SubscriptionForm.js", | ||
2858 | "id": "subscription.teaser.includedFeatures", | ||
2859 | "start": { | ||
2860 | "column": 20, | ||
2861 | "line": 25 | ||
2862 | } | ||
2863 | } | ||
2864 | ], | ||
2865 | "path": "src/components/subscription/SubscriptionForm.json" | ||
2866 | }, | ||
2867 | { | ||
2868 | "descriptors": [ | ||
2869 | { | ||
2870 | "defaultMessage": "!!!Cancel", | ||
2871 | "end": { | ||
2872 | "column": 3, | ||
2873 | "line": 14 | ||
2874 | }, | ||
2875 | "file": "src/components/subscription/SubscriptionPopup.js", | ||
2876 | "id": "subscriptionPopup.buttonCancel", | ||
2877 | "start": { | ||
2878 | "column": 16, | ||
2879 | "line": 11 | ||
2880 | } | ||
2881 | }, | ||
2882 | { | ||
2883 | "defaultMessage": "!!!Done", | ||
2884 | "end": { | ||
2885 | "column": 3, | ||
2886 | "line": 18 | ||
2887 | }, | ||
2888 | "file": "src/components/subscription/SubscriptionPopup.js", | ||
2889 | "id": "subscriptionPopup.buttonDone", | ||
2890 | "start": { | ||
2891 | "column": 14, | ||
2892 | "line": 15 | ||
2893 | } | ||
2894 | } | ||
2895 | ], | ||
2896 | "path": "src/components/subscription/SubscriptionPopup.json" | ||
2897 | }, | ||
2898 | { | ||
2899 | "descriptors": [ | ||
2900 | { | ||
2901 | "defaultMessage": "!!!Yes, start the free Franz Professional trial", | ||
2902 | "end": { | ||
2903 | "column": 3, | ||
2904 | "line": 17 | ||
2905 | }, | ||
2906 | "file": "src/components/subscription/TrialForm.js", | ||
2907 | "id": "subscription.cta.activateTrial", | ||
2529 | "start": { | 2908 | "start": { |
2530 | "column": 21, | 2909 | "column": 21, |
2531 | "line": 14 | 2910 | "line": 14 |
2532 | } | 2911 | } |
2533 | }, | 2912 | }, |
2534 | { | 2913 | { |
2535 | "defaultMessage": "!!!Could not initialize payment form", | 2914 | "defaultMessage": "!!!See all options", |
2536 | "end": { | 2915 | "end": { |
2537 | "column": 3, | 2916 | "column": 3, |
2538 | "line": 21 | 2917 | "line": 21 |
2539 | }, | 2918 | }, |
2540 | "file": "src/components/subscription/SubscriptionForm.js", | 2919 | "file": "src/components/subscription/TrialForm.js", |
2541 | "id": "subscription.paymentSessionError", | 2920 | "id": "subscription.cta.allOptions", |
2542 | "start": { | 2921 | "start": { |
2543 | "column": 23, | 2922 | "column": 20, |
2544 | "line": 18 | 2923 | "line": 18 |
2545 | } | 2924 | } |
2546 | }, | 2925 | }, |
2547 | { | 2926 | { |
2548 | "defaultMessage": "!!!free", | 2927 | "defaultMessage": "!!!Get the free 14 day Franz Professional Trial", |
2549 | "end": { | 2928 | "end": { |
2550 | "column": 3, | 2929 | "column": 3, |
2551 | "line": 25 | 2930 | "line": 25 |
2552 | }, | 2931 | }, |
2553 | "file": "src/components/subscription/SubscriptionForm.js", | 2932 | "file": "src/components/subscription/TrialForm.js", |
2554 | "id": "subscription.type.free", | 2933 | "id": "settings.account.headlineTrialUpgrade", |
2555 | "start": { | 2934 | "start": { |
2556 | "column": 12, | 2935 | "column": 18, |
2557 | "line": 22 | 2936 | "line": 22 |
2558 | } | 2937 | } |
2559 | }, | 2938 | }, |
2560 | { | 2939 | { |
2561 | "defaultMessage": "!!!month", | 2940 | "defaultMessage": "!!!The Franz Professional Plan includes:", |
2562 | "end": { | 2941 | "end": { |
2563 | "column": 3, | 2942 | "column": 3, |
2564 | "line": 29 | 2943 | "line": 29 |
2565 | }, | 2944 | }, |
2566 | "file": "src/components/subscription/SubscriptionForm.js", | 2945 | "file": "src/components/subscription/TrialForm.js", |
2567 | "id": "subscription.type.month", | 2946 | "id": "subscription.includedProFeatures", |
2568 | "start": { | 2947 | "start": { |
2569 | "column": 15, | 2948 | "column": 20, |
2570 | "line": 26 | 2949 | "line": 26 |
2571 | } | 2950 | } |
2572 | }, | 2951 | }, |
2573 | { | 2952 | { |
2574 | "defaultMessage": "!!!year", | 2953 | "defaultMessage": "!!!No strings attached", |
2575 | "end": { | 2954 | "end": { |
2576 | "column": 3, | 2955 | "column": 3, |
2577 | "line": 33 | 2956 | "line": 33 |
2578 | }, | 2957 | }, |
2579 | "file": "src/components/subscription/SubscriptionForm.js", | 2958 | "file": "src/components/subscription/TrialForm.js", |
2580 | "id": "subscription.type.year", | 2959 | "id": "pricing.trial.terms.headline", |
2581 | "start": { | 2960 | "start": { |
2582 | "column": 14, | 2961 | "column": 29, |
2583 | "line": 30 | 2962 | "line": 30 |
2584 | } | 2963 | } |
2585 | }, | 2964 | }, |
2586 | { | 2965 | { |
2587 | "defaultMessage": "!!!The Ferdi Premium Supporter Account includes", | 2966 | "defaultMessage": "!!!No credit card required", |
2588 | "end": { | 2967 | "end": { |
2589 | "column": 3, | 2968 | "column": 3, |
2590 | "line": 37 | 2969 | "line": 37 |
2591 | }, | 2970 | }, |
2592 | "file": "src/components/subscription/SubscriptionForm.js", | 2971 | "file": "src/components/subscription/TrialForm.js", |
2593 | "id": "subscription.includedFeatures", | 2972 | "id": "pricing.trial.terms.noCreditCard", |
2594 | "start": { | 2973 | "start": { |
2595 | "column": 20, | 2974 | "column": 16, |
2596 | "line": 34 | 2975 | "line": 34 |
2597 | } | 2976 | } |
2598 | }, | 2977 | }, |
2599 | { | 2978 | { |
2600 | "defaultMessage": "!!!Add on-premise/hosted services like Mattermost", | 2979 | "defaultMessage": "!!!Your free trial ends automatically after 14 days", |
2601 | "end": { | 2980 | "end": { |
2602 | "column": 3, | 2981 | "column": 3, |
2603 | "line": 41 | 2982 | "line": 41 |
2604 | }, | 2983 | }, |
2605 | "file": "src/components/subscription/SubscriptionForm.js", | 2984 | "file": "src/components/subscription/TrialForm.js", |
2606 | "id": "subscription.features.onpremise.mattermost", | 2985 | "id": "pricing.trial.terms.automaticTrialEnd", |
2607 | "start": { | 2986 | "start": { |
2608 | "column": 13, | 2987 | "column": 21, |
2609 | "line": 38 | 2988 | "line": 38 |
2610 | } | 2989 | } |
2611 | }, | 2990 | } |
2991 | ], | ||
2992 | "path": "src/components/subscription/TrialForm.json" | ||
2993 | }, | ||
2994 | { | ||
2995 | "descriptors": [ | ||
2612 | { | 2996 | { |
2613 | "defaultMessage": "!!!No app delays & nagging to upgrade license", | 2997 | "defaultMessage": "!!!Your trial was successfully activated. Happy messaging!", |
2614 | "end": { | 2998 | "end": { |
2615 | "column": 3, | 2999 | "column": 3, |
2616 | "line": 45 | 3000 | "line": 14 |
2617 | }, | 3001 | }, |
2618 | "file": "src/components/subscription/SubscriptionForm.js", | 3002 | "file": "src/components/TrialActivationInfoBar.js", |
2619 | "id": "subscription.features.noInterruptions", | 3003 | "id": "infobar.trialActivated", |
2620 | "start": { | 3004 | "start": { |
2621 | "column": 19, | 3005 | "column": 11, |
2622 | "line": 42 | 3006 | "line": 11 |
3007 | } | ||
3008 | } | ||
3009 | ], | ||
3010 | "path": "src/components/TrialActivationInfoBar.json" | ||
3011 | }, | ||
3012 | { | ||
3013 | "descriptors": [ | ||
3014 | { | ||
3015 | "defaultMessage": "!!!Get a Franz Supporter License", | ||
3016 | "end": { | ||
3017 | "column": 3, | ||
3018 | "line": 15 | ||
3019 | }, | ||
3020 | "file": "src/components/ui/ActivateTrialButton/index.js", | ||
3021 | "id": "feature.delayApp.upgrade.action", | ||
3022 | "start": { | ||
3023 | "column": 10, | ||
3024 | "line": 12 | ||
2623 | } | 3025 | } |
2624 | }, | 3026 | }, |
2625 | { | 3027 | { |
2626 | "defaultMessage": "!!!Proxy support for services", | 3028 | "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional", |
2627 | "end": { | 3029 | "end": { |
2628 | "column": 3, | 3030 | "column": 3, |
2629 | "line": 49 | 3031 | "line": 19 |
2630 | }, | 3032 | }, |
2631 | "file": "src/components/subscription/SubscriptionForm.js", | 3033 | "file": "src/components/ui/ActivateTrialButton/index.js", |
2632 | "id": "subscription.features.proxy", | 3034 | "id": "feature.delayApp.trial.action", |
2633 | "start": { | 3035 | "start": { |
2634 | "column": 9, | 3036 | "column": 15, |
2635 | "line": 46 | 3037 | "line": 16 |
2636 | } | 3038 | } |
2637 | }, | 3039 | }, |
2638 | { | 3040 | { |
2639 | "defaultMessage": "!!!Support for Spellchecker", | 3041 | "defaultMessage": "!!!Upgrade account", |
2640 | "end": { | 3042 | "end": { |
2641 | "column": 3, | 3043 | "column": 3, |
2642 | "line": 53 | 3044 | "line": 23 |
2643 | }, | 3045 | }, |
2644 | "file": "src/components/subscription/SubscriptionForm.js", | 3046 | "file": "src/components/ui/ActivateTrialButton/index.js", |
2645 | "id": "subscription.features.spellchecker", | 3047 | "id": "feature.delayApp.upgrade.actionShort", |
2646 | "start": { | 3048 | "start": { |
2647 | "column": 16, | 3049 | "column": 15, |
2648 | "line": 50 | 3050 | "line": 20 |
2649 | } | 3051 | } |
2650 | }, | 3052 | }, |
2651 | { | 3053 | { |
2652 | "defaultMessage": "!!!Organize your services in workspaces", | 3054 | "defaultMessage": "!!!Activate the free Franz Professional trial", |
2653 | "end": { | 3055 | "end": { |
2654 | "column": 3, | 3056 | "column": 3, |
2655 | "line": 57 | 3057 | "line": 27 |
2656 | }, | 3058 | }, |
2657 | "file": "src/components/subscription/SubscriptionForm.js", | 3059 | "file": "src/components/ui/ActivateTrialButton/index.js", |
2658 | "id": "subscription.features.workspaces", | 3060 | "id": "feature.delayApp.trial.actionShort", |
2659 | "start": { | 3061 | "start": { |
2660 | "column": 14, | 3062 | "column": 20, |
2661 | "line": 54 | 3063 | "line": 24 |
2662 | } | 3064 | } |
2663 | }, | 3065 | }, |
2664 | { | 3066 | { |
2665 | "defaultMessage": "!!!No ads, ever!", | 3067 | "defaultMessage": "!!!No strings attached", |
2666 | "end": { | 3068 | "end": { |
2667 | "column": 3, | 3069 | "column": 3, |
2668 | "line": 61 | 3070 | "line": 31 |
2669 | }, | 3071 | }, |
2670 | "file": "src/components/subscription/SubscriptionForm.js", | 3072 | "file": "src/components/ui/ActivateTrialButton/index.js", |
2671 | "id": "subscription.features.ads", | 3073 | "id": "pricing.trial.terms.headline", |
2672 | "start": { | 3074 | "start": { |
2673 | "column": 7, | 3075 | "column": 29, |
2674 | "line": 58 | 3076 | "line": 28 |
2675 | } | 3077 | } |
2676 | }, | 3078 | }, |
2677 | { | 3079 | { |
2678 | "defaultMessage": "!!!coming soon", | 3080 | "defaultMessage": "!!!No credit card required", |
2679 | "end": { | 3081 | "end": { |
2680 | "column": 3, | 3082 | "column": 3, |
2681 | "line": 65 | 3083 | "line": 35 |
2682 | }, | 3084 | }, |
2683 | "file": "src/components/subscription/SubscriptionForm.js", | 3085 | "file": "src/components/ui/ActivateTrialButton/index.js", |
2684 | "id": "subscription.features.comingSoon", | 3086 | "id": "pricing.trial.terms.noCreditCard", |
2685 | "start": { | 3087 | "start": { |
2686 | "column": 14, | 3088 | "column": 16, |
2687 | "line": 62 | 3089 | "line": 32 |
2688 | } | 3090 | } |
2689 | }, | 3091 | }, |
2690 | { | 3092 | { |
2691 | "defaultMessage": "!!!EU residents: local sales tax may apply", | 3093 | "defaultMessage": "!!!Your free trial ends automatically after 14 days", |
2692 | "end": { | 3094 | "end": { |
2693 | "column": 3, | 3095 | "column": 3, |
2694 | "line": 69 | 3096 | "line": 39 |
2695 | }, | 3097 | }, |
2696 | "file": "src/components/subscription/SubscriptionForm.js", | 3098 | "file": "src/components/ui/ActivateTrialButton/index.js", |
2697 | "id": "subscription.euTaxInfo", | 3099 | "id": "pricing.trial.terms.automaticTrialEnd", |
2698 | "start": { | 3100 | "start": { |
2699 | "column": 13, | 3101 | "column": 21, |
2700 | "line": 66 | 3102 | "line": 36 |
2701 | } | 3103 | } |
2702 | } | 3104 | } |
2703 | ], | 3105 | ], |
2704 | "path": "src/components/subscription/SubscriptionForm.json" | 3106 | "path": "src/components/ui/ActivateTrialButton/index.json" |
2705 | }, | 3107 | }, |
2706 | { | 3108 | { |
2707 | "descriptors": [ | 3109 | "descriptors": [ |
2708 | { | 3110 | { |
2709 | "defaultMessage": "!!!Cancel", | 3111 | "defaultMessage": "!!!Add unlimited services", |
2710 | "end": { | 3112 | "end": { |
2711 | "column": 3, | 3113 | "column": 3, |
2712 | "line": 14 | 3114 | "line": 11 |
2713 | }, | 3115 | }, |
2714 | "file": "src/components/subscription/SubscriptionPopup.js", | 3116 | "file": "src/components/ui/FeatureList.js", |
2715 | "id": "subscriptionPopup.buttonCancel", | 3117 | "id": "pricing.features.unlimitedServices", |
3118 | "start": { | ||
3119 | "column": 21, | ||
3120 | "line": 8 | ||
3121 | } | ||
3122 | }, | ||
3123 | { | ||
3124 | "defaultMessage": "!!!Spellchecker support", | ||
3125 | "end": { | ||
3126 | "column": 3, | ||
3127 | "line": 15 | ||
3128 | }, | ||
3129 | "file": "src/components/ui/FeatureList.js", | ||
3130 | "id": "pricing.features.spellchecker", | ||
2716 | "start": { | 3131 | "start": { |
2717 | "column": 16, | 3132 | "column": 16, |
2718 | "line": 11 | 3133 | "line": 12 |
2719 | } | 3134 | } |
2720 | }, | 3135 | }, |
2721 | { | 3136 | { |
2722 | "defaultMessage": "!!!Done", | 3137 | "defaultMessage": "!!!Workspaces", |
2723 | "end": { | 3138 | "end": { |
2724 | "column": 3, | 3139 | "column": 3, |
2725 | "line": 18 | 3140 | "line": 19 |
2726 | }, | 3141 | }, |
2727 | "file": "src/components/subscription/SubscriptionPopup.js", | 3142 | "file": "src/components/ui/FeatureList.js", |
2728 | "id": "subscriptionPopup.buttonDone", | 3143 | "id": "pricing.features.workspaces", |
2729 | "start": { | 3144 | "start": { |
2730 | "column": 14, | 3145 | "column": 14, |
2731 | "line": 15 | 3146 | "line": 16 |
3147 | } | ||
3148 | }, | ||
3149 | { | ||
3150 | "defaultMessage": "!!!Add Custom Websites", | ||
3151 | "end": { | ||
3152 | "column": 3, | ||
3153 | "line": 23 | ||
3154 | }, | ||
3155 | "file": "src/components/ui/FeatureList.js", | ||
3156 | "id": "pricing.features.customWebsites", | ||
3157 | "start": { | ||
3158 | "column": 18, | ||
3159 | "line": 20 | ||
3160 | } | ||
3161 | }, | ||
3162 | { | ||
3163 | "defaultMessage": "!!!On-premise & other Hosted Services", | ||
3164 | "end": { | ||
3165 | "column": 3, | ||
3166 | "line": 27 | ||
3167 | }, | ||
3168 | "file": "src/components/ui/FeatureList.js", | ||
3169 | "id": "pricing.features.onPremise", | ||
3170 | "start": { | ||
3171 | "column": 13, | ||
3172 | "line": 24 | ||
3173 | } | ||
3174 | }, | ||
3175 | { | ||
3176 | "defaultMessage": "!!!Install 3rd party services", | ||
3177 | "end": { | ||
3178 | "column": 3, | ||
3179 | "line": 31 | ||
3180 | }, | ||
3181 | "file": "src/components/ui/FeatureList.js", | ||
3182 | "id": "pricing.features.thirdPartyServices", | ||
3183 | "start": { | ||
3184 | "column": 22, | ||
3185 | "line": 28 | ||
3186 | } | ||
3187 | }, | ||
3188 | { | ||
3189 | "defaultMessage": "!!!Service Proxies", | ||
3190 | "end": { | ||
3191 | "column": 3, | ||
3192 | "line": 35 | ||
3193 | }, | ||
3194 | "file": "src/components/ui/FeatureList.js", | ||
3195 | "id": "pricing.features.serviceProxies", | ||
3196 | "start": { | ||
3197 | "column": 18, | ||
3198 | "line": 32 | ||
3199 | } | ||
3200 | }, | ||
3201 | { | ||
3202 | "defaultMessage": "!!!Team Management", | ||
3203 | "end": { | ||
3204 | "column": 3, | ||
3205 | "line": 39 | ||
3206 | }, | ||
3207 | "file": "src/components/ui/FeatureList.js", | ||
3208 | "id": "pricing.features.teamManagement", | ||
3209 | "start": { | ||
3210 | "column": 18, | ||
3211 | "line": 36 | ||
3212 | } | ||
3213 | }, | ||
3214 | { | ||
3215 | "defaultMessage": "!!!No Waiting Screens", | ||
3216 | "end": { | ||
3217 | "column": 3, | ||
3218 | "line": 43 | ||
3219 | }, | ||
3220 | "file": "src/components/ui/FeatureList.js", | ||
3221 | "id": "pricing.features.appDelays", | ||
3222 | "start": { | ||
3223 | "column": 13, | ||
3224 | "line": 40 | ||
3225 | } | ||
3226 | }, | ||
3227 | { | ||
3228 | "defaultMessage": "!!!Forever ad-free", | ||
3229 | "end": { | ||
3230 | "column": 3, | ||
3231 | "line": 47 | ||
3232 | }, | ||
3233 | "file": "src/components/ui/FeatureList.js", | ||
3234 | "id": "pricing.features.adFree", | ||
3235 | "start": { | ||
3236 | "column": 10, | ||
3237 | "line": 44 | ||
2732 | } | 3238 | } |
2733 | } | 3239 | } |
2734 | ], | 3240 | ], |
2735 | "path": "src/components/subscription/SubscriptionPopup.json" | 3241 | "path": "src/components/ui/FeatureList.json" |
2736 | }, | 3242 | }, |
2737 | { | 3243 | { |
2738 | "descriptors": [ | 3244 | "descriptors": [ |
@@ -2740,13 +3246,13 @@ | |||
2740 | "defaultMessage": "!!!Upgrade account", | 3246 | "defaultMessage": "!!!Upgrade account", |
2741 | "end": { | 3247 | "end": { |
2742 | "column": 3, | 3248 | "column": 3, |
2743 | "line": 17 | 3249 | "line": 18 |
2744 | }, | 3250 | }, |
2745 | "file": "src/components/ui/PremiumFeatureContainer/index.js", | 3251 | "file": "src/components/ui/PremiumFeatureContainer/index.js", |
2746 | "id": "premiumFeature.button.upgradeAccount", | 3252 | "id": "premiumFeature.button.upgradeAccount", |
2747 | "start": { | 3253 | "start": { |
2748 | "column": 10, | 3254 | "column": 10, |
2749 | "line": 14 | 3255 | "line": 15 |
2750 | } | 3256 | } |
2751 | } | 3257 | } |
2752 | ], | 3258 | ], |
@@ -2755,6 +3261,24 @@ | |||
2755 | { | 3261 | { |
2756 | "descriptors": [ | 3262 | "descriptors": [ |
2757 | { | 3263 | { |
3264 | "defaultMessage": "!!!Upgrade to Franz Professional", | ||
3265 | "end": { | ||
3266 | "column": 3, | ||
3267 | "line": 15 | ||
3268 | }, | ||
3269 | "file": "src/components/ui/UpgradeButton/index.js", | ||
3270 | "id": "global.upgradeButton.upgradeToPro", | ||
3271 | "start": { | ||
3272 | "column": 16, | ||
3273 | "line": 12 | ||
3274 | } | ||
3275 | } | ||
3276 | ], | ||
3277 | "path": "src/components/ui/UpgradeButton/index.json" | ||
3278 | }, | ||
3279 | { | ||
3280 | "descriptors": [ | ||
3281 | { | ||
2758 | "defaultMessage": "!!!Loading", | 3282 | "defaultMessage": "!!!Loading", |
2759 | "end": { | 3283 | "end": { |
2760 | "column": 3, | 3284 | "column": 3, |
@@ -3004,172 +3528,185 @@ | |||
3004 | { | 3528 | { |
3005 | "descriptors": [ | 3529 | "descriptors": [ |
3006 | { | 3530 | { |
3007 | "defaultMessage": "!!!Launch Ferdi on start", | 3531 | "defaultMessage": "!!!Launch Franz on start", |
3008 | "end": { | 3532 | "end": { |
3009 | "column": 3, | 3533 | "column": 3, |
3010 | "line": 27 | 3534 | "line": 29 |
3011 | }, | 3535 | }, |
3012 | "file": "src/containers/settings/EditSettingsScreen.js", | 3536 | "file": "src/containers/settings/EditSettingsScreen.js", |
3013 | "id": "settings.app.form.autoLaunchOnStart", | 3537 | "id": "settings.app.form.autoLaunchOnStart", |
3014 | "start": { | 3538 | "start": { |
3015 | "column": 21, | 3539 | "column": 21, |
3016 | "line": 24 | 3540 | "line": 26 |
3017 | } | 3541 | } |
3018 | }, | 3542 | }, |
3019 | { | 3543 | { |
3020 | "defaultMessage": "!!!Open in background", | 3544 | "defaultMessage": "!!!Open in background", |
3021 | "end": { | 3545 | "end": { |
3022 | "column": 3, | 3546 | "column": 3, |
3023 | "line": 31 | 3547 | "line": 33 |
3024 | }, | 3548 | }, |
3025 | "file": "src/containers/settings/EditSettingsScreen.js", | 3549 | "file": "src/containers/settings/EditSettingsScreen.js", |
3026 | "id": "settings.app.form.autoLaunchInBackground", | 3550 | "id": "settings.app.form.autoLaunchInBackground", |
3027 | "start": { | 3551 | "start": { |
3028 | "column": 26, | 3552 | "column": 26, |
3029 | "line": 28 | 3553 | "line": 30 |
3030 | } | 3554 | } |
3031 | }, | 3555 | }, |
3032 | { | 3556 | { |
3033 | "defaultMessage": "!!!Keep Ferdi in background when closing the window", | 3557 | "defaultMessage": "!!!Keep Franz in background when closing the window", |
3034 | "end": { | 3558 | "end": { |
3035 | "column": 3, | 3559 | "column": 3, |
3036 | "line": 35 | 3560 | "line": 37 |
3037 | }, | 3561 | }, |
3038 | "file": "src/containers/settings/EditSettingsScreen.js", | 3562 | "file": "src/containers/settings/EditSettingsScreen.js", |
3039 | "id": "settings.app.form.runInBackground", | 3563 | "id": "settings.app.form.runInBackground", |
3040 | "start": { | 3564 | "start": { |
3041 | "column": 19, | 3565 | "column": 19, |
3042 | "line": 32 | 3566 | "line": 34 |
3043 | } | 3567 | } |
3044 | }, | 3568 | }, |
3045 | { | 3569 | { |
3046 | "defaultMessage": "!!!Show Ferdi in system tray", | 3570 | "defaultMessage": "!!!Show Franz in system tray", |
3047 | "end": { | 3571 | "end": { |
3048 | "column": 3, | 3572 | "column": 3, |
3049 | "line": 39 | 3573 | "line": 41 |
3050 | }, | 3574 | }, |
3051 | "file": "src/containers/settings/EditSettingsScreen.js", | 3575 | "file": "src/containers/settings/EditSettingsScreen.js", |
3052 | "id": "settings.app.form.enableSystemTray", | 3576 | "id": "settings.app.form.enableSystemTray", |
3053 | "start": { | 3577 | "start": { |
3054 | "column": 20, | 3578 | "column": 20, |
3055 | "line": 36 | 3579 | "line": 38 |
3056 | } | 3580 | } |
3057 | }, | 3581 | }, |
3058 | { | 3582 | { |
3059 | "defaultMessage": "!!!Minimize Ferdi to system tray", | 3583 | "defaultMessage": "!!!Minimize Franz to system tray", |
3060 | "end": { | 3584 | "end": { |
3061 | "column": 3, | 3585 | "column": 3, |
3062 | "line": 43 | 3586 | "line": 45 |
3063 | }, | 3587 | }, |
3064 | "file": "src/containers/settings/EditSettingsScreen.js", | 3588 | "file": "src/containers/settings/EditSettingsScreen.js", |
3065 | "id": "settings.app.form.minimizeToSystemTray", | 3589 | "id": "settings.app.form.minimizeToSystemTray", |
3066 | "start": { | 3590 | "start": { |
3067 | "column": 24, | 3591 | "column": 24, |
3068 | "line": 40 | 3592 | "line": 42 |
3069 | } | ||
3070 | }, | ||
3071 | { | ||
3072 | "defaultMessage": "!!!Server", | ||
3073 | "end": { | ||
3074 | "column": 3, | ||
3075 | "line": 47 | ||
3076 | }, | ||
3077 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
3078 | "id": "settings.app.form.server", | ||
3079 | "start": { | ||
3080 | "column": 10, | ||
3081 | "line": 44 | ||
3082 | } | 3593 | } |
3083 | }, | 3594 | }, |
3084 | { | 3595 | { |
3085 | "defaultMessage": "!!!Language", | 3596 | "defaultMessage": "!!!Language", |
3086 | "end": { | 3597 | "end": { |
3087 | "column": 3, | 3598 | "column": 3, |
3088 | "line": 51 | 3599 | "line": 49 |
3089 | }, | 3600 | }, |
3090 | "file": "src/containers/settings/EditSettingsScreen.js", | 3601 | "file": "src/containers/settings/EditSettingsScreen.js", |
3091 | "id": "settings.app.form.language", | 3602 | "id": "settings.app.form.language", |
3092 | "start": { | 3603 | "start": { |
3093 | "column": 12, | 3604 | "column": 12, |
3094 | "line": 48 | 3605 | "line": 46 |
3095 | } | 3606 | } |
3096 | }, | 3607 | }, |
3097 | { | 3608 | { |
3098 | "defaultMessage": "!!!Dark Mode", | 3609 | "defaultMessage": "!!!Dark Mode", |
3099 | "end": { | 3610 | "end": { |
3100 | "column": 3, | 3611 | "column": 3, |
3101 | "line": 55 | 3612 | "line": 53 |
3102 | }, | 3613 | }, |
3103 | "file": "src/containers/settings/EditSettingsScreen.js", | 3614 | "file": "src/containers/settings/EditSettingsScreen.js", |
3104 | "id": "settings.app.form.darkMode", | 3615 | "id": "settings.app.form.darkMode", |
3105 | "start": { | 3616 | "start": { |
3106 | "column": 12, | 3617 | "column": 12, |
3107 | "line": 52 | 3618 | "line": 50 |
3108 | } | 3619 | } |
3109 | }, | 3620 | }, |
3110 | { | 3621 | { |
3111 | "defaultMessage": "!!!Display disabled services tabs", | 3622 | "defaultMessage": "!!!Display disabled services tabs", |
3112 | "end": { | 3623 | "end": { |
3113 | "column": 3, | 3624 | "column": 3, |
3114 | "line": 59 | 3625 | "line": 57 |
3115 | }, | 3626 | }, |
3116 | "file": "src/containers/settings/EditSettingsScreen.js", | 3627 | "file": "src/containers/settings/EditSettingsScreen.js", |
3117 | "id": "settings.app.form.showDisabledServices", | 3628 | "id": "settings.app.form.showDisabledServices", |
3118 | "start": { | 3629 | "start": { |
3119 | "column": 24, | 3630 | "column": 24, |
3120 | "line": 56 | 3631 | "line": 54 |
3121 | } | 3632 | } |
3122 | }, | 3633 | }, |
3123 | { | 3634 | { |
3124 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", | 3635 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", |
3125 | "end": { | 3636 | "end": { |
3126 | "column": 3, | 3637 | "column": 3, |
3127 | "line": 63 | 3638 | "line": 61 |
3128 | }, | 3639 | }, |
3129 | "file": "src/containers/settings/EditSettingsScreen.js", | 3640 | "file": "src/containers/settings/EditSettingsScreen.js", |
3130 | "id": "settings.app.form.showMessagesBadgesWhenMuted", | 3641 | "id": "settings.app.form.showMessagesBadgesWhenMuted", |
3131 | "start": { | 3642 | "start": { |
3132 | "column": 29, | 3643 | "column": 29, |
3133 | "line": 60 | 3644 | "line": 58 |
3134 | } | 3645 | } |
3135 | }, | 3646 | }, |
3136 | { | 3647 | { |
3137 | "defaultMessage": "!!!Enable spell checking", | 3648 | "defaultMessage": "!!!Enable spell checking", |
3138 | "end": { | 3649 | "end": { |
3139 | "column": 3, | 3650 | "column": 3, |
3140 | "line": 67 | 3651 | "line": 65 |
3141 | }, | 3652 | }, |
3142 | "file": "src/containers/settings/EditSettingsScreen.js", | 3653 | "file": "src/containers/settings/EditSettingsScreen.js", |
3143 | "id": "settings.app.form.enableSpellchecking", | 3654 | "id": "settings.app.form.enableSpellchecking", |
3144 | "start": { | 3655 | "start": { |
3145 | "column": 23, | 3656 | "column": 23, |
3146 | "line": 64 | 3657 | "line": 62 |
3147 | } | 3658 | } |
3148 | }, | 3659 | }, |
3149 | { | 3660 | { |
3150 | "defaultMessage": "!!!Enable GPU Acceleration", | 3661 | "defaultMessage": "!!!Enable GPU Acceleration", |
3151 | "end": { | 3662 | "end": { |
3152 | "column": 3, | 3663 | "column": 3, |
3153 | "line": 71 | 3664 | "line": 69 |
3154 | }, | 3665 | }, |
3155 | "file": "src/containers/settings/EditSettingsScreen.js", | 3666 | "file": "src/containers/settings/EditSettingsScreen.js", |
3156 | "id": "settings.app.form.enableGPUAcceleration", | 3667 | "id": "settings.app.form.enableGPUAcceleration", |
3157 | "start": { | 3668 | "start": { |
3158 | "column": 25, | 3669 | "column": 25, |
3159 | "line": 68 | 3670 | "line": 66 |
3160 | } | 3671 | } |
3161 | }, | 3672 | }, |
3162 | { | 3673 | { |
3163 | "defaultMessage": "!!!Include beta versions", | 3674 | "defaultMessage": "!!!Include beta versions", |
3164 | "end": { | 3675 | "end": { |
3165 | "column": 3, | 3676 | "column": 3, |
3166 | "line": 75 | 3677 | "line": 73 |
3167 | }, | 3678 | }, |
3168 | "file": "src/containers/settings/EditSettingsScreen.js", | 3679 | "file": "src/containers/settings/EditSettingsScreen.js", |
3169 | "id": "settings.app.form.beta", | 3680 | "id": "settings.app.form.beta", |
3170 | "start": { | 3681 | "start": { |
3171 | "column": 8, | 3682 | "column": 8, |
3172 | "line": 72 | 3683 | "line": 70 |
3684 | } | ||
3685 | }, | ||
3686 | { | ||
3687 | "defaultMessage": "!!!Enable Franz Todos", | ||
3688 | "end": { | ||
3689 | "column": 3, | ||
3690 | "line": 77 | ||
3691 | }, | ||
3692 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
3693 | "id": "settings.app.form.enableTodos", | ||
3694 | "start": { | ||
3695 | "column": 15, | ||
3696 | "line": 74 | ||
3697 | } | ||
3698 | }, | ||
3699 | { | ||
3700 | "defaultMessage": "!!!Keep all workspaces loaded", | ||
3701 | "end": { | ||
3702 | "column": 3, | ||
3703 | "line": 81 | ||
3704 | }, | ||
3705 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
3706 | "id": "settings.app.form.keepAllWorkspacesLoaded", | ||
3707 | "start": { | ||
3708 | "column": 27, | ||
3709 | "line": 78 | ||
3173 | } | 3710 | } |
3174 | } | 3711 | } |
3175 | ], | 3712 | ], |
@@ -3321,39 +3858,65 @@ | |||
3321 | "defaultMessage": "!!!Please purchase license to skip waiting", | 3858 | "defaultMessage": "!!!Please purchase license to skip waiting", |
3322 | "end": { | 3859 | "end": { |
3323 | "column": 3, | 3860 | "column": 3, |
3324 | "line": 16 | 3861 | "line": 17 |
3325 | }, | 3862 | }, |
3326 | "file": "src/features/delayApp/Component.js", | 3863 | "file": "src/features/delayApp/Component.js", |
3327 | "id": "feature.delayApp.headline", | 3864 | "id": "feature.delayApp.headline", |
3328 | "start": { | 3865 | "start": { |
3329 | "column": 12, | 3866 | "column": 12, |
3330 | "line": 13 | 3867 | "line": 14 |
3331 | } | 3868 | } |
3332 | }, | 3869 | }, |
3333 | { | 3870 | { |
3334 | "defaultMessage": "!!!Get a Ferdi Supporter License", | 3871 | "defaultMessage": "!!!Get the free Franz Professional 14 day trial and skip the line", |
3335 | "end": { | 3872 | "end": { |
3336 | "column": 3, | 3873 | "column": 3, |
3337 | "line": 20 | 3874 | "line": 21 |
3338 | }, | 3875 | }, |
3339 | "file": "src/features/delayApp/Component.js", | 3876 | "file": "src/features/delayApp/Component.js", |
3340 | "id": "feature.delayApp.action", | 3877 | "id": "feature.delayApp.trial.headline", |
3878 | "start": { | ||
3879 | "column": 17, | ||
3880 | "line": 18 | ||
3881 | } | ||
3882 | }, | ||
3883 | { | ||
3884 | "defaultMessage": "!!!Get a Franz Supporter License", | ||
3885 | "end": { | ||
3886 | "column": 3, | ||
3887 | "line": 25 | ||
3888 | }, | ||
3889 | "file": "src/features/delayApp/Component.js", | ||
3890 | "id": "feature.delayApp.upgrade.action", | ||
3341 | "start": { | 3891 | "start": { |
3342 | "column": 10, | 3892 | "column": 10, |
3343 | "line": 17 | 3893 | "line": 22 |
3894 | } | ||
3895 | }, | ||
3896 | { | ||
3897 | "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional", | ||
3898 | "end": { | ||
3899 | "column": 3, | ||
3900 | "line": 29 | ||
3901 | }, | ||
3902 | "file": "src/features/delayApp/Component.js", | ||
3903 | "id": "feature.delayApp.trial.action", | ||
3904 | "start": { | ||
3905 | "column": 15, | ||
3906 | "line": 26 | ||
3344 | } | 3907 | } |
3345 | }, | 3908 | }, |
3346 | { | 3909 | { |
3347 | "defaultMessage": "!!!Ferdi will continue in {seconds} seconds.", | 3910 | "defaultMessage": "!!!Ferdi will continue in {seconds} seconds.", |
3348 | "end": { | 3911 | "end": { |
3349 | "column": 3, | 3912 | "column": 3, |
3350 | "line": 24 | 3913 | "line": 33 |
3351 | }, | 3914 | }, |
3352 | "file": "src/features/delayApp/Component.js", | 3915 | "file": "src/features/delayApp/Component.js", |
3353 | "id": "feature.delayApp.text", | 3916 | "id": "feature.delayApp.text", |
3354 | "start": { | 3917 | "start": { |
3355 | "column": 8, | 3918 | "column": 8, |
3356 | "line": 21 | 3919 | "line": 30 |
3357 | } | 3920 | } |
3358 | } | 3921 | } |
3359 | ], | 3922 | ], |
@@ -3362,94 +3925,143 @@ | |||
3362 | { | 3925 | { |
3363 | "descriptors": [ | 3926 | "descriptors": [ |
3364 | { | 3927 | { |
3928 | "defaultMessage": "!!!Changes in Franz {version}", | ||
3929 | "end": { | ||
3930 | "column": 3, | ||
3931 | "line": 23 | ||
3932 | }, | ||
3933 | "file": "src/features/serviceLimit/components/AnnouncementScreen.js", | ||
3934 | "id": "feature.announcements.changelog.headline", | ||
3935 | "start": { | ||
3936 | "column": 12, | ||
3937 | "line": 20 | ||
3938 | } | ||
3939 | } | ||
3940 | ], | ||
3941 | "path": "src/features/serviceLimit/components/AnnouncementScreen.json" | ||
3942 | }, | ||
3943 | { | ||
3944 | "descriptors": [ | ||
3945 | { | ||
3946 | "defaultMessage": "!!!You have added {amount} of {limit} services. Please upgrade your account to add more services.", | ||
3947 | "end": { | ||
3948 | "column": 3, | ||
3949 | "line": 12 | ||
3950 | }, | ||
3951 | "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", | ||
3952 | "id": "feature.serviceLimit.limitReached", | ||
3953 | "start": { | ||
3954 | "column": 16, | ||
3955 | "line": 9 | ||
3956 | } | ||
3957 | }, | ||
3958 | { | ||
3959 | "defaultMessage": "!!!Upgrade account", | ||
3960 | "end": { | ||
3961 | "column": 3, | ||
3962 | "line": 16 | ||
3963 | }, | ||
3964 | "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", | ||
3965 | "id": "premiumFeature.button.upgradeAccount", | ||
3966 | "start": { | ||
3967 | "column": 10, | ||
3968 | "line": 13 | ||
3969 | } | ||
3970 | } | ||
3971 | ], | ||
3972 | "path": "src/features/serviceLimit/components/LimitReachedInfobox.json" | ||
3973 | }, | ||
3974 | { | ||
3975 | "descriptors": [ | ||
3976 | { | ||
3365 | "defaultMessage": "!!!Ferdi is better together!", | 3977 | "defaultMessage": "!!!Ferdi is better together!", |
3366 | "end": { | 3978 | "end": { |
3367 | "column": 3, | 3979 | "column": 3, |
3368 | "line": 17 | 3980 | "line": 20 |
3369 | }, | 3981 | }, |
3370 | "file": "src/features/shareFranz/Component.js", | 3982 | "file": "src/features/shareFranz/Component.js", |
3371 | "id": "feature.shareFranz.headline", | 3983 | "id": "feature.shareFranz.headline", |
3372 | "start": { | 3984 | "start": { |
3373 | "column": 12, | 3985 | "column": 12, |
3374 | "line": 14 | 3986 | "line": 17 |
3375 | } | 3987 | } |
3376 | }, | 3988 | }, |
3377 | { | 3989 | { |
3378 | "defaultMessage": "!!!Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 3990 | "defaultMessage": "!!!Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", |
3379 | "end": { | 3991 | "end": { |
3380 | "column": 3, | 3992 | "column": 3, |
3381 | "line": 21 | 3993 | "line": 24 |
3382 | }, | 3994 | }, |
3383 | "file": "src/features/shareFranz/Component.js", | 3995 | "file": "src/features/shareFranz/Component.js", |
3384 | "id": "feature.shareFranz.text", | 3996 | "id": "feature.shareFranz.text", |
3385 | "start": { | 3997 | "start": { |
3386 | "column": 8, | 3998 | "column": 8, |
3387 | "line": 18 | 3999 | "line": 21 |
3388 | } | 4000 | } |
3389 | }, | 4001 | }, |
3390 | { | 4002 | { |
3391 | "defaultMessage": "!!!Share as email", | 4003 | "defaultMessage": "!!!Share as email", |
3392 | "end": { | 4004 | "end": { |
3393 | "column": 3, | 4005 | "column": 3, |
3394 | "line": 25 | 4006 | "line": 28 |
3395 | }, | 4007 | }, |
3396 | "file": "src/features/shareFranz/Component.js", | 4008 | "file": "src/features/shareFranz/Component.js", |
3397 | "id": "feature.shareFranz.action.email", | 4009 | "id": "feature.shareFranz.action.email", |
3398 | "start": { | 4010 | "start": { |
3399 | "column": 16, | 4011 | "column": 16, |
3400 | "line": 22 | 4012 | "line": 25 |
3401 | } | 4013 | } |
3402 | }, | 4014 | }, |
3403 | { | 4015 | { |
3404 | "defaultMessage": "!!!Share on Facebook", | 4016 | "defaultMessage": "!!!Share on Facebook", |
3405 | "end": { | 4017 | "end": { |
3406 | "column": 3, | 4018 | "column": 3, |
3407 | "line": 29 | 4019 | "line": 32 |
3408 | }, | 4020 | }, |
3409 | "file": "src/features/shareFranz/Component.js", | 4021 | "file": "src/features/shareFranz/Component.js", |
3410 | "id": "feature.shareFranz.action.facebook", | 4022 | "id": "feature.shareFranz.action.facebook", |
3411 | "start": { | 4023 | "start": { |
3412 | "column": 19, | 4024 | "column": 19, |
3413 | "line": 26 | 4025 | "line": 29 |
3414 | } | 4026 | } |
3415 | }, | 4027 | }, |
3416 | { | 4028 | { |
3417 | "defaultMessage": "!!!Share on Twitter", | 4029 | "defaultMessage": "!!!Share on Twitter", |
3418 | "end": { | 4030 | "end": { |
3419 | "column": 3, | 4031 | "column": 3, |
3420 | "line": 33 | 4032 | "line": 36 |
3421 | }, | 4033 | }, |
3422 | "file": "src/features/shareFranz/Component.js", | 4034 | "file": "src/features/shareFranz/Component.js", |
3423 | "id": "feature.shareFranz.action.twitter", | 4035 | "id": "feature.shareFranz.action.twitter", |
3424 | "start": { | 4036 | "start": { |
3425 | "column": 18, | 4037 | "column": 18, |
3426 | "line": 30 | 4038 | "line": 33 |
3427 | } | 4039 | } |
3428 | }, | 4040 | }, |
3429 | { | 4041 | { |
3430 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 4042 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
3431 | "end": { | 4043 | "end": { |
3432 | "column": 3, | 4044 | "column": 3, |
3433 | "line": 37 | 4045 | "line": 40 |
3434 | }, | 4046 | }, |
3435 | "file": "src/features/shareFranz/Component.js", | 4047 | "file": "src/features/shareFranz/Component.js", |
3436 | "id": "feature.shareFranz.shareText.email", | 4048 | "id": "feature.shareFranz.shareText.email", |
3437 | "start": { | 4049 | "start": { |
3438 | "column": 18, | 4050 | "column": 18, |
3439 | "line": 34 | 4051 | "line": 37 |
3440 | } | 4052 | } |
3441 | }, | 4053 | }, |
3442 | { | 4054 | { |
3443 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", | 4055 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", |
3444 | "end": { | 4056 | "end": { |
3445 | "column": 3, | 4057 | "column": 3, |
3446 | "line": 41 | 4058 | "line": 44 |
3447 | }, | 4059 | }, |
3448 | "file": "src/features/shareFranz/Component.js", | 4060 | "file": "src/features/shareFranz/Component.js", |
3449 | "id": "feature.shareFranz.shareText.twitter", | 4061 | "id": "feature.shareFranz.shareText.twitter", |
3450 | "start": { | 4062 | "start": { |
3451 | "column": 20, | 4063 | "column": 20, |
3452 | "line": 38 | 4064 | "line": 41 |
3453 | } | 4065 | } |
3454 | } | 4066 | } |
3455 | ], | 4067 | ], |
@@ -3458,6 +4070,50 @@ | |||
3458 | { | 4070 | { |
3459 | "descriptors": [ | 4071 | "descriptors": [ |
3460 | { | 4072 | { |
4073 | "defaultMessage": "!!!Franz Todos are available to premium users now!", | ||
4074 | "end": { | ||
4075 | "column": 3, | ||
4076 | "line": 18 | ||
4077 | }, | ||
4078 | "file": "src/features/todos/components/TodosWebview.js", | ||
4079 | "id": "feature.todos.premium.info", | ||
4080 | "start": { | ||
4081 | "column": 15, | ||
4082 | "line": 15 | ||
4083 | } | ||
4084 | }, | ||
4085 | { | ||
4086 | "defaultMessage": "!!!Upgrade Account", | ||
4087 | "end": { | ||
4088 | "column": 3, | ||
4089 | "line": 22 | ||
4090 | }, | ||
4091 | "file": "src/features/todos/components/TodosWebview.js", | ||
4092 | "id": "feature.todos.premium.upgrade", | ||
4093 | "start": { | ||
4094 | "column": 14, | ||
4095 | "line": 19 | ||
4096 | } | ||
4097 | }, | ||
4098 | { | ||
4099 | "defaultMessage": "!!!Everyone else will have to wait a little longer.", | ||
4100 | "end": { | ||
4101 | "column": 3, | ||
4102 | "line": 26 | ||
4103 | }, | ||
4104 | "file": "src/features/todos/components/TodosWebview.js", | ||
4105 | "id": "feature.todos.premium.rollout", | ||
4106 | "start": { | ||
4107 | "column": 15, | ||
4108 | "line": 23 | ||
4109 | } | ||
4110 | } | ||
4111 | ], | ||
4112 | "path": "src/features/todos/components/TodosWebview.json" | ||
4113 | }, | ||
4114 | { | ||
4115 | "descriptors": [ | ||
4116 | { | ||
3461 | "defaultMessage": "!!!Create workspace", | 4117 | "defaultMessage": "!!!Create workspace", |
3462 | "end": { | 4118 | "end": { |
3463 | "column": 3, | 4119 | "column": 3, |
@@ -3588,104 +4244,104 @@ | |||
3588 | "defaultMessage": "!!!Workspaces", | 4244 | "defaultMessage": "!!!Workspaces", |
3589 | "end": { | 4245 | "end": { |
3590 | "column": 3, | 4246 | "column": 3, |
3591 | "line": 18 | 4247 | "line": 19 |
3592 | }, | 4248 | }, |
3593 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 4249 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
3594 | "id": "workspaceDrawer.headline", | 4250 | "id": "workspaceDrawer.headline", |
3595 | "start": { | 4251 | "start": { |
3596 | "column": 12, | 4252 | "column": 12, |
3597 | "line": 15 | 4253 | "line": 16 |
3598 | } | 4254 | } |
3599 | }, | 4255 | }, |
3600 | { | 4256 | { |
3601 | "defaultMessage": "!!!All services", | 4257 | "defaultMessage": "!!!All services", |
3602 | "end": { | 4258 | "end": { |
3603 | "column": 3, | 4259 | "column": 3, |
3604 | "line": 22 | 4260 | "line": 23 |
3605 | }, | 4261 | }, |
3606 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 4262 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
3607 | "id": "workspaceDrawer.allServices", | 4263 | "id": "workspaceDrawer.allServices", |
3608 | "start": { | 4264 | "start": { |
3609 | "column": 15, | 4265 | "column": 15, |
3610 | "line": 19 | 4266 | "line": 20 |
3611 | } | 4267 | } |
3612 | }, | 4268 | }, |
3613 | { | 4269 | { |
3614 | "defaultMessage": "!!!Workspaces settings", | 4270 | "defaultMessage": "!!!Workspaces settings", |
3615 | "end": { | 4271 | "end": { |
3616 | "column": 3, | 4272 | "column": 3, |
3617 | "line": 26 | 4273 | "line": 27 |
3618 | }, | 4274 | }, |
3619 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 4275 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
3620 | "id": "workspaceDrawer.workspacesSettingsTooltip", | 4276 | "id": "workspaceDrawer.workspacesSettingsTooltip", |
3621 | "start": { | 4277 | "start": { |
3622 | "column": 29, | 4278 | "column": 29, |
3623 | "line": 23 | 4279 | "line": 24 |
3624 | } | 4280 | } |
3625 | }, | 4281 | }, |
3626 | { | 4282 | { |
3627 | "defaultMessage": "!!!Info about workspace feature", | 4283 | "defaultMessage": "!!!Info about workspace feature", |
3628 | "end": { | 4284 | "end": { |
3629 | "column": 3, | 4285 | "column": 3, |
3630 | "line": 30 | 4286 | "line": 31 |
3631 | }, | 4287 | }, |
3632 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 4288 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
3633 | "id": "workspaceDrawer.workspaceFeatureInfo", | 4289 | "id": "workspaceDrawer.workspaceFeatureInfo", |
3634 | "start": { | 4290 | "start": { |
3635 | "column": 24, | 4291 | "column": 24, |
3636 | "line": 27 | 4292 | "line": 28 |
3637 | } | 4293 | } |
3638 | }, | 4294 | }, |
3639 | { | 4295 | { |
3640 | "defaultMessage": "!!!Create your first workspace", | 4296 | "defaultMessage": "!!!Create your first workspace", |
3641 | "end": { | 4297 | "end": { |
3642 | "column": 3, | 4298 | "column": 3, |
3643 | "line": 34 | 4299 | "line": 35 |
3644 | }, | 4300 | }, |
3645 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 4301 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
3646 | "id": "workspaceDrawer.premiumCtaButtonLabel", | 4302 | "id": "workspaceDrawer.premiumCtaButtonLabel", |
3647 | "start": { | 4303 | "start": { |
3648 | "column": 25, | 4304 | "column": 25, |
3649 | "line": 31 | 4305 | "line": 32 |
3650 | } | 4306 | } |
3651 | }, | 4307 | }, |
3652 | { | 4308 | { |
3653 | "defaultMessage": "!!!Reactivate premium account", | 4309 | "defaultMessage": "!!!Reactivate premium account", |
3654 | "end": { | 4310 | "end": { |
3655 | "column": 3, | 4311 | "column": 3, |
3656 | "line": 38 | 4312 | "line": 39 |
3657 | }, | 4313 | }, |
3658 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 4314 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
3659 | "id": "workspaceDrawer.reactivatePremiumAccountLabel", | 4315 | "id": "workspaceDrawer.reactivatePremiumAccountLabel", |
3660 | "start": { | 4316 | "start": { |
3661 | "column": 28, | 4317 | "column": 28, |
3662 | "line": 35 | 4318 | "line": 36 |
3663 | } | 4319 | } |
3664 | }, | 4320 | }, |
3665 | { | 4321 | { |
3666 | "defaultMessage": "!!!add new workspace", | 4322 | "defaultMessage": "!!!add new workspace", |
3667 | "end": { | 4323 | "end": { |
3668 | "column": 3, | 4324 | "column": 3, |
3669 | "line": 42 | 4325 | "line": 43 |
3670 | }, | 4326 | }, |
3671 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 4327 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
3672 | "id": "workspaceDrawer.addNewWorkspaceLabel", | 4328 | "id": "workspaceDrawer.addNewWorkspaceLabel", |
3673 | "start": { | 4329 | "start": { |
3674 | "column": 24, | 4330 | "column": 24, |
3675 | "line": 39 | 4331 | "line": 40 |
3676 | } | 4332 | } |
3677 | }, | 4333 | }, |
3678 | { | 4334 | { |
3679 | "defaultMessage": "!!!Premium feature", | 4335 | "defaultMessage": "!!!Premium feature", |
3680 | "end": { | 4336 | "end": { |
3681 | "column": 3, | 4337 | "column": 3, |
3682 | "line": 46 | 4338 | "line": 47 |
3683 | }, | 4339 | }, |
3684 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 4340 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
3685 | "id": "workspaceDrawer.proFeatureBadge", | 4341 | "id": "workspaceDrawer.proFeatureBadge", |
3686 | "start": { | 4342 | "start": { |
3687 | "column": 23, | 4343 | "column": 23, |
3688 | "line": 43 | 4344 | "line": 44 |
3689 | } | 4345 | } |
3690 | } | 4346 | } |
3691 | ], | 4347 | ], |
@@ -3728,104 +4384,104 @@ | |||
3728 | "defaultMessage": "!!!Your workspaces", | 4384 | "defaultMessage": "!!!Your workspaces", |
3729 | "end": { | 4385 | "end": { |
3730 | "column": 3, | 4386 | "column": 3, |
3731 | "line": 20 | 4387 | "line": 22 |
3732 | }, | 4388 | }, |
3733 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 4389 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
3734 | "id": "settings.workspaces.headline", | 4390 | "id": "settings.workspaces.headline", |
3735 | "start": { | 4391 | "start": { |
3736 | "column": 12, | 4392 | "column": 12, |
3737 | "line": 17 | 4393 | "line": 19 |
3738 | } | 4394 | } |
3739 | }, | 4395 | }, |
3740 | { | 4396 | { |
3741 | "defaultMessage": "!!!You haven't added any workspaces yet.", | 4397 | "defaultMessage": "!!!You haven't added any workspaces yet.", |
3742 | "end": { | 4398 | "end": { |
3743 | "column": 3, | 4399 | "column": 3, |
3744 | "line": 24 | 4400 | "line": 26 |
3745 | }, | 4401 | }, |
3746 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 4402 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
3747 | "id": "settings.workspaces.noWorkspacesAdded", | 4403 | "id": "settings.workspaces.noWorkspacesAdded", |
3748 | "start": { | 4404 | "start": { |
3749 | "column": 19, | 4405 | "column": 19, |
3750 | "line": 21 | 4406 | "line": 23 |
3751 | } | 4407 | } |
3752 | }, | 4408 | }, |
3753 | { | 4409 | { |
3754 | "defaultMessage": "!!!Could not load your workspaces", | 4410 | "defaultMessage": "!!!Could not load your workspaces", |
3755 | "end": { | 4411 | "end": { |
3756 | "column": 3, | 4412 | "column": 3, |
3757 | "line": 28 | 4413 | "line": 30 |
3758 | }, | 4414 | }, |
3759 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 4415 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
3760 | "id": "settings.workspaces.workspacesRequestFailed", | 4416 | "id": "settings.workspaces.workspacesRequestFailed", |
3761 | "start": { | 4417 | "start": { |
3762 | "column": 27, | 4418 | "column": 27, |
3763 | "line": 25 | 4419 | "line": 27 |
3764 | } | 4420 | } |
3765 | }, | 4421 | }, |
3766 | { | 4422 | { |
3767 | "defaultMessage": "!!!Try again", | 4423 | "defaultMessage": "!!!Try again", |
3768 | "end": { | 4424 | "end": { |
3769 | "column": 3, | 4425 | "column": 3, |
3770 | "line": 32 | 4426 | "line": 34 |
3771 | }, | 4427 | }, |
3772 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 4428 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
3773 | "id": "settings.workspaces.tryReloadWorkspaces", | 4429 | "id": "settings.workspaces.tryReloadWorkspaces", |
3774 | "start": { | 4430 | "start": { |
3775 | "column": 23, | 4431 | "column": 23, |
3776 | "line": 29 | 4432 | "line": 31 |
3777 | } | 4433 | } |
3778 | }, | 4434 | }, |
3779 | { | 4435 | { |
3780 | "defaultMessage": "!!!Your changes have been saved", | 4436 | "defaultMessage": "!!!Your changes have been saved", |
3781 | "end": { | 4437 | "end": { |
3782 | "column": 3, | 4438 | "column": 3, |
3783 | "line": 36 | 4439 | "line": 38 |
3784 | }, | 4440 | }, |
3785 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 4441 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
3786 | "id": "settings.workspaces.updatedInfo", | 4442 | "id": "settings.workspaces.updatedInfo", |
3787 | "start": { | 4443 | "start": { |
3788 | "column": 15, | 4444 | "column": 15, |
3789 | "line": 33 | 4445 | "line": 35 |
3790 | } | 4446 | } |
3791 | }, | 4447 | }, |
3792 | { | 4448 | { |
3793 | "defaultMessage": "!!!Workspace has been deleted", | 4449 | "defaultMessage": "!!!Workspace has been deleted", |
3794 | "end": { | 4450 | "end": { |
3795 | "column": 3, | 4451 | "column": 3, |
3796 | "line": 40 | 4452 | "line": 42 |
3797 | }, | 4453 | }, |
3798 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 4454 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
3799 | "id": "settings.workspaces.deletedInfo", | 4455 | "id": "settings.workspaces.deletedInfo", |
3800 | "start": { | 4456 | "start": { |
3801 | "column": 15, | 4457 | "column": 15, |
3802 | "line": 37 | 4458 | "line": 39 |
3803 | } | 4459 | } |
3804 | }, | 4460 | }, |
3805 | { | 4461 | { |
3806 | "defaultMessage": "!!!Info about workspace feature", | 4462 | "defaultMessage": "!!!Info about workspace feature", |
3807 | "end": { | 4463 | "end": { |
3808 | "column": 3, | 4464 | "column": 3, |
3809 | "line": 44 | 4465 | "line": 46 |
3810 | }, | 4466 | }, |
3811 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 4467 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
3812 | "id": "settings.workspaces.workspaceFeatureInfo", | 4468 | "id": "settings.workspaces.workspaceFeatureInfo", |
3813 | "start": { | 4469 | "start": { |
3814 | "column": 24, | 4470 | "column": 24, |
3815 | "line": 41 | 4471 | "line": 43 |
3816 | } | 4472 | } |
3817 | }, | 4473 | }, |
3818 | { | 4474 | { |
3819 | "defaultMessage": "!!!Less is More: Introducing Ferdi Workspaces", | 4475 | "defaultMessage": "!!!Less is More: Introducing Ferdi Workspaces", |
3820 | "end": { | 4476 | "end": { |
3821 | "column": 3, | 4477 | "column": 3, |
3822 | "line": 48 | 4478 | "line": 50 |
3823 | }, | 4479 | }, |
3824 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 4480 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
3825 | "id": "settings.workspaces.workspaceFeatureHeadline", | 4481 | "id": "settings.workspaces.workspaceFeatureHeadline", |
3826 | "start": { | 4482 | "start": { |
3827 | "column": 28, | 4483 | "column": 28, |
3828 | "line": 45 | 4484 | "line": 47 |
3829 | } | 4485 | } |
3830 | } | 4486 | } |
3831 | ], | 4487 | ], |
@@ -3852,6 +4508,146 @@ | |||
3852 | { | 4508 | { |
3853 | "descriptors": [ | 4509 | "descriptors": [ |
3854 | { | 4510 | { |
4511 | "defaultMessage": "!!!Franz Professional", | ||
4512 | "end": { | ||
4513 | "column": 3, | ||
4514 | "line": 8 | ||
4515 | }, | ||
4516 | "file": "src/helpers/plan-helpers.js", | ||
4517 | "id": "pricing.plan.pro", | ||
4518 | "start": { | ||
4519 | "column": 15, | ||
4520 | "line": 5 | ||
4521 | } | ||
4522 | }, | ||
4523 | { | ||
4524 | "defaultMessage": "!!!Franz Personal", | ||
4525 | "end": { | ||
4526 | "column": 3, | ||
4527 | "line": 12 | ||
4528 | }, | ||
4529 | "file": "src/helpers/plan-helpers.js", | ||
4530 | "id": "pricing.plan.personal", | ||
4531 | "start": { | ||
4532 | "column": 20, | ||
4533 | "line": 9 | ||
4534 | } | ||
4535 | }, | ||
4536 | { | ||
4537 | "defaultMessage": "!!!Franz Free", | ||
4538 | "end": { | ||
4539 | "column": 3, | ||
4540 | "line": 16 | ||
4541 | }, | ||
4542 | "file": "src/helpers/plan-helpers.js", | ||
4543 | "id": "pricing.plan.free", | ||
4544 | "start": { | ||
4545 | "column": 16, | ||
4546 | "line": 13 | ||
4547 | } | ||
4548 | }, | ||
4549 | { | ||
4550 | "defaultMessage": "!!!Franz Premium", | ||
4551 | "end": { | ||
4552 | "column": 3, | ||
4553 | "line": 20 | ||
4554 | }, | ||
4555 | "file": "src/helpers/plan-helpers.js", | ||
4556 | "id": "pricing.plan.legacy", | ||
4557 | "start": { | ||
4558 | "column": 18, | ||
4559 | "line": 17 | ||
4560 | } | ||
4561 | } | ||
4562 | ], | ||
4563 | "path": "src/helpers/plan-helpers.json" | ||
4564 | }, | ||
4565 | { | ||
4566 | "descriptors": [ | ||
4567 | { | ||
4568 | "defaultMessage": "!!!Franz Professional Yearly", | ||
4569 | "end": { | ||
4570 | "column": 3, | ||
4571 | "line": 8 | ||
4572 | }, | ||
4573 | "file": "src/helpers/pricing-helpers.js", | ||
4574 | "id": "pricing.plan.pro-yearly", | ||
4575 | "start": { | ||
4576 | "column": 22, | ||
4577 | "line": 5 | ||
4578 | } | ||
4579 | }, | ||
4580 | { | ||
4581 | "defaultMessage": "!!!Franz Professional Monthly", | ||
4582 | "end": { | ||
4583 | "column": 3, | ||
4584 | "line": 12 | ||
4585 | }, | ||
4586 | "file": "src/helpers/pricing-helpers.js", | ||
4587 | "id": "pricing.plan.pro-monthly", | ||
4588 | "start": { | ||
4589 | "column": 23, | ||
4590 | "line": 9 | ||
4591 | } | ||
4592 | }, | ||
4593 | { | ||
4594 | "defaultMessage": "!!!Franz Personal Yearly", | ||
4595 | "end": { | ||
4596 | "column": 3, | ||
4597 | "line": 16 | ||
4598 | }, | ||
4599 | "file": "src/helpers/pricing-helpers.js", | ||
4600 | "id": "pricing.plan.personal-yearly", | ||
4601 | "start": { | ||
4602 | "column": 27, | ||
4603 | "line": 13 | ||
4604 | } | ||
4605 | }, | ||
4606 | { | ||
4607 | "defaultMessage": "!!!Franz Personal Monthly", | ||
4608 | "end": { | ||
4609 | "column": 3, | ||
4610 | "line": 20 | ||
4611 | }, | ||
4612 | "file": "src/helpers/pricing-helpers.js", | ||
4613 | "id": "pricing.plan.personal-monthly", | ||
4614 | "start": { | ||
4615 | "column": 28, | ||
4616 | "line": 17 | ||
4617 | } | ||
4618 | }, | ||
4619 | { | ||
4620 | "defaultMessage": "!!!Franz Free", | ||
4621 | "end": { | ||
4622 | "column": 3, | ||
4623 | "line": 24 | ||
4624 | }, | ||
4625 | "file": "src/helpers/pricing-helpers.js", | ||
4626 | "id": "pricing.plan.free", | ||
4627 | "start": { | ||
4628 | "column": 16, | ||
4629 | "line": 21 | ||
4630 | } | ||
4631 | }, | ||
4632 | { | ||
4633 | "defaultMessage": "!!!Franz Premium", | ||
4634 | "end": { | ||
4635 | "column": 3, | ||
4636 | "line": 28 | ||
4637 | }, | ||
4638 | "file": "src/helpers/pricing-helpers.js", | ||
4639 | "id": "pricing.plan.legacy", | ||
4640 | "start": { | ||
4641 | "column": 18, | ||
4642 | "line": 25 | ||
4643 | } | ||
4644 | } | ||
4645 | ], | ||
4646 | "path": "src/helpers/pricing-helpers.json" | ||
4647 | }, | ||
4648 | { | ||
4649 | "descriptors": [ | ||
4650 | { | ||
3855 | "defaultMessage": "!!!Field is required", | 4651 | "defaultMessage": "!!!Field is required", |
3856 | "end": { | 4652 | "end": { |
3857 | "column": 3, | 4653 | "column": 3, |
@@ -3998,6 +4794,19 @@ | |||
3998 | "column": 39, | 4794 | "column": 39, |
3999 | "line": 24 | 4795 | "line": 24 |
4000 | } | 4796 | } |
4797 | }, | ||
4798 | { | ||
4799 | "defaultMessage": "!!!Franz Professional Required", | ||
4800 | "end": { | ||
4801 | "column": 3, | ||
4802 | "line": 31 | ||
4803 | }, | ||
4804 | "file": "src/i18n/globalMessages.js", | ||
4805 | "id": "global.franzProRequired", | ||
4806 | "start": { | ||
4807 | "column": 15, | ||
4808 | "line": 28 | ||
4809 | } | ||
4001 | } | 4810 | } |
4002 | ], | 4811 | ], |
4003 | "path": "src/i18n/globalMessages.json" | 4812 | "path": "src/i18n/globalMessages.json" |
@@ -4008,741 +4817,806 @@ | |||
4008 | "defaultMessage": "!!!Edit", | 4817 | "defaultMessage": "!!!Edit", |
4009 | "end": { | 4818 | "end": { |
4010 | "column": 3, | 4819 | "column": 3, |
4011 | "line": 17 | 4820 | "line": 20 |
4012 | }, | 4821 | }, |
4013 | "file": "src/lib/Menu.js", | 4822 | "file": "src/lib/Menu.js", |
4014 | "id": "menu.edit", | 4823 | "id": "menu.edit", |
4015 | "start": { | 4824 | "start": { |
4016 | "column": 8, | 4825 | "column": 8, |
4017 | "line": 14 | 4826 | "line": 17 |
4018 | } | 4827 | } |
4019 | }, | 4828 | }, |
4020 | { | 4829 | { |
4021 | "defaultMessage": "!!!Undo", | 4830 | "defaultMessage": "!!!Undo", |
4022 | "end": { | 4831 | "end": { |
4023 | "column": 3, | 4832 | "column": 3, |
4024 | "line": 21 | 4833 | "line": 24 |
4025 | }, | 4834 | }, |
4026 | "file": "src/lib/Menu.js", | 4835 | "file": "src/lib/Menu.js", |
4027 | "id": "menu.edit.undo", | 4836 | "id": "menu.edit.undo", |
4028 | "start": { | 4837 | "start": { |
4029 | "column": 8, | 4838 | "column": 8, |
4030 | "line": 18 | 4839 | "line": 21 |
4031 | } | 4840 | } |
4032 | }, | 4841 | }, |
4033 | { | 4842 | { |
4034 | "defaultMessage": "!!!Redo", | 4843 | "defaultMessage": "!!!Redo", |
4035 | "end": { | 4844 | "end": { |
4036 | "column": 3, | 4845 | "column": 3, |
4037 | "line": 25 | 4846 | "line": 28 |
4038 | }, | 4847 | }, |
4039 | "file": "src/lib/Menu.js", | 4848 | "file": "src/lib/Menu.js", |
4040 | "id": "menu.edit.redo", | 4849 | "id": "menu.edit.redo", |
4041 | "start": { | 4850 | "start": { |
4042 | "column": 8, | 4851 | "column": 8, |
4043 | "line": 22 | 4852 | "line": 25 |
4044 | } | 4853 | } |
4045 | }, | 4854 | }, |
4046 | { | 4855 | { |
4047 | "defaultMessage": "!!!Cut", | 4856 | "defaultMessage": "!!!Cut", |
4048 | "end": { | 4857 | "end": { |
4049 | "column": 3, | 4858 | "column": 3, |
4050 | "line": 29 | 4859 | "line": 32 |
4051 | }, | 4860 | }, |
4052 | "file": "src/lib/Menu.js", | 4861 | "file": "src/lib/Menu.js", |
4053 | "id": "menu.edit.cut", | 4862 | "id": "menu.edit.cut", |
4054 | "start": { | 4863 | "start": { |
4055 | "column": 7, | 4864 | "column": 7, |
4056 | "line": 26 | 4865 | "line": 29 |
4057 | } | 4866 | } |
4058 | }, | 4867 | }, |
4059 | { | 4868 | { |
4060 | "defaultMessage": "!!!Copy", | 4869 | "defaultMessage": "!!!Copy", |
4061 | "end": { | 4870 | "end": { |
4062 | "column": 3, | 4871 | "column": 3, |
4063 | "line": 33 | 4872 | "line": 36 |
4064 | }, | 4873 | }, |
4065 | "file": "src/lib/Menu.js", | 4874 | "file": "src/lib/Menu.js", |
4066 | "id": "menu.edit.copy", | 4875 | "id": "menu.edit.copy", |
4067 | "start": { | 4876 | "start": { |
4068 | "column": 8, | 4877 | "column": 8, |
4069 | "line": 30 | 4878 | "line": 33 |
4070 | } | 4879 | } |
4071 | }, | 4880 | }, |
4072 | { | 4881 | { |
4073 | "defaultMessage": "!!!Paste", | 4882 | "defaultMessage": "!!!Paste", |
4074 | "end": { | 4883 | "end": { |
4075 | "column": 3, | 4884 | "column": 3, |
4076 | "line": 37 | 4885 | "line": 40 |
4077 | }, | 4886 | }, |
4078 | "file": "src/lib/Menu.js", | 4887 | "file": "src/lib/Menu.js", |
4079 | "id": "menu.edit.paste", | 4888 | "id": "menu.edit.paste", |
4080 | "start": { | 4889 | "start": { |
4081 | "column": 9, | 4890 | "column": 9, |
4082 | "line": 34 | 4891 | "line": 37 |
4083 | } | 4892 | } |
4084 | }, | 4893 | }, |
4085 | { | 4894 | { |
4086 | "defaultMessage": "!!!Paste And Match Style", | 4895 | "defaultMessage": "!!!Paste And Match Style", |
4087 | "end": { | 4896 | "end": { |
4088 | "column": 3, | 4897 | "column": 3, |
4089 | "line": 41 | 4898 | "line": 44 |
4090 | }, | 4899 | }, |
4091 | "file": "src/lib/Menu.js", | 4900 | "file": "src/lib/Menu.js", |
4092 | "id": "menu.edit.pasteAndMatchStyle", | 4901 | "id": "menu.edit.pasteAndMatchStyle", |
4093 | "start": { | 4902 | "start": { |
4094 | "column": 22, | 4903 | "column": 22, |
4095 | "line": 38 | 4904 | "line": 41 |
4096 | } | 4905 | } |
4097 | }, | 4906 | }, |
4098 | { | 4907 | { |
4099 | "defaultMessage": "!!!Delete", | 4908 | "defaultMessage": "!!!Delete", |
4100 | "end": { | 4909 | "end": { |
4101 | "column": 3, | 4910 | "column": 3, |
4102 | "line": 45 | 4911 | "line": 48 |
4103 | }, | 4912 | }, |
4104 | "file": "src/lib/Menu.js", | 4913 | "file": "src/lib/Menu.js", |
4105 | "id": "menu.edit.delete", | 4914 | "id": "menu.edit.delete", |
4106 | "start": { | 4915 | "start": { |
4107 | "column": 10, | 4916 | "column": 10, |
4108 | "line": 42 | 4917 | "line": 45 |
4109 | } | 4918 | } |
4110 | }, | 4919 | }, |
4111 | { | 4920 | { |
4112 | "defaultMessage": "!!!Select All", | 4921 | "defaultMessage": "!!!Select All", |
4113 | "end": { | 4922 | "end": { |
4114 | "column": 3, | 4923 | "column": 3, |
4115 | "line": 49 | 4924 | "line": 52 |
4116 | }, | 4925 | }, |
4117 | "file": "src/lib/Menu.js", | 4926 | "file": "src/lib/Menu.js", |
4118 | "id": "menu.edit.selectAll", | 4927 | "id": "menu.edit.selectAll", |
4119 | "start": { | 4928 | "start": { |
4120 | "column": 13, | 4929 | "column": 13, |
4121 | "line": 46 | 4930 | "line": 49 |
4122 | } | 4931 | } |
4123 | }, | 4932 | }, |
4124 | { | 4933 | { |
4125 | "defaultMessage": "!!!Speech", | 4934 | "defaultMessage": "!!!Speech", |
4126 | "end": { | 4935 | "end": { |
4127 | "column": 3, | 4936 | "column": 3, |
4128 | "line": 53 | 4937 | "line": 56 |
4129 | }, | 4938 | }, |
4130 | "file": "src/lib/Menu.js", | 4939 | "file": "src/lib/Menu.js", |
4131 | "id": "menu.edit.speech", | 4940 | "id": "menu.edit.speech", |
4132 | "start": { | 4941 | "start": { |
4133 | "column": 10, | 4942 | "column": 10, |
4134 | "line": 50 | 4943 | "line": 53 |
4135 | } | 4944 | } |
4136 | }, | 4945 | }, |
4137 | { | 4946 | { |
4138 | "defaultMessage": "!!!Start Speaking", | 4947 | "defaultMessage": "!!!Start Speaking", |
4139 | "end": { | 4948 | "end": { |
4140 | "column": 3, | 4949 | "column": 3, |
4141 | "line": 57 | 4950 | "line": 60 |
4142 | }, | 4951 | }, |
4143 | "file": "src/lib/Menu.js", | 4952 | "file": "src/lib/Menu.js", |
4144 | "id": "menu.edit.startSpeaking", | 4953 | "id": "menu.edit.startSpeaking", |
4145 | "start": { | 4954 | "start": { |
4146 | "column": 17, | 4955 | "column": 17, |
4147 | "line": 54 | 4956 | "line": 57 |
4148 | } | 4957 | } |
4149 | }, | 4958 | }, |
4150 | { | 4959 | { |
4151 | "defaultMessage": "!!!Stop Speaking", | 4960 | "defaultMessage": "!!!Stop Speaking", |
4152 | "end": { | 4961 | "end": { |
4153 | "column": 3, | 4962 | "column": 3, |
4154 | "line": 61 | 4963 | "line": 64 |
4155 | }, | 4964 | }, |
4156 | "file": "src/lib/Menu.js", | 4965 | "file": "src/lib/Menu.js", |
4157 | "id": "menu.edit.stopSpeaking", | 4966 | "id": "menu.edit.stopSpeaking", |
4158 | "start": { | 4967 | "start": { |
4159 | "column": 16, | 4968 | "column": 16, |
4160 | "line": 58 | 4969 | "line": 61 |
4161 | } | 4970 | } |
4162 | }, | 4971 | }, |
4163 | { | 4972 | { |
4164 | "defaultMessage": "!!!Start Dictation", | 4973 | "defaultMessage": "!!!Start Dictation", |
4165 | "end": { | 4974 | "end": { |
4166 | "column": 3, | 4975 | "column": 3, |
4167 | "line": 65 | 4976 | "line": 68 |
4168 | }, | 4977 | }, |
4169 | "file": "src/lib/Menu.js", | 4978 | "file": "src/lib/Menu.js", |
4170 | "id": "menu.edit.startDictation", | 4979 | "id": "menu.edit.startDictation", |
4171 | "start": { | 4980 | "start": { |
4172 | "column": 18, | 4981 | "column": 18, |
4173 | "line": 62 | 4982 | "line": 65 |
4174 | } | 4983 | } |
4175 | }, | 4984 | }, |
4176 | { | 4985 | { |
4177 | "defaultMessage": "!!!Emoji & Symbols", | 4986 | "defaultMessage": "!!!Emoji & Symbols", |
4178 | "end": { | 4987 | "end": { |
4179 | "column": 3, | 4988 | "column": 3, |
4180 | "line": 69 | 4989 | "line": 72 |
4181 | }, | 4990 | }, |
4182 | "file": "src/lib/Menu.js", | 4991 | "file": "src/lib/Menu.js", |
4183 | "id": "menu.edit.emojiSymbols", | 4992 | "id": "menu.edit.emojiSymbols", |
4184 | "start": { | 4993 | "start": { |
4185 | "column": 16, | 4994 | "column": 16, |
4186 | "line": 66 | 4995 | "line": 69 |
4187 | } | 4996 | } |
4188 | }, | 4997 | }, |
4189 | { | 4998 | { |
4190 | "defaultMessage": "!!!Actual Size", | 4999 | "defaultMessage": "!!!Actual Size", |
4191 | "end": { | 5000 | "end": { |
4192 | "column": 3, | 5001 | "column": 3, |
4193 | "line": 73 | 5002 | "line": 76 |
4194 | }, | 5003 | }, |
4195 | "file": "src/lib/Menu.js", | 5004 | "file": "src/lib/Menu.js", |
4196 | "id": "menu.view.resetZoom", | 5005 | "id": "menu.view.resetZoom", |
4197 | "start": { | 5006 | "start": { |
4198 | "column": 13, | 5007 | "column": 13, |
4199 | "line": 70 | 5008 | "line": 73 |
4200 | } | 5009 | } |
4201 | }, | 5010 | }, |
4202 | { | 5011 | { |
4203 | "defaultMessage": "!!!Zoom In", | 5012 | "defaultMessage": "!!!Zoom In", |
4204 | "end": { | 5013 | "end": { |
4205 | "column": 3, | 5014 | "column": 3, |
4206 | "line": 77 | 5015 | "line": 80 |
4207 | }, | 5016 | }, |
4208 | "file": "src/lib/Menu.js", | 5017 | "file": "src/lib/Menu.js", |
4209 | "id": "menu.view.zoomIn", | 5018 | "id": "menu.view.zoomIn", |
4210 | "start": { | 5019 | "start": { |
4211 | "column": 10, | 5020 | "column": 10, |
4212 | "line": 74 | 5021 | "line": 77 |
4213 | } | 5022 | } |
4214 | }, | 5023 | }, |
4215 | { | 5024 | { |
4216 | "defaultMessage": "!!!Zoom Out", | 5025 | "defaultMessage": "!!!Zoom Out", |
4217 | "end": { | 5026 | "end": { |
4218 | "column": 3, | 5027 | "column": 3, |
4219 | "line": 81 | 5028 | "line": 84 |
4220 | }, | 5029 | }, |
4221 | "file": "src/lib/Menu.js", | 5030 | "file": "src/lib/Menu.js", |
4222 | "id": "menu.view.zoomOut", | 5031 | "id": "menu.view.zoomOut", |
4223 | "start": { | 5032 | "start": { |
4224 | "column": 11, | 5033 | "column": 11, |
4225 | "line": 78 | 5034 | "line": 81 |
4226 | } | 5035 | } |
4227 | }, | 5036 | }, |
4228 | { | 5037 | { |
4229 | "defaultMessage": "!!!Enter Full Screen", | 5038 | "defaultMessage": "!!!Enter Full Screen", |
4230 | "end": { | 5039 | "end": { |
4231 | "column": 3, | 5040 | "column": 3, |
4232 | "line": 85 | 5041 | "line": 88 |
4233 | }, | 5042 | }, |
4234 | "file": "src/lib/Menu.js", | 5043 | "file": "src/lib/Menu.js", |
4235 | "id": "menu.view.enterFullScreen", | 5044 | "id": "menu.view.enterFullScreen", |
4236 | "start": { | 5045 | "start": { |
4237 | "column": 19, | 5046 | "column": 19, |
4238 | "line": 82 | 5047 | "line": 85 |
4239 | } | 5048 | } |
4240 | }, | 5049 | }, |
4241 | { | 5050 | { |
4242 | "defaultMessage": "!!!Exit Full Screen", | 5051 | "defaultMessage": "!!!Exit Full Screen", |
4243 | "end": { | 5052 | "end": { |
4244 | "column": 3, | 5053 | "column": 3, |
4245 | "line": 89 | 5054 | "line": 92 |
4246 | }, | 5055 | }, |
4247 | "file": "src/lib/Menu.js", | 5056 | "file": "src/lib/Menu.js", |
4248 | "id": "menu.view.exitFullScreen", | 5057 | "id": "menu.view.exitFullScreen", |
4249 | "start": { | 5058 | "start": { |
4250 | "column": 18, | 5059 | "column": 18, |
4251 | "line": 86 | 5060 | "line": 89 |
4252 | } | 5061 | } |
4253 | }, | 5062 | }, |
4254 | { | 5063 | { |
4255 | "defaultMessage": "!!!Toggle Full Screen", | 5064 | "defaultMessage": "!!!Toggle Full Screen", |
4256 | "end": { | 5065 | "end": { |
4257 | "column": 3, | 5066 | "column": 3, |
4258 | "line": 93 | 5067 | "line": 96 |
4259 | }, | 5068 | }, |
4260 | "file": "src/lib/Menu.js", | 5069 | "file": "src/lib/Menu.js", |
4261 | "id": "menu.view.toggleFullScreen", | 5070 | "id": "menu.view.toggleFullScreen", |
4262 | "start": { | 5071 | "start": { |
4263 | "column": 20, | 5072 | "column": 20, |
4264 | "line": 90 | 5073 | "line": 93 |
4265 | } | 5074 | } |
4266 | }, | 5075 | }, |
4267 | { | 5076 | { |
4268 | "defaultMessage": "!!!Toggle Developer Tools", | 5077 | "defaultMessage": "!!!Toggle Developer Tools", |
4269 | "end": { | 5078 | "end": { |
4270 | "column": 3, | 5079 | "column": 3, |
4271 | "line": 97 | 5080 | "line": 100 |
4272 | }, | 5081 | }, |
4273 | "file": "src/lib/Menu.js", | 5082 | "file": "src/lib/Menu.js", |
4274 | "id": "menu.view.toggleDevTools", | 5083 | "id": "menu.view.toggleDevTools", |
4275 | "start": { | 5084 | "start": { |
4276 | "column": 18, | 5085 | "column": 18, |
4277 | "line": 94 | 5086 | "line": 97 |
4278 | } | 5087 | } |
4279 | }, | 5088 | }, |
4280 | { | 5089 | { |
4281 | "defaultMessage": "!!!Toggle Service Developer Tools", | 5090 | "defaultMessage": "!!!Toggle Todos Developer Tools", |
4282 | "end": { | 5091 | "end": { |
4283 | "column": 3, | 5092 | "column": 3, |
5093 | "line": 104 | ||
5094 | }, | ||
5095 | "file": "src/lib/Menu.js", | ||
5096 | "id": "menu.view.toggleTodosDevTools", | ||
5097 | "start": { | ||
5098 | "column": 23, | ||
4284 | "line": 101 | 5099 | "line": 101 |
5100 | } | ||
5101 | }, | ||
5102 | { | ||
5103 | "defaultMessage": "!!!Toggle Service Developer Tools", | ||
5104 | "end": { | ||
5105 | "column": 3, | ||
5106 | "line": 108 | ||
4285 | }, | 5107 | }, |
4286 | "file": "src/lib/Menu.js", | 5108 | "file": "src/lib/Menu.js", |
4287 | "id": "menu.view.toggleServiceDevTools", | 5109 | "id": "menu.view.toggleServiceDevTools", |
4288 | "start": { | 5110 | "start": { |
4289 | "column": 25, | 5111 | "column": 25, |
4290 | "line": 98 | 5112 | "line": 105 |
4291 | } | 5113 | } |
4292 | }, | 5114 | }, |
4293 | { | 5115 | { |
4294 | "defaultMessage": "!!!Reload Service", | 5116 | "defaultMessage": "!!!Reload Service", |
4295 | "end": { | 5117 | "end": { |
4296 | "column": 3, | 5118 | "column": 3, |
4297 | "line": 105 | 5119 | "line": 112 |
4298 | }, | 5120 | }, |
4299 | "file": "src/lib/Menu.js", | 5121 | "file": "src/lib/Menu.js", |
4300 | "id": "menu.view.reloadService", | 5122 | "id": "menu.view.reloadService", |
4301 | "start": { | 5123 | "start": { |
4302 | "column": 17, | 5124 | "column": 17, |
4303 | "line": 102 | 5125 | "line": 109 |
4304 | } | 5126 | } |
4305 | }, | 5127 | }, |
4306 | { | 5128 | { |
4307 | "defaultMessage": "!!!Reload Franz", | 5129 | "defaultMessage": "!!!Reload Franz", |
4308 | "end": { | 5130 | "end": { |
4309 | "column": 3, | 5131 | "column": 3, |
4310 | "line": 109 | 5132 | "line": 116 |
4311 | }, | 5133 | }, |
4312 | "file": "src/lib/Menu.js", | 5134 | "file": "src/lib/Menu.js", |
4313 | "id": "menu.view.reloadFranz", | 5135 | "id": "menu.view.reloadFranz", |
4314 | "start": { | 5136 | "start": { |
4315 | "column": 15, | 5137 | "column": 15, |
4316 | "line": 106 | 5138 | "line": 113 |
4317 | } | 5139 | } |
4318 | }, | 5140 | }, |
4319 | { | 5141 | { |
4320 | "defaultMessage": "!!!Minimize", | 5142 | "defaultMessage": "!!!Minimize", |
4321 | "end": { | 5143 | "end": { |
4322 | "column": 3, | 5144 | "column": 3, |
4323 | "line": 113 | 5145 | "line": 120 |
4324 | }, | 5146 | }, |
4325 | "file": "src/lib/Menu.js", | 5147 | "file": "src/lib/Menu.js", |
4326 | "id": "menu.window.minimize", | 5148 | "id": "menu.window.minimize", |
4327 | "start": { | 5149 | "start": { |
4328 | "column": 12, | 5150 | "column": 12, |
4329 | "line": 110 | 5151 | "line": 117 |
4330 | } | 5152 | } |
4331 | }, | 5153 | }, |
4332 | { | 5154 | { |
4333 | "defaultMessage": "!!!Close", | 5155 | "defaultMessage": "!!!Close", |
4334 | "end": { | 5156 | "end": { |
4335 | "column": 3, | 5157 | "column": 3, |
4336 | "line": 117 | 5158 | "line": 124 |
4337 | }, | 5159 | }, |
4338 | "file": "src/lib/Menu.js", | 5160 | "file": "src/lib/Menu.js", |
4339 | "id": "menu.window.close", | 5161 | "id": "menu.window.close", |
4340 | "start": { | 5162 | "start": { |
4341 | "column": 9, | 5163 | "column": 9, |
4342 | "line": 114 | 5164 | "line": 121 |
4343 | } | 5165 | } |
4344 | }, | 5166 | }, |
4345 | { | 5167 | { |
4346 | "defaultMessage": "!!!Learn More", | 5168 | "defaultMessage": "!!!Learn More", |
4347 | "end": { | 5169 | "end": { |
4348 | "column": 3, | 5170 | "column": 3, |
4349 | "line": 121 | 5171 | "line": 128 |
4350 | }, | 5172 | }, |
4351 | "file": "src/lib/Menu.js", | 5173 | "file": "src/lib/Menu.js", |
4352 | "id": "menu.help.learnMore", | 5174 | "id": "menu.help.learnMore", |
4353 | "start": { | 5175 | "start": { |
4354 | "column": 13, | 5176 | "column": 13, |
4355 | "line": 118 | 5177 | "line": 125 |
4356 | } | 5178 | } |
4357 | }, | 5179 | }, |
4358 | { | 5180 | { |
4359 | "defaultMessage": "!!!Changelog", | 5181 | "defaultMessage": "!!!Changelog", |
4360 | "end": { | 5182 | "end": { |
4361 | "column": 3, | 5183 | "column": 3, |
4362 | "line": 125 | 5184 | "line": 132 |
4363 | }, | 5185 | }, |
4364 | "file": "src/lib/Menu.js", | 5186 | "file": "src/lib/Menu.js", |
4365 | "id": "menu.help.changelog", | 5187 | "id": "menu.help.changelog", |
4366 | "start": { | 5188 | "start": { |
4367 | "column": 13, | 5189 | "column": 13, |
4368 | "line": 122 | 5190 | "line": 129 |
4369 | } | 5191 | } |
4370 | }, | 5192 | }, |
4371 | { | 5193 | { |
4372 | "defaultMessage": "!!!Support", | 5194 | "defaultMessage": "!!!Support", |
4373 | "end": { | 5195 | "end": { |
4374 | "column": 3, | 5196 | "column": 3, |
4375 | "line": 129 | 5197 | "line": 136 |
4376 | }, | 5198 | }, |
4377 | "file": "src/lib/Menu.js", | 5199 | "file": "src/lib/Menu.js", |
4378 | "id": "menu.help.support", | 5200 | "id": "menu.help.support", |
4379 | "start": { | 5201 | "start": { |
4380 | "column": 11, | 5202 | "column": 11, |
4381 | "line": 126 | 5203 | "line": 133 |
4382 | } | 5204 | } |
4383 | }, | 5205 | }, |
4384 | { | 5206 | { |
4385 | "defaultMessage": "!!!Copy Debug Information", | 5207 | "defaultMessage": "!!!Copy Debug Information", |
4386 | "end": { | 5208 | "end": { |
4387 | "column": 3, | 5209 | "column": 3, |
4388 | "line": 133 | 5210 | "line": 140 |
4389 | }, | 5211 | }, |
4390 | "file": "src/lib/Menu.js", | 5212 | "file": "src/lib/Menu.js", |
4391 | "id": "menu.help.debugInfo", | 5213 | "id": "menu.help.debugInfo", |
4392 | "start": { | 5214 | "start": { |
4393 | "column": 13, | 5215 | "column": 13, |
4394 | "line": 130 | 5216 | "line": 137 |
4395 | } | 5217 | } |
4396 | }, | 5218 | }, |
4397 | { | 5219 | { |
4398 | "defaultMessage": "!!!Ferdi Debug Information", | 5220 | "defaultMessage": "!!!Franz Debug Information", |
4399 | "end": { | 5221 | "end": { |
4400 | "column": 3, | 5222 | "column": 3, |
4401 | "line": 137 | 5223 | "line": 144 |
4402 | }, | 5224 | }, |
4403 | "file": "src/lib/Menu.js", | 5225 | "file": "src/lib/Menu.js", |
4404 | "id": "menu.help.debugInfoCopiedHeadline", | 5226 | "id": "menu.help.debugInfoCopiedHeadline", |
4405 | "start": { | 5227 | "start": { |
4406 | "column": 27, | 5228 | "column": 27, |
4407 | "line": 134 | 5229 | "line": 141 |
4408 | } | 5230 | } |
4409 | }, | 5231 | }, |
4410 | { | 5232 | { |
4411 | "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", | 5233 | "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", |
4412 | "end": { | 5234 | "end": { |
4413 | "column": 3, | 5235 | "column": 3, |
4414 | "line": 141 | 5236 | "line": 148 |
4415 | }, | 5237 | }, |
4416 | "file": "src/lib/Menu.js", | 5238 | "file": "src/lib/Menu.js", |
4417 | "id": "menu.help.debugInfoCopiedBody", | 5239 | "id": "menu.help.debugInfoCopiedBody", |
4418 | "start": { | 5240 | "start": { |
4419 | "column": 23, | 5241 | "column": 23, |
4420 | "line": 138 | 5242 | "line": 145 |
4421 | } | 5243 | } |
4422 | }, | 5244 | }, |
4423 | { | 5245 | { |
4424 | "defaultMessage": "!!!Terms of Service", | 5246 | "defaultMessage": "!!!Terms of Service", |
4425 | "end": { | 5247 | "end": { |
4426 | "column": 3, | 5248 | "column": 3, |
4427 | "line": 145 | 5249 | "line": 152 |
4428 | }, | 5250 | }, |
4429 | "file": "src/lib/Menu.js", | 5251 | "file": "src/lib/Menu.js", |
4430 | "id": "menu.help.tos", | 5252 | "id": "menu.help.tos", |
4431 | "start": { | 5253 | "start": { |
4432 | "column": 7, | 5254 | "column": 7, |
4433 | "line": 142 | 5255 | "line": 149 |
4434 | } | 5256 | } |
4435 | }, | 5257 | }, |
4436 | { | 5258 | { |
4437 | "defaultMessage": "!!!Privacy Statement", | 5259 | "defaultMessage": "!!!Privacy Statement", |
4438 | "end": { | 5260 | "end": { |
4439 | "column": 3, | 5261 | "column": 3, |
4440 | "line": 149 | 5262 | "line": 156 |
4441 | }, | 5263 | }, |
4442 | "file": "src/lib/Menu.js", | 5264 | "file": "src/lib/Menu.js", |
4443 | "id": "menu.help.privacy", | 5265 | "id": "menu.help.privacy", |
4444 | "start": { | 5266 | "start": { |
4445 | "column": 11, | 5267 | "column": 11, |
4446 | "line": 146 | 5268 | "line": 153 |
4447 | } | 5269 | } |
4448 | }, | 5270 | }, |
4449 | { | 5271 | { |
4450 | "defaultMessage": "!!!File", | 5272 | "defaultMessage": "!!!File", |
4451 | "end": { | 5273 | "end": { |
4452 | "column": 3, | 5274 | "column": 3, |
4453 | "line": 153 | 5275 | "line": 160 |
4454 | }, | 5276 | }, |
4455 | "file": "src/lib/Menu.js", | 5277 | "file": "src/lib/Menu.js", |
4456 | "id": "menu.file", | 5278 | "id": "menu.file", |
4457 | "start": { | 5279 | "start": { |
4458 | "column": 8, | 5280 | "column": 8, |
4459 | "line": 150 | 5281 | "line": 157 |
4460 | } | 5282 | } |
4461 | }, | 5283 | }, |
4462 | { | 5284 | { |
4463 | "defaultMessage": "!!!View", | 5285 | "defaultMessage": "!!!View", |
4464 | "end": { | 5286 | "end": { |
4465 | "column": 3, | 5287 | "column": 3, |
4466 | "line": 157 | 5288 | "line": 164 |
4467 | }, | 5289 | }, |
4468 | "file": "src/lib/Menu.js", | 5290 | "file": "src/lib/Menu.js", |
4469 | "id": "menu.view", | 5291 | "id": "menu.view", |
4470 | "start": { | 5292 | "start": { |
4471 | "column": 8, | 5293 | "column": 8, |
4472 | "line": 154 | 5294 | "line": 161 |
4473 | } | 5295 | } |
4474 | }, | 5296 | }, |
4475 | { | 5297 | { |
4476 | "defaultMessage": "!!!Services", | 5298 | "defaultMessage": "!!!Services", |
4477 | "end": { | 5299 | "end": { |
4478 | "column": 3, | 5300 | "column": 3, |
4479 | "line": 161 | 5301 | "line": 168 |
4480 | }, | 5302 | }, |
4481 | "file": "src/lib/Menu.js", | 5303 | "file": "src/lib/Menu.js", |
4482 | "id": "menu.services", | 5304 | "id": "menu.services", |
4483 | "start": { | 5305 | "start": { |
4484 | "column": 12, | 5306 | "column": 12, |
4485 | "line": 158 | 5307 | "line": 165 |
4486 | } | 5308 | } |
4487 | }, | 5309 | }, |
4488 | { | 5310 | { |
4489 | "defaultMessage": "!!!Window", | 5311 | "defaultMessage": "!!!Window", |
4490 | "end": { | 5312 | "end": { |
4491 | "column": 3, | 5313 | "column": 3, |
4492 | "line": 165 | 5314 | "line": 172 |
4493 | }, | 5315 | }, |
4494 | "file": "src/lib/Menu.js", | 5316 | "file": "src/lib/Menu.js", |
4495 | "id": "menu.window", | 5317 | "id": "menu.window", |
4496 | "start": { | 5318 | "start": { |
4497 | "column": 10, | 5319 | "column": 10, |
4498 | "line": 162 | 5320 | "line": 169 |
4499 | } | 5321 | } |
4500 | }, | 5322 | }, |
4501 | { | 5323 | { |
4502 | "defaultMessage": "!!!Help", | 5324 | "defaultMessage": "!!!Help", |
4503 | "end": { | 5325 | "end": { |
4504 | "column": 3, | 5326 | "column": 3, |
4505 | "line": 169 | 5327 | "line": 176 |
4506 | }, | 5328 | }, |
4507 | "file": "src/lib/Menu.js", | 5329 | "file": "src/lib/Menu.js", |
4508 | "id": "menu.help", | 5330 | "id": "menu.help", |
4509 | "start": { | 5331 | "start": { |
4510 | "column": 8, | 5332 | "column": 8, |
4511 | "line": 166 | 5333 | "line": 173 |
4512 | } | 5334 | } |
4513 | }, | 5335 | }, |
4514 | { | 5336 | { |
4515 | "defaultMessage": "!!!About Franz", | 5337 | "defaultMessage": "!!!About Franz", |
4516 | "end": { | 5338 | "end": { |
4517 | "column": 3, | 5339 | "column": 3, |
4518 | "line": 173 | 5340 | "line": 180 |
4519 | }, | 5341 | }, |
4520 | "file": "src/lib/Menu.js", | 5342 | "file": "src/lib/Menu.js", |
4521 | "id": "menu.app.about", | 5343 | "id": "menu.app.about", |
4522 | "start": { | 5344 | "start": { |
4523 | "column": 9, | 5345 | "column": 9, |
4524 | "line": 170 | 5346 | "line": 177 |
4525 | } | 5347 | } |
4526 | }, | 5348 | }, |
4527 | { | 5349 | { |
4528 | "defaultMessage": "!!!What's new?", | 5350 | "defaultMessage": "!!!What's new?", |
4529 | "end": { | 5351 | "end": { |
4530 | "column": 3, | 5352 | "column": 3, |
4531 | "line": 177 | 5353 | "line": 184 |
4532 | }, | 5354 | }, |
4533 | "file": "src/lib/Menu.js", | 5355 | "file": "src/lib/Menu.js", |
4534 | "id": "menu.app.announcement", | 5356 | "id": "menu.app.announcement", |
4535 | "start": { | 5357 | "start": { |
4536 | "column": 16, | 5358 | "column": 16, |
4537 | "line": 174 | 5359 | "line": 181 |
4538 | } | 5360 | } |
4539 | }, | 5361 | }, |
4540 | { | 5362 | { |
4541 | "defaultMessage": "!!!Settings", | 5363 | "defaultMessage": "!!!Settings", |
4542 | "end": { | 5364 | "end": { |
4543 | "column": 3, | 5365 | "column": 3, |
4544 | "line": 181 | 5366 | "line": 188 |
4545 | }, | 5367 | }, |
4546 | "file": "src/lib/Menu.js", | 5368 | "file": "src/lib/Menu.js", |
4547 | "id": "menu.app.settings", | 5369 | "id": "menu.app.settings", |
4548 | "start": { | 5370 | "start": { |
4549 | "column": 12, | 5371 | "column": 12, |
4550 | "line": 178 | 5372 | "line": 185 |
4551 | } | 5373 | } |
4552 | }, | 5374 | }, |
4553 | { | 5375 | { |
4554 | "defaultMessage": "!!!Check for updates", | 5376 | "defaultMessage": "!!!Check for updates", |
4555 | "end": { | 5377 | "end": { |
4556 | "column": 3, | 5378 | "column": 3, |
4557 | "line": 185 | 5379 | "line": 192 |
4558 | }, | 5380 | }, |
4559 | "file": "src/lib/Menu.js", | 5381 | "file": "src/lib/Menu.js", |
4560 | "id": "menu.app.checkForUpdates", | 5382 | "id": "menu.app.checkForUpdates", |
4561 | "start": { | 5383 | "start": { |
4562 | "column": 19, | 5384 | "column": 19, |
4563 | "line": 182 | 5385 | "line": 189 |
4564 | } | 5386 | } |
4565 | }, | 5387 | }, |
4566 | { | 5388 | { |
4567 | "defaultMessage": "!!!Hide", | 5389 | "defaultMessage": "!!!Hide", |
4568 | "end": { | 5390 | "end": { |
4569 | "column": 3, | 5391 | "column": 3, |
4570 | "line": 189 | 5392 | "line": 196 |
4571 | }, | 5393 | }, |
4572 | "file": "src/lib/Menu.js", | 5394 | "file": "src/lib/Menu.js", |
4573 | "id": "menu.app.hide", | 5395 | "id": "menu.app.hide", |
4574 | "start": { | 5396 | "start": { |
4575 | "column": 8, | 5397 | "column": 8, |
4576 | "line": 186 | 5398 | "line": 193 |
4577 | } | 5399 | } |
4578 | }, | 5400 | }, |
4579 | { | 5401 | { |
4580 | "defaultMessage": "!!!Hide Others", | 5402 | "defaultMessage": "!!!Hide Others", |
4581 | "end": { | 5403 | "end": { |
4582 | "column": 3, | 5404 | "column": 3, |
4583 | "line": 193 | 5405 | "line": 200 |
4584 | }, | 5406 | }, |
4585 | "file": "src/lib/Menu.js", | 5407 | "file": "src/lib/Menu.js", |
4586 | "id": "menu.app.hideOthers", | 5408 | "id": "menu.app.hideOthers", |
4587 | "start": { | 5409 | "start": { |
4588 | "column": 14, | 5410 | "column": 14, |
4589 | "line": 190 | 5411 | "line": 197 |
4590 | } | 5412 | } |
4591 | }, | 5413 | }, |
4592 | { | 5414 | { |
4593 | "defaultMessage": "!!!Unhide", | 5415 | "defaultMessage": "!!!Unhide", |
4594 | "end": { | 5416 | "end": { |
4595 | "column": 3, | 5417 | "column": 3, |
4596 | "line": 197 | 5418 | "line": 204 |
4597 | }, | 5419 | }, |
4598 | "file": "src/lib/Menu.js", | 5420 | "file": "src/lib/Menu.js", |
4599 | "id": "menu.app.unhide", | 5421 | "id": "menu.app.unhide", |
4600 | "start": { | 5422 | "start": { |
4601 | "column": 10, | 5423 | "column": 10, |
4602 | "line": 194 | 5424 | "line": 201 |
4603 | } | 5425 | } |
4604 | }, | 5426 | }, |
4605 | { | 5427 | { |
4606 | "defaultMessage": "!!!Quit", | 5428 | "defaultMessage": "!!!Quit", |
4607 | "end": { | 5429 | "end": { |
4608 | "column": 3, | 5430 | "column": 3, |
4609 | "line": 201 | 5431 | "line": 208 |
4610 | }, | 5432 | }, |
4611 | "file": "src/lib/Menu.js", | 5433 | "file": "src/lib/Menu.js", |
4612 | "id": "menu.app.quit", | 5434 | "id": "menu.app.quit", |
4613 | "start": { | 5435 | "start": { |
4614 | "column": 8, | 5436 | "column": 8, |
4615 | "line": 198 | 5437 | "line": 205 |
4616 | } | 5438 | } |
4617 | }, | 5439 | }, |
4618 | { | 5440 | { |
4619 | "defaultMessage": "!!!Add New Service...", | 5441 | "defaultMessage": "!!!Add New Service...", |
4620 | "end": { | 5442 | "end": { |
4621 | "column": 3, | 5443 | "column": 3, |
4622 | "line": 205 | 5444 | "line": 212 |
4623 | }, | 5445 | }, |
4624 | "file": "src/lib/Menu.js", | 5446 | "file": "src/lib/Menu.js", |
4625 | "id": "menu.services.addNewService", | 5447 | "id": "menu.services.addNewService", |
4626 | "start": { | 5448 | "start": { |
4627 | "column": 17, | 5449 | "column": 17, |
4628 | "line": 202 | 5450 | "line": 209 |
4629 | } | 5451 | } |
4630 | }, | 5452 | }, |
4631 | { | 5453 | { |
4632 | "defaultMessage": "!!!Add New Workspace...", | 5454 | "defaultMessage": "!!!Add New Workspace...", |
4633 | "end": { | 5455 | "end": { |
4634 | "column": 3, | 5456 | "column": 3, |
4635 | "line": 209 | 5457 | "line": 216 |
4636 | }, | 5458 | }, |
4637 | "file": "src/lib/Menu.js", | 5459 | "file": "src/lib/Menu.js", |
4638 | "id": "menu.workspaces.addNewWorkspace", | 5460 | "id": "menu.workspaces.addNewWorkspace", |
4639 | "start": { | 5461 | "start": { |
4640 | "column": 19, | 5462 | "column": 19, |
4641 | "line": 206 | 5463 | "line": 213 |
4642 | } | 5464 | } |
4643 | }, | 5465 | }, |
4644 | { | 5466 | { |
4645 | "defaultMessage": "!!!Open workspace drawer", | 5467 | "defaultMessage": "!!!Open workspace drawer", |
4646 | "end": { | 5468 | "end": { |
4647 | "column": 3, | 5469 | "column": 3, |
4648 | "line": 213 | 5470 | "line": 220 |
4649 | }, | 5471 | }, |
4650 | "file": "src/lib/Menu.js", | 5472 | "file": "src/lib/Menu.js", |
4651 | "id": "menu.workspaces.openWorkspaceDrawer", | 5473 | "id": "menu.workspaces.openWorkspaceDrawer", |
4652 | "start": { | 5474 | "start": { |
4653 | "column": 23, | 5475 | "column": 23, |
4654 | "line": 210 | 5476 | "line": 217 |
4655 | } | 5477 | } |
4656 | }, | 5478 | }, |
4657 | { | 5479 | { |
4658 | "defaultMessage": "!!!Close workspace drawer", | 5480 | "defaultMessage": "!!!Close workspace drawer", |
4659 | "end": { | 5481 | "end": { |
4660 | "column": 3, | 5482 | "column": 3, |
4661 | "line": 217 | 5483 | "line": 224 |
4662 | }, | 5484 | }, |
4663 | "file": "src/lib/Menu.js", | 5485 | "file": "src/lib/Menu.js", |
4664 | "id": "menu.workspaces.closeWorkspaceDrawer", | 5486 | "id": "menu.workspaces.closeWorkspaceDrawer", |
4665 | "start": { | 5487 | "start": { |
4666 | "column": 24, | 5488 | "column": 24, |
4667 | "line": 214 | 5489 | "line": 221 |
4668 | } | 5490 | } |
4669 | }, | 5491 | }, |
4670 | { | 5492 | { |
4671 | "defaultMessage": "!!!Activate next service...", | 5493 | "defaultMessage": "!!!Activate next service...", |
4672 | "end": { | 5494 | "end": { |
4673 | "column": 3, | 5495 | "column": 3, |
4674 | "line": 221 | 5496 | "line": 228 |
4675 | }, | 5497 | }, |
4676 | "file": "src/lib/Menu.js", | 5498 | "file": "src/lib/Menu.js", |
4677 | "id": "menu.services.setNextServiceActive", | 5499 | "id": "menu.services.setNextServiceActive", |
4678 | "start": { | 5500 | "start": { |
4679 | "column": 23, | 5501 | "column": 23, |
4680 | "line": 218 | 5502 | "line": 225 |
4681 | } | 5503 | } |
4682 | }, | 5504 | }, |
4683 | { | 5505 | { |
4684 | "defaultMessage": "!!!Activate previous service...", | 5506 | "defaultMessage": "!!!Activate previous service...", |
4685 | "end": { | 5507 | "end": { |
4686 | "column": 3, | 5508 | "column": 3, |
4687 | "line": 225 | 5509 | "line": 232 |
4688 | }, | 5510 | }, |
4689 | "file": "src/lib/Menu.js", | 5511 | "file": "src/lib/Menu.js", |
4690 | "id": "menu.services.activatePreviousService", | 5512 | "id": "menu.services.activatePreviousService", |
4691 | "start": { | 5513 | "start": { |
4692 | "column": 27, | 5514 | "column": 27, |
4693 | "line": 222 | 5515 | "line": 229 |
4694 | } | 5516 | } |
4695 | }, | 5517 | }, |
4696 | { | 5518 | { |
4697 | "defaultMessage": "!!!Disable notifications & audio", | 5519 | "defaultMessage": "!!!Disable notifications & audio", |
4698 | "end": { | 5520 | "end": { |
4699 | "column": 3, | 5521 | "column": 3, |
4700 | "line": 229 | 5522 | "line": 236 |
4701 | }, | 5523 | }, |
4702 | "file": "src/lib/Menu.js", | 5524 | "file": "src/lib/Menu.js", |
4703 | "id": "sidebar.muteApp", | 5525 | "id": "sidebar.muteApp", |
4704 | "start": { | 5526 | "start": { |
4705 | "column": 11, | 5527 | "column": 11, |
4706 | "line": 226 | 5528 | "line": 233 |
4707 | } | 5529 | } |
4708 | }, | 5530 | }, |
4709 | { | 5531 | { |
4710 | "defaultMessage": "!!!Enable notifications & audio", | 5532 | "defaultMessage": "!!!Enable notifications & audio", |
4711 | "end": { | 5533 | "end": { |
4712 | "column": 3, | 5534 | "column": 3, |
4713 | "line": 233 | 5535 | "line": 240 |
4714 | }, | 5536 | }, |
4715 | "file": "src/lib/Menu.js", | 5537 | "file": "src/lib/Menu.js", |
4716 | "id": "sidebar.unmuteApp", | 5538 | "id": "sidebar.unmuteApp", |
4717 | "start": { | 5539 | "start": { |
4718 | "column": 13, | 5540 | "column": 13, |
4719 | "line": 230 | 5541 | "line": 237 |
4720 | } | 5542 | } |
4721 | }, | 5543 | }, |
4722 | { | 5544 | { |
4723 | "defaultMessage": "!!!Workspaces", | 5545 | "defaultMessage": "!!!Workspaces", |
4724 | "end": { | 5546 | "end": { |
4725 | "column": 3, | 5547 | "column": 3, |
4726 | "line": 237 | 5548 | "line": 244 |
4727 | }, | 5549 | }, |
4728 | "file": "src/lib/Menu.js", | 5550 | "file": "src/lib/Menu.js", |
4729 | "id": "menu.workspaces", | 5551 | "id": "menu.workspaces", |
4730 | "start": { | 5552 | "start": { |
4731 | "column": 14, | 5553 | "column": 14, |
4732 | "line": 234 | 5554 | "line": 241 |
4733 | } | 5555 | } |
4734 | }, | 5556 | }, |
4735 | { | 5557 | { |
4736 | "defaultMessage": "!!!Default", | 5558 | "defaultMessage": "!!!Default", |
4737 | "end": { | 5559 | "end": { |
4738 | "column": 3, | 5560 | "column": 3, |
4739 | "line": 241 | 5561 | "line": 248 |
4740 | }, | 5562 | }, |
4741 | "file": "src/lib/Menu.js", | 5563 | "file": "src/lib/Menu.js", |
4742 | "id": "menu.workspaces.defaultWorkspace", | 5564 | "id": "menu.workspaces.defaultWorkspace", |
4743 | "start": { | 5565 | "start": { |
4744 | "column": 20, | 5566 | "column": 20, |
4745 | "line": 238 | 5567 | "line": 245 |
5568 | } | ||
5569 | }, | ||
5570 | { | ||
5571 | "defaultMessage": "!!!Todos", | ||
5572 | "end": { | ||
5573 | "column": 3, | ||
5574 | "line": 252 | ||
5575 | }, | ||
5576 | "file": "src/lib/Menu.js", | ||
5577 | "id": "menu.todos", | ||
5578 | "start": { | ||
5579 | "column": 9, | ||
5580 | "line": 249 | ||
5581 | } | ||
5582 | }, | ||
5583 | { | ||
5584 | "defaultMessage": "!!!Open Todos drawer", | ||
5585 | "end": { | ||
5586 | "column": 3, | ||
5587 | "line": 256 | ||
5588 | }, | ||
5589 | "file": "src/lib/Menu.js", | ||
5590 | "id": "menu.Todoss.openTodosDrawer", | ||
5591 | "start": { | ||
5592 | "column": 19, | ||
5593 | "line": 253 | ||
5594 | } | ||
5595 | }, | ||
5596 | { | ||
5597 | "defaultMessage": "!!!Close Todos drawer", | ||
5598 | "end": { | ||
5599 | "column": 3, | ||
5600 | "line": 260 | ||
5601 | }, | ||
5602 | "file": "src/lib/Menu.js", | ||
5603 | "id": "menu.Todoss.closeTodosDrawer", | ||
5604 | "start": { | ||
5605 | "column": 20, | ||
5606 | "line": 257 | ||
5607 | } | ||
5608 | }, | ||
5609 | { | ||
5610 | "defaultMessage": "!!!Enable Todos", | ||
5611 | "end": { | ||
5612 | "column": 3, | ||
5613 | "line": 264 | ||
5614 | }, | ||
5615 | "file": "src/lib/Menu.js", | ||
5616 | "id": "menu.todos.enableTodos", | ||
5617 | "start": { | ||
5618 | "column": 15, | ||
5619 | "line": 261 | ||
4746 | } | 5620 | } |
4747 | } | 5621 | } |
4748 | ], | 5622 | ], |
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index d02f78dbd..e28a9c65c 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "ΕπαναφόÏτωση", | 2 | "app.errorHandler.action" : "ΕπαναφόÏτωση", |
3 | "app.errorHandler.headline" : "Κάτι δεν λειτουÏγεί", | 3 | "app.errorHandler.headline" : "Κάτι δεν λειτουÏγεί", |
4 | "feature.announcements.changelog.headline" : "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", |
5 | "feature.delayApp.action" : "Get a Ferdi Supporter License", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.headline" : "Please purchase a Ferdi Supporter License to skip waiting", | 6 | "feature.delayApp.text" : "Franz θα συνεχίσει σε {seconds} δευτεÏόλεπτα.", |
7 | "feature.delayApp.text" : "Ferdi θα συνεχίσει σε {seconds} δευτεÏόλεπτα.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Get a Franz Supporter License", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Upgrade account", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Send as email", | 13 | "feature.shareFranz.action.email" : "Send as email", |
9 | "feature.shareFranz.action.facebook" : "Share on Facebook", | 14 | "feature.shareFranz.action.facebook" : "Share on Facebook", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 15 | "feature.shareFranz.action.twitter" : "Share on Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi is better together!", | 16 | "feature.shareFranz.headline" : "Ferdi is better together!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
15 | "global.api.unhealthy" : "Δεν είναι δυνατή η σÏνδεση με τις ζωντανÎÏ‚ υπηÏεσίες του Franz", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Δεν είναι δυνατή η σÏνδεση με τις ζωντανÎÏ‚ υπηÏεσίες του Ferdi", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Έχετε αποσυνδεθεί από το Διαδίκτυο", | 25 | "global.notConnectedToTheInternet" : "Έχετε αποσυνδεθεί από το Διαδίκτυο", |
17 | "global.spellchecker.useDefault" : "Use System Default ({default})", | 26 | "global.spellchecker.useDefault" : "Use System Default ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 27 | "global.spellchecking.autodetect" : "Detect language automatically", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 28 | "global.spellchecking.autodetect.short" : "Automatic", |
20 | "global.spellchecking.language" : "Spell checking language", | 29 | "global.spellchecking.language" : "Spell checking language", |
21 | "import.headline" : "Εισαγάγετε τις υπηÏεσίες σας Ferdi 4", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "ΥπηÏεσίες που δεν υποστηÏίζονται ακόμα στο Ferdi 5", | 31 | "import.headline" : "Εισαγάγετε τις υπηÏεσίες σας Franz 4", |
32 | "import.notSupportedHeadline" : "ΥπηÏεσίες που δεν υποστηÏίζονται ακόμα στο Franz 5", | ||
23 | "import.skip.label" : "ΘÎλω να Ï€ÏοσθÎσω υπηÏεσίες χειÏοκίνητα", | 33 | "import.skip.label" : "ΘÎλω να Ï€ÏοσθÎσω υπηÏεσίες χειÏοκίνητα", |
24 | "import.submit.label" : "Εισαγωγή υπηÏεσιών", | 34 | "import.submit.label" : "Εισαγωγή υπηÏεσιών", |
25 | "infobar.buttonChangelog" : "Τι νÎο υπάÏχει;", | 35 | "infobar.buttonChangelog" : "Τι νÎο υπάÏχει;", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "ΑνανÎωση υπηÏεσιών", | 37 | "infobar.buttonReloadServices" : "ΑνανÎωση υπηÏεσιών", |
28 | "infobar.requiredRequestsFailed" : "Δεν ήταν δυνατή η φόÏτωση υπηÏεσιών και πληÏοφοÏιών χÏηστών", | 38 | "infobar.requiredRequestsFailed" : "Δεν ήταν δυνατή η φόÏτωση υπηÏεσιών και πληÏοφοÏιών χÏηστών", |
29 | "infobar.servicesUpdated" : "Οι υπηÏεσίες σας Îχουν ενημεÏωθεί.", | 39 | "infobar.servicesUpdated" : "Οι υπηÏεσίες σας Îχουν ενημεÏωθεί.", |
40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", | ||
30 | "infobar.updateAvailable" : "ΥπάÏχει διαθÎσιμη μια νÎα ενημÎÏωση για τον Franz.", | 41 | "infobar.updateAvailable" : "ΥπάÏχει διαθÎσιμη μια νÎα ενημÎÏωση για τον Franz.", |
31 | "invite.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου", | 42 | "invite.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου", |
32 | "invite.headline.friends" : "Î ÏοσκαλÎστε 3 από τους φίλους ή τους συναδÎλφους σας", | 43 | "invite.headline.friends" : "Î ÏοσκαλÎστε 3 από τους φίλους ή τους συναδÎλφους σας", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "Η συνεδÏία σας Îληξε, συνδεθείτε ξανά.", | 54 | "login.serverLogout" : "Η συνεδÏία σας Îληξε, συνδεθείτε ξανά.", |
44 | "login.submit.label" : "ΣÏνδεση", | 55 | "login.submit.label" : "ΣÏνδεση", |
45 | "login.tokenExpired" : "Η συνεδÏία σας Îληξε, συνδεθείτε ξανά.", | 56 | "login.tokenExpired" : "Η συνεδÏία σας Îληξε, συνδεθείτε ξανά.", |
46 | "menu.app.about" : "Σχετικά με το Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
59 | "menu.app.about" : "Σχετικά με το Ferdi", | ||
47 | "menu.app.announcement" : "What's new?", | 60 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Έλεγχος για ενημεÏώσεις", | 61 | "menu.app.checkForUpdates" : "Έλεγχος για ενημεÏώσεις", |
49 | "menu.app.hide" : "ΑπόκÏυψη", | 62 | "menu.app.hide" : "ΑπόκÏυψη", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "ΑÏχείο", | 81 | "menu.file" : "ΑÏχείο", |
69 | "menu.help" : "Βοήθεια", | 82 | "menu.help" : "Βοήθεια", |
70 | "menu.help.changelog" : "Î Ïόσφατες αλλαγÎÏ‚", | 83 | "menu.help.changelog" : "Î Ïόσφατες αλλαγÎÏ‚", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Μάθετε πεÏισσότεÏα", | 87 | "menu.help.learnMore" : "Μάθετε πεÏισσότεÏα", |
72 | "menu.help.privacy" : "Δήλωση αποÏÏήτου", | 88 | "menu.help.privacy" : "Δήλωση αποÏÏήτου", |
73 | "menu.help.support" : "ΥποστήÏιξη", | 89 | "menu.help.support" : "ΥποστήÏιξη", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Activate previous service", | 92 | "menu.services.activatePreviousService" : "Activate previous service", |
77 | "menu.services.addNewService" : "ÎÎα ΥπηÏεσία", | 93 | "menu.services.addNewService" : "ÎÎα ΥπηÏεσία", |
78 | "menu.services.setNextServiceActive" : "Activate next service", | 94 | "menu.services.setNextServiceActive" : "Activate next service", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Î Ïοβολή", | 97 | "menu.view" : "Î Ïοβολή", |
80 | "menu.view.enterFullScreen" : "ΠλήÏης Οθόνη", | 98 | "menu.view.enterFullScreen" : "ΠλήÏης Οθόνη", |
81 | "menu.view.exitFullScreen" : "Έξοδος από πλήÏη οθόνη", | 99 | "menu.view.exitFullScreen" : "Έξοδος από πλήÏη οθόνη", |
82 | "menu.view.reloadFranz" : "ΑνανÎωση Franz", | 100 | "menu.view.reloadFranz" : "ΑνανÎωση Ferdi", |
83 | "menu.view.reloadService" : "ΑνανÎωση ΥπηÏεσίας", | 101 | "menu.view.reloadService" : "ΑνανÎωση ΥπηÏεσίας", |
84 | "menu.view.resetZoom" : "Î Ïαγματικό μÎγεθος", | 102 | "menu.view.resetZoom" : "Î Ïαγματικό μÎγεθος", |
85 | "menu.view.toggleDevTools" : "Άνοιγμα ΕÏγαλειοθήκη Î ÏογÏαμματιστών", | 103 | "menu.view.toggleDevTools" : "Άνοιγμα ΕÏγαλειοθήκη Î ÏογÏαμματιστών", |
86 | "menu.view.toggleFullScreen" : "ΛειτουÏγία πλήÏους οθόνης", | 104 | "menu.view.toggleFullScreen" : "ΛειτουÏγία πλήÏους οθόνης", |
87 | "menu.view.toggleServiceDevTools" : "ΛειτουÏγεία ΥπηÏεσίασ ΕÏγαλειοθήκης Î ÏογÏαμματιστών", | 105 | "menu.view.toggleServiceDevTools" : "ΛειτουÏγεία ΥπηÏεσίασ ΕÏγαλειοθήκης Î ÏογÏαμματιστών", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "ΜεγÎθυνση", | 107 | "menu.view.zoomIn" : "ΜεγÎθυνση", |
89 | "menu.view.zoomOut" : "ΣμίκÏυνση", | 108 | "menu.view.zoomOut" : "ΣμίκÏυνση", |
90 | "menu.window" : "ΠαÏάθυÏο", | 109 | "menu.window" : "ΠαÏάθυÏο", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Υποβολή", | 122 | "password.submit.label" : "Υποβολή", |
104 | "password.successInfo" : "ΕλÎγξτε το email σας", | 123 | "password.successInfo" : "ΕλÎγξτε το email σας", |
105 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 124 | "premiumFeature.button.upgradeAccount" : "Upgrade account", |
106 | "pricing.headline" : "ΥποστηÏίξτε το Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Δεν θÎλω να βοηθήσω στην ανάπτυξη του Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "ΘÎλω να βοηθήσω στην ανάπτυξη του Franz", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "ΕπιλÎξτε το πακÎτο υποστήÏιξης", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "ΕπαναφόÏτωση {name}", | 152 | "service.crashHandler.action" : "ΕπαναφόÏτωση {name}", |
111 | "service.crashHandler.autoReload" : "Γίνεται Ï€Ïοσπάθεια αυτόματης ανάκτησης του {name} σε {seconds} δευτεÏόλεπτα", | 153 | "service.crashHandler.autoReload" : "Γίνεται Ï€Ïοσπάθεια αυτόματης ανάκτησης του {name} σε {seconds} δευτεÏόλεπτα", |
112 | "service.crashHandler.headline" : "Ω, όχι!", | 154 | "service.crashHandler.headline" : "Ω, όχι!", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "Ω, όχι!", | 160 | "service.errorHandler.headline" : "Ω, όχι!", |
119 | "service.errorHandler.message" : "Σφάλμα", | 161 | "service.errorHandler.message" : "Σφάλμα", |
120 | "service.errorHandler.text" : "{name} has failed to load.", | 162 | "service.errorHandler.text" : "{name} has failed to load.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Loading", | 168 | "service.webviewLoader.loading" : "Loading", |
122 | "services.getStarted" : "Ξεκινήστε", | 169 | "services.getStarted" : "Ξεκινήστε", |
123 | "services.welcome" : "Καλώς οÏίσατε στον Franz", | 170 | "services.welcome" : "Καλώς οÏίσατε στον Ferdi", |
124 | "settings.account.account.editButton" : "ΕπεξεÏγασία λογαÏιασμοÏ", | 171 | "settings.account.account.editButton" : "ΕπεξεÏγασία λογαÏιασμοÏ", |
125 | "settings.account.accountType.basic" : "Βασικός λογαÏιασμός", | 172 | "settings.account.accountType.basic" : "Βασικός λογαÏιασμός", |
126 | "settings.account.accountType.premium" : "ΛογαÏιασμός Premium ΥποστηÏικτή", | 173 | "settings.account.accountType.premium" : "ΛογαÏιασμός Premium ΥποστηÏικτή", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Αλλαγή ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης", | 182 | "settings.account.headlinePassword" : "Αλλαγή ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης", |
136 | "settings.account.headlineProfile" : "ΕνημÎÏωση Ï€Ïοφίλ", | 183 | "settings.account.headlineProfile" : "ΕνημÎÏωση Ï€Ïοφίλ", |
137 | "settings.account.headlineSubscription" : "Η συνδÏομή σας", | 184 | "settings.account.headlineSubscription" : "Η συνδÏομή σας", |
138 | "settings.account.headlineUpgrade" : "Αναβάθμιση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚ και υποστήÏιξη Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Λήψη", | 187 | "settings.account.invoiceDownload" : "Λήψη", |
140 | "settings.account.manageSubscription.label" : "ΔιαχείÏιση της συνδÏομής σας", | 188 | "settings.account.manageSubscription.label" : "ΔιαχείÏιση της συνδÏομής σας", |
141 | "settings.account.successInfo" : "Οι αλλαγÎÏ‚ σας Îχουν αποθηκευτεί", | 189 | "settings.account.successInfo" : "Οι αλλαγÎÏ‚ σας Îχουν αποθηκευτεί", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Δοκιμάστε ξανά", | 193 | "settings.account.tryReloadServices" : "Δοκιμάστε ξανά", |
143 | "settings.account.tryReloadUserInfoRequest" : "Δοκιμάστε ξανά", | 194 | "settings.account.tryReloadUserInfoRequest" : "Δοκιμάστε ξανά", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Δεν ήταν δυνατή η φόÏτωση πληÏοφοÏιών χÏήστη", | 196 | "settings.account.userInfoRequestFailed" : "Δεν ήταν δυνατή η φόÏτωση πληÏοφοÏιών χÏήστη", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "ΚαθαÏισμός λανθάνουσας μνήμης", | 198 | "settings.app.buttonClearAllCache" : "ΚαθαÏισμός λανθάνουσας μνήμης", |
146 | "settings.app.buttonInstallUpdate" : "Επανεκκίνηση & εγκατάσταση ενημεÏώσεων", | 199 | "settings.app.buttonInstallUpdate" : "Επανεκκίνηση & εγκατάσταση ενημεÏώσεων", |
147 | "settings.app.buttonSearchForUpdate" : "Έλεγχος για ενημεÏώσεις", | 200 | "settings.app.buttonSearchForUpdate" : "Έλεγχος για ενημεÏώσεις", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Join the Dark Side", | 206 | "settings.app.form.darkMode" : "Join the Dark Side", |
154 | "settings.app.form.enableGPUAcceleration" : "ΕνεÏγοποιήση Ενίσχυσης GPU ", | 207 | "settings.app.form.enableGPUAcceleration" : "ΕνεÏγοποιήση Ενίσχυσης GPU ", |
155 | "settings.app.form.enableSpellchecking" : "ΕνεÏγοποίηση οÏθογÏÎ±Ï†Î¹ÎºÎ¿Ï ÎµÎ»Îγχου", | 208 | "settings.app.form.enableSpellchecking" : "ΕνεÏγοποίηση οÏθογÏÎ±Ï†Î¹ÎºÎ¿Ï ÎµÎ»Îγχου", |
156 | "settings.app.form.enableSystemTray" : "Εμφάνιση του Ferdi στη γÏαμμή ειδοποιήσεων", | 209 | "settings.app.form.enableSystemTray" : "Εμφάνιση του Franz στη γÏαμμή ειδοποιήσεων", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Γλώσσα", | 212 | "settings.app.form.language" : "Γλώσσα", |
158 | "settings.app.form.minimizeToSystemTray" : "Ελαχιστοποίηση του Ferdi στη γÏαμμή ειδοποιήσεων", | 213 | "settings.app.form.minimizeToSystemTray" : "Ελαχιστοποίηση του Ferdi στη γÏαμμή ειδοποιήσεων", |
159 | "settings.app.form.runInBackground" : "ΚÏατήστε το Ferdi στο παÏασκήνιο κατά το κλείσιμο του παÏαθÏÏου", | 214 | "settings.app.form.runInBackground" : "ΚÏατήστε το Ferdi στο παÏασκήνιο κατά το κλείσιμο του παÏαθÏÏου", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Βοηθήστε μας να μεταφÏάσουμε το Ferdi στη δική σας γλώσσα.", | 226 | "settings.app.translationHelp" : "Βοηθήστε μας να μεταφÏάσουμε το Ferdi στη δική σας γλώσσα.", |
172 | "settings.app.updateStatusAvailable" : "ΥπάÏχει διαθÎσιμη ενημÎÏωση, γίνεται λήψη...", | 227 | "settings.app.updateStatusAvailable" : "ΥπάÏχει διαθÎσιμη ενημÎÏωση, γίνεται λήψη...", |
173 | "settings.app.updateStatusSearching" : " Γίνεται αναζήτηση για ενημÎÏωση", | 228 | "settings.app.updateStatusSearching" : " Γίνεται αναζήτηση για ενημÎÏωση", |
174 | "settings.app.updateStatusUpToDate" : "ΧÏησιμοποιείτε την τελευταία Îκδοση του Franz", | 229 | "settings.app.updateStatusUpToDate" : "ΧÏησιμοποιείτε την τελευταία Îκδοση του Ferdi", |
175 | "settings.invite.headline" : "Î ÏοσκαλÎστε Φίλους", | 230 | "settings.invite.headline" : "Î ÏοσκαλÎστε Φίλους", |
176 | "settings.navigation.account" : "ΛογαÏιασμός", | 231 | "settings.navigation.account" : "ΛογαÏιασμός", |
177 | "settings.navigation.availableServices" : "ΔιαθÎσιμες υπηÏεσίες", | 232 | "settings.navigation.availableServices" : "ΔιαθÎσιμες υπηÏεσίες", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Οι υπηÏεσίες σας", | 237 | "settings.navigation.yourServices" : "Οι υπηÏεσίες σας", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Your workspaces", |
184 | "settings.recipes.all" : "Όλες οι υπηÏεσίες", | 239 | "settings.recipes.all" : "Όλες οι υπηÏεσίες", |
185 | "settings.recipes.dev" : "Ανάπτυξη", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "ΔιαθÎσιμες υπηÏεσίες", | 247 | "settings.recipes.headline" : "ΔιαθÎσιμες υπηÏεσίες", |
187 | "settings.recipes.missingService" : "Λείπει κάποια υπηÏεσία;", | 248 | "settings.recipes.missingService" : "Λείπει κάποια υπηÏεσία;", |
188 | "settings.recipes.mostPopular" : "Τα πιο δημοφιλή", | 249 | "settings.recipes.mostPopular" : "Τα πιο δημοφιλή", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Î Ïοσθήκη νÎας υπηÏεσίας", | 332 | "sidebar.addNewService" : "Î Ïοσθήκη νÎας υπηÏεσίας", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 334 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", |
273 | "sidebar.muteApp" : "ΑπενεÏγοποίηση ειδοποιήσεων & ήχου", | 335 | "sidebar.muteApp" : "ΑπενεÏγοποίηση ειδοποιήσεων & ήχου", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "Ρυθμίσεις", | 338 | "sidebar.settings" : "Ρυθμίσεις", |
276 | "sidebar.unmuteApp" : "ΕνεÏγοποίηση ειδοποιήσεων & ήχου", | 339 | "sidebar.unmuteApp" : "ΕνεÏγοποίηση ειδοποιήσεων & ήχου", |
277 | "signup.company.label" : "ΕταιÏεία", | ||
278 | "signup.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου", | 340 | "signup.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου", |
279 | "signup.emailDuplicate" : "Ένας χÏήστης με τη συγκεκÏιμÎνη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου υπάÏχει ήδη", | 341 | "signup.emailDuplicate" : "Ένας χÏήστης με τη συγκεκÏιμÎνη διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου υπάÏχει ήδη", |
280 | "signup.firstname.label" : "Όνομα", | 342 | "signup.firstname.label" : "Όνομα", |
@@ -296,10 +358,16 @@ | |||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | 358 | "subscription.features.workspaces" : "Organize your services in workspaces", |
297 | "subscription.includedFeatures" : "Ο Premium λογαÏιασμός υποστήÏιξης Ferdi πεÏιλαμβάνει", | 359 | "subscription.includedFeatures" : "Ο Premium λογαÏιασμός υποστήÏιξης Ferdi πεÏιλαμβάνει", |
298 | "subscription.paymentSessionError" : "Δεν ήταν δυνατή η Ï€Ïοετοιμασία της φόÏμας πληÏωμής", | 360 | "subscription.paymentSessionError" : "Δεν ήταν δυνατή η Ï€Ïοετοιμασία της φόÏμας πληÏωμής", |
299 | "subscription.submit.label" : "ΘÎλω να βοηθήσω στην ανάπτυξη του Franz", | 361 | "subscription.submit.label" : "ΘÎλω να βοηθήσω στην ανάπτυξη του Ferdi", |
300 | "subscription.type.free" : "δωÏεάν", | 362 | "subscription.type.free" : "δωÏεάν", |
301 | "subscription.type.month" : "μήνας", | 363 | "subscription.type.month" : "μήνας", |
302 | "subscription.type.year" : "Îτος", | 364 | "subscription.type.year" : "Îτος", |
365 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", | ||
366 | "subscription.cta.allOptions" : "See all options", | ||
367 | "subscription.cta.choosePlan" : "Choose your plan", | ||
368 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", | ||
369 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", | ||
370 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | ||
303 | "subscriptionPopup.buttonCancel" : "ΑκÏÏωση", | 371 | "subscriptionPopup.buttonCancel" : "ΑκÏÏωση", |
304 | "subscriptionPopup.buttonDone" : "Έγινε", | 372 | "subscriptionPopup.buttonDone" : "Έγινε", |
305 | "tabs.item.deleteService" : "ΔιαγÏαφή υπηÏεσίας", | 373 | "tabs.item.deleteService" : "ΔιαγÏαφή υπηÏεσίας", |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 74fc7427a..98bdec0f1 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -2,9 +2,14 @@ | |||
2 | "app.errorHandler.action": "Reload", | 2 | "app.errorHandler.action": "Reload", |
3 | "app.errorHandler.headline": "Something went wrong", | 3 | "app.errorHandler.headline": "Something went wrong", |
4 | "feature.announcements.changelog.headline": "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline": "Changes in Ferdi {version}", |
5 | "feature.delayApp.action": "Get a Ferdi Supporter License", | ||
6 | "feature.delayApp.headline": "Please purchase a Ferdi Supporter License to skip waiting", | 5 | "feature.delayApp.headline": "Please purchase a Ferdi Supporter License to skip waiting", |
7 | "feature.delayApp.text": "Ferdi will continue in {seconds} seconds.", | 6 | "feature.delayApp.text": "Ferdi will continue in {seconds} seconds.", |
7 | "feature.delayApp.trial.action": "Yes, I want the free 14 day trial of Ferdi Professional", | ||
8 | "feature.delayApp.trial.actionShort": "Activate the free Ferdi Professional trial", | ||
9 | "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", | ||
11 | "feature.delayApp.upgrade.actionShort": "Upgrade account", | ||
12 | "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email": "Send as email", | 13 | "feature.shareFranz.action.email": "Send as email", |
9 | "feature.shareFranz.action.facebook": "Share on Facebook", | 14 | "feature.shareFranz.action.facebook": "Share on Facebook", |
10 | "feature.shareFranz.action.twitter": "Share on Twitter", | 15 | "feature.shareFranz.action.twitter": "Share on Twitter", |
@@ -12,12 +17,17 @@ | |||
12 | "feature.shareFranz.shareText.email": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", |
14 | "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", |
20 | "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", | ||
21 | "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade": "Upgrade Account", | ||
15 | "global.api.unhealthy": "Can't connect to Ferdi online services", | 23 | "global.api.unhealthy": "Can't connect to Ferdi online services", |
24 | "global.franzProRequired": "Ferdi Professional Required", | ||
16 | "global.notConnectedToTheInternet": "You are not connected to the internet.", | 25 | "global.notConnectedToTheInternet": "You are not connected to the internet.", |
17 | "global.spellchecker.useDefault": "Use System Default ({default})", | 26 | "global.spellchecker.useDefault": "Use System Default ({default})", |
18 | "global.spellchecking.autodetect": "Detect language automatically", | 27 | "global.spellchecking.autodetect": "Detect language automatically", |
19 | "global.spellchecking.autodetect.short": "Automatic", | 28 | "global.spellchecking.autodetect.short": "Automatic", |
20 | "global.spellchecking.language": "Spell checking language", | 29 | "global.spellchecking.language": "Spell checking language", |
30 | "global.upgradeButton.upgradeToPro": "Upgrade to Ferdi Professional", | ||
21 | "import.headline": "Import your Ferdi 4 services", | 31 | "import.headline": "Import your Ferdi 4 services", |
22 | "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", | 32 | "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", |
23 | "import.skip.label": "I want to add services manually", | 33 | "import.skip.label": "I want to add services manually", |
@@ -28,6 +38,7 @@ | |||
28 | "infobar.buttonReloadServices": "Reload services", | 38 | "infobar.buttonReloadServices": "Reload services", |
29 | "infobar.requiredRequestsFailed": "Could not load services and user information", | 39 | "infobar.requiredRequestsFailed": "Could not load services and user information", |
30 | "infobar.servicesUpdated": "Your services have been updated.", | 40 | "infobar.servicesUpdated": "Your services have been updated.", |
41 | "infobar.trialActivated": "Your trial was successfully activated. Happy messaging!", | ||
31 | "infobar.updateAvailable": "A new update for Ferdi is available.", | 42 | "infobar.updateAvailable": "A new update for Ferdi is available.", |
32 | "invite.email.label": "Email address", | 43 | "invite.email.label": "Email address", |
33 | "invite.headline.friends": "Invite 3 of your friends or colleagues", | 44 | "invite.headline.friends": "Invite 3 of your friends or colleagues", |
@@ -46,6 +57,8 @@ | |||
46 | "login.serverLogout": "Your session expired, please login again.", | 57 | "login.serverLogout": "Your session expired, please login again.", |
47 | "login.submit.label": "Sign in", | 58 | "login.submit.label": "Sign in", |
48 | "login.tokenExpired": "Your session expired, please login again.", | 59 | "login.tokenExpired": "Your session expired, please login again.", |
60 | "menu.Todoss.closeTodosDrawer": "Close Todos drawer", | ||
61 | "menu.Todoss.openTodosDrawer": "Open Todos drawer", | ||
49 | "menu.app.about": "About Franz", | 62 | "menu.app.about": "About Franz", |
50 | "menu.app.announcement": "What's new?", | 63 | "menu.app.announcement": "What's new?", |
51 | "menu.app.checkForUpdates": "Check for updates", | 64 | "menu.app.checkForUpdates": "Check for updates", |
@@ -82,6 +95,8 @@ | |||
82 | "menu.services.activatePreviousService": "Activate previous service", | 95 | "menu.services.activatePreviousService": "Activate previous service", |
83 | "menu.services.addNewService": "Add New Service...", | 96 | "menu.services.addNewService": "Add New Service...", |
84 | "menu.services.setNextServiceActive": "Activate next service", | 97 | "menu.services.setNextServiceActive": "Activate next service", |
98 | "menu.todos": "Todos", | ||
99 | "menu.todos.enableTodos": "Enable Todos", | ||
85 | "menu.view": "View", | 100 | "menu.view": "View", |
86 | "menu.view.enterFullScreen": "Enter Full Screen", | 101 | "menu.view.enterFullScreen": "Enter Full Screen", |
87 | "menu.view.exitFullScreen": "Exit Full Screen", | 102 | "menu.view.exitFullScreen": "Exit Full Screen", |
@@ -91,6 +106,7 @@ | |||
91 | "menu.view.toggleDevTools": "Toggle Developer Tools", | 106 | "menu.view.toggleDevTools": "Toggle Developer Tools", |
92 | "menu.view.toggleFullScreen": "Toggle Full Screen", | 107 | "menu.view.toggleFullScreen": "Toggle Full Screen", |
93 | "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools", | 108 | "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools", |
109 | "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", | ||
94 | "menu.view.zoomIn": "Zoom In", | 110 | "menu.view.zoomIn": "Zoom In", |
95 | "menu.view.zoomOut": "Zoom Out", | 111 | "menu.view.zoomOut": "Zoom Out", |
96 | "menu.window": "Window", | 112 | "menu.window": "Window", |
@@ -109,10 +125,33 @@ | |||
109 | "password.submit.label": "Submit", | 125 | "password.submit.label": "Submit", |
110 | "password.successInfo": "Please check your email", | 126 | "password.successInfo": "Please check your email", |
111 | "premiumFeature.button.upgradeAccount": "Upgrade account", | 127 | "premiumFeature.button.upgradeAccount": "Upgrade account", |
112 | "pricing.headline": "Support Ferdi", | 128 | "pricing.features.adFree": "Forever ad-free", |
113 | "pricing.link.skipPayment": "I don't want to support the development of Ferdi.", | 129 | "pricing.features.appDelays": "No Waiting Screens", |
114 | "pricing.submit.label": "I want to support the development of Ferdi", | 130 | "pricing.features.customWebsites": "Add Custom Websites", |
115 | "pricing.support.label": "Select your support plan", | 131 | "pricing.features.onPremise": "On-premise & other Hosted Services", |
132 | "pricing.features.serviceProxies": "Service Proxies", | ||
133 | "pricing.features.spellchecker": "Spellchecker support", | ||
134 | "pricing.features.teamManagement": "Team Management", | ||
135 | "pricing.features.thirdPartyServices": "Install 3rd party services", | ||
136 | "pricing.features.unlimitedServices": "Add unlimited services", | ||
137 | "pricing.features.workspaces": "Workspaces", | ||
138 | "pricing.plan.free": "Ferdi Free", | ||
139 | "pricing.plan.legacy": "Ferdi Premium", | ||
140 | "pricing.plan.personal": "Ferdi Personal", | ||
141 | "pricing.plan.personal-monthly": "Ferdi Personal Monthly", | ||
142 | "pricing.plan.personal-yearly": "Ferdi Personal Yearly", | ||
143 | "pricing.plan.pro": "Ferdi Professional", | ||
144 | "pricing.plan.pro-monthly": "Ferdi Professional Monthly", | ||
145 | "pricing.plan.pro-yearly": "Ferdi Professional Yearly", | ||
146 | "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", | ||
147 | "pricing.trial.cta.skip": "Continue to Franz", | ||
148 | "pricing.trial.error": "Sorry, we could not activate your trial!", | ||
149 | "pricing.trial.features.headline": "Ferdi Professional includes:", | ||
150 | "pricing.trial.headline": "Ferdi Professional", | ||
151 | "pricing.trial.subheadline": "Your personal welcome offer:", | ||
152 | "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", | ||
153 | "pricing.trial.terms.headline": "No strings attached", | ||
154 | "pricing.trial.terms.noCreditCard": "No credit card required", | ||
116 | "service.crashHandler.action": "Reload {name}", | 155 | "service.crashHandler.action": "Reload {name}", |
117 | "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", | 156 | "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", |
118 | "service.crashHandler.headline": "Oh no!", | 157 | "service.crashHandler.headline": "Oh no!", |
@@ -124,11 +163,16 @@ | |||
124 | "service.errorHandler.headline": "Oh no!", | 163 | "service.errorHandler.headline": "Oh no!", |
125 | "service.errorHandler.message": "Error", | 164 | "service.errorHandler.message": "Error", |
126 | "service.errorHandler.text": "{name} has failed to load.", | 165 | "service.errorHandler.text": "{name} has failed to load.", |
166 | "service.restrictedHandler.action": "Upgrade Account", | ||
167 | "service.restrictedHandler.customUrl.headline": "Ferdi Professional Plan required", | ||
168 | "service.restrictedHandler.customUrl.text": "Please upgrade to the Ferdi Professional plan to use custom urls & self hosted services.", | ||
169 | "service.restrictedHandler.serviceLimit.headline": "You have reached your service limit.", | ||
170 | "service.restrictedHandler.serviceLimit.text": "Please upgrade your account to use more than {count} services.", | ||
127 | "service.webviewLoader.loading": "Loading", | 171 | "service.webviewLoader.loading": "Loading", |
128 | "services.getStarted": "Get started", | 172 | "services.getStarted": "Get started", |
129 | "services.login": "Please login to use Ferdi.", | 173 | "services.login": "Please login to use Ferdi.", |
130 | "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", | 174 | "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", |
131 | "services.welcome": "Welcome to Ferdi", | 175 | "services.welcome": "Welcome to Franz", |
132 | "settings.account.account.editButton": "Edit account", | 176 | "settings.account.account.editButton": "Edit account", |
133 | "settings.account.accountType.basic": "Basic Account", | 177 | "settings.account.accountType.basic": "Basic Account", |
134 | "settings.account.accountType.premium": "Premium Supporter Account", | 178 | "settings.account.accountType.premium": "Premium Supporter Account", |
@@ -143,13 +187,19 @@ | |||
143 | "settings.account.headlinePassword": "Change password", | 187 | "settings.account.headlinePassword": "Change password", |
144 | "settings.account.headlineProfile": "Update profile", | 188 | "settings.account.headlineProfile": "Update profile", |
145 | "settings.account.headlineSubscription": "Your subscription", | 189 | "settings.account.headlineSubscription": "Your subscription", |
146 | "settings.account.headlineUpgrade": "Upgrade your account & support Ferdi", | 190 | "settings.account.headlineTrialUpgrade": "Get the free 14 day Ferdi Professional Trial", |
191 | "settings.account.headlineUpgradeAccount": "Upgrade your account & get the full Ferdi experience", | ||
147 | "settings.account.invoiceDownload": "Download", | 192 | "settings.account.invoiceDownload": "Download", |
148 | "settings.account.manageSubscription.label": "Manage your subscription", | 193 | "settings.account.manageSubscription.label": "Manage your subscription", |
149 | "settings.account.successInfo": "Your changes have been saved", | 194 | "settings.account.successInfo": "Your changes have been saved", |
195 | "settings.account.trial": "Free Trial", | ||
196 | "settings.account.trialEndsIn": "Your free trial ends in {duration}.", | ||
197 | "settings.account.trialUpdateBillingInfo": "Please update your billing info to continue using {license} after your trial period.", | ||
150 | "settings.account.tryReloadServices": "Try again", | 198 | "settings.account.tryReloadServices": "Try again", |
151 | "settings.account.tryReloadUserInfoRequest": "Try again", | 199 | "settings.account.tryReloadUserInfoRequest": "Try again", |
200 | "settings.account.upgradeToPro.label": "Upgrade to Ferdi Professional", | ||
152 | "settings.account.userInfoRequestFailed": "Could not load user information", | 201 | "settings.account.userInfoRequestFailed": "Could not load user information", |
202 | "settings.account.yourLicense": "Your Ferdi License", | ||
153 | "settings.app.buttonClearAllCache": "Clear cache", | 203 | "settings.app.buttonClearAllCache": "Clear cache", |
154 | "settings.app.buttonInstallUpdate": "Restart & install update", | 204 | "settings.app.buttonInstallUpdate": "Restart & install update", |
155 | "settings.app.buttonSearchForUpdate": "Check for updates", | 205 | "settings.app.buttonSearchForUpdate": "Check for updates", |
@@ -162,10 +212,11 @@ | |||
162 | "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", | 212 | "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", |
163 | "settings.app.form.enableSpellchecking": "Enable spell checking", | 213 | "settings.app.form.enableSpellchecking": "Enable spell checking", |
164 | "settings.app.form.enableSystemTray": "Show Ferdi in system tray", | 214 | "settings.app.form.enableSystemTray": "Show Ferdi in system tray", |
215 | "settings.app.form.enableTodos": "Enable Ferdi Todos", | ||
216 | "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", | ||
165 | "settings.app.form.language": "Language", | 217 | "settings.app.form.language": "Language", |
166 | "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray", | 218 | "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray", |
167 | "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", | 219 | "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", |
168 | "settings.app.form.server": "Server", | ||
169 | "settings.app.form.showDisabledServices": "Display disabled services tabs", | 220 | "settings.app.form.showDisabledServices": "Display disabled services tabs", |
170 | "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", | 221 | "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", |
171 | "settings.app.headline": "Settings", | 222 | "settings.app.headline": "Settings", |
@@ -178,6 +229,7 @@ | |||
178 | "settings.app.restartRequired": "Changes require restart", | 229 | "settings.app.restartRequired": "Changes require restart", |
179 | "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", | 230 | "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", |
180 | "settings.app.subheadlineCache": "Cache", | 231 | "settings.app.subheadlineCache": "Cache", |
232 | "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. The default server will only work for premium users. (default: https://app.franztodos.com)", | ||
181 | "settings.app.translationHelp": "Help us to translate Ferdi into your language.", | 233 | "settings.app.translationHelp": "Help us to translate Ferdi into your language.", |
182 | "settings.app.updateStatusAvailable": "Update available, downloading...", | 234 | "settings.app.updateStatusAvailable": "Update available, downloading...", |
183 | "settings.app.updateStatusSearching": "Is searching for update", | 235 | "settings.app.updateStatusSearching": "Is searching for update", |
@@ -192,7 +244,13 @@ | |||
192 | "settings.navigation.yourServices": "Your services", | 244 | "settings.navigation.yourServices": "Your services", |
193 | "settings.navigation.yourWorkspaces": "Your workspaces", | 245 | "settings.navigation.yourWorkspaces": "Your workspaces", |
194 | "settings.recipes.all": "All services", | 246 | "settings.recipes.all": "All services", |
195 | "settings.recipes.dev": "Development", | 247 | "settings.recipes.custom": "Custom Services", |
248 | "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", | ||
249 | "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", | ||
250 | "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", | ||
251 | "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", | ||
252 | "settings.recipes.customService.openDevDocs": "Developer Documentation", | ||
253 | "settings.recipes.customService.openFolder": "Open folder", | ||
196 | "settings.recipes.headline": "Available services", | 254 | "settings.recipes.headline": "Available services", |
197 | "settings.recipes.missingService": "Missing a service?", | 255 | "settings.recipes.missingService": "Missing a service?", |
198 | "settings.recipes.mostPopular": "Most popular", | 256 | "settings.recipes.mostPopular": "Most popular", |
@@ -279,12 +337,13 @@ | |||
279 | "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 337 | "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
280 | "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", | 338 | "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", |
281 | "sidebar.addNewService": "Add new service", | 339 | "sidebar.addNewService": "Add new service", |
340 | "sidebar.closeTodosDrawer": "Close Ferdi Todos", | ||
282 | "sidebar.closeWorkspaceDrawer": "Close workspace drawer", | 341 | "sidebar.closeWorkspaceDrawer": "Close workspace drawer", |
283 | "sidebar.muteApp": "Disable notifications & audio", | 342 | "sidebar.muteApp": "Disable notifications & audio", |
343 | "sidebar.openTodosDrawer": "Open Ferdi Todos", | ||
284 | "sidebar.openWorkspaceDrawer": "Open workspace drawer", | 344 | "sidebar.openWorkspaceDrawer": "Open workspace drawer", |
285 | "sidebar.settings": "Settings", | 345 | "sidebar.settings": "Settings", |
286 | "sidebar.unmuteApp": "Enable notifications & audio", | 346 | "sidebar.unmuteApp": "Enable notifications & audio", |
287 | "signup.company.label": "Company", | ||
288 | "signup.email.label": "Email address", | 347 | "signup.email.label": "Email address", |
289 | "signup.emailDuplicate": "A user with that email address already exists", | 348 | "signup.emailDuplicate": "A user with that email address already exists", |
290 | "signup.firstname.label": "First Name", | 349 | "signup.firstname.label": "First Name", |
@@ -296,20 +355,12 @@ | |||
296 | "signup.link.login": "Already have an account, sign in?", | 355 | "signup.link.login": "Already have an account, sign in?", |
297 | "signup.password.label": "Password", | 356 | "signup.password.label": "Password", |
298 | "signup.submit.label": "Create account", | 357 | "signup.submit.label": "Create account", |
299 | "subscription.euTaxInfo": "EU residents: local sales tax may apply", | 358 | "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", |
300 | "subscription.features.ads": "No ads, ever!", | 359 | "subscription.cta.allOptions": "See all options", |
301 | "subscription.features.comingSoon": "coming soon", | 360 | "subscription.cta.choosePlan": "Choose your plan", |
302 | "subscription.features.noInterruptions": "No app delays & nagging to upgrade license", | 361 | "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", |
303 | "subscription.features.onpremise.mattermost": "Add on-premise/hosted services like Mattermost", | 362 | "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", |
304 | "subscription.features.proxy": "Proxy support for services", | 363 | "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
305 | "subscription.features.spellchecker": "Support for spellchecker", | ||
306 | "subscription.features.workspaces": "Organize your services in workspaces", | ||
307 | "subscription.includedFeatures": "Paid Ferdi Premium Supporter Account includes", | ||
308 | "subscription.paymentSessionError": "Could not initialize payment form", | ||
309 | "subscription.submit.label": "I want to support the development of Franz", | ||
310 | "subscription.type.free": "free", | ||
311 | "subscription.type.month": "month", | ||
312 | "subscription.type.year": "year", | ||
313 | "subscriptionPopup.buttonCancel": "Cancel", | 364 | "subscriptionPopup.buttonCancel": "Cancel", |
314 | "subscriptionPopup.buttonDone": "Done", | 365 | "subscriptionPopup.buttonDone": "Done", |
315 | "tabs.item.deleteService": "Delete service", | 366 | "tabs.item.deleteService": "Delete service", |
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index ebee8bcc5..3141a1512 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Actualizar", | 2 | "app.errorHandler.action" : "Actualizar", |
3 | "app.errorHandler.headline" : "Algo salió mal", | 3 | "app.errorHandler.headline" : "Algo salió mal", |
4 | "feature.announcements.changelog.headline" : "Cambios en Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Cambios en Franz {version}", |
5 | "feature.delayApp.action" : "Consigue una Licencia de Soporte de Franz", | 5 | "feature.delayApp.headline" : "Por favor compra una Licencia de Soporte de Franz para omitir la espera", |
6 | "feature.delayApp.headline" : "Por favor compra una Licencia de Soporte de Ferdi para omitir la espera", | 6 | "feature.delayApp.text" : "Franz continuará en {seconds} segundos.", |
7 | "feature.delayApp.text" : "Ferdi continuará en {seconds} segundos.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Consigue una Licencia de Soporte de Franz", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Mejora tu cuenta", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Enviar como correo", | 13 | "feature.shareFranz.action.email" : "Enviar como correo", |
9 | "feature.shareFranz.action.facebook" : "Compartir en Facebook", | 14 | "feature.shareFranz.action.facebook" : "Compartir en Facebook", |
10 | "feature.shareFranz.action.twitter" : "Compartir en Twitter", | 15 | "feature.shareFranz.action.twitter" : "Compartir en Twitter", |
11 | "feature.shareFranz.headline" : "¡Juntos mejoramos Franz!", | 16 | "feature.shareFranz.headline" : "¡Juntos mejoramos Franz!", |
12 | "feature.shareFranz.shareText.email" : "¡He añadido {count} servicios a Franz! Obtén la aplicación gratuita para WhatsApp, Messenger, Slack, Skype en www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "¡He añadido {count} servicios a Franz! Obtén la aplicación gratuita para WhatsApp, Messenger, Slack, Skype en www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "He agregado {count} servicios a Franz! Obtené la aplicación gratuita de WhatsApp, Messenger, Slack, Skype y co en www.meetfranz.com\/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "He agregado {count} servicios a Franz! Obtené la aplicación gratuita de WhatsApp, Messenger, Slack, Skype y co en www.meetfranz.com\/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Dile a tus amigos y colegas lo asombroso que es Ferdi y ayúdanos a correr la voz.", | 19 | "feature.shareFranz.text" : "Dile a tus amigos y colegas lo asombroso que es Franz y ayúdanos a correr la voz.", |
20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", | ||
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
15 | "global.api.unhealthy" : "No es posible conectarse a los servicios en lÃnea de Franz.", | 23 | "global.api.unhealthy" : "No es posible conectarse a los servicios en lÃnea de Franz.", |
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "No estás conectado a Internet", | 25 | "global.notConnectedToTheInternet" : "No estás conectado a Internet", |
17 | "global.spellchecker.useDefault" : "Utilizar estándar del sistema ({default})", | 26 | "global.spellchecker.useDefault" : "Utilizar estándar del sistema ({default})", |
18 | "global.spellchecking.autodetect" : "Detectar el idioma automáticamente", | 27 | "global.spellchecking.autodetect" : "Detectar el idioma automáticamente", |
19 | "global.spellchecking.autodetect.short" : "Automático", | 28 | "global.spellchecking.autodetect.short" : "Automático", |
20 | "global.spellchecking.language" : "Corrector de ortografÃa", | 29 | "global.spellchecking.language" : "Corrector de ortografÃa", |
21 | "import.headline" : "Importa tus servicios de Ferdi 4", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Servicios aún no admitidos en Ferdi 5", | 31 | "import.headline" : "Importa tus servicios de Franz 4", |
32 | "import.notSupportedHeadline" : "Servicios aún no admitidos en Franz 5", | ||
23 | "import.skip.label" : "Quiero agregar servicios manualmente", | 33 | "import.skip.label" : "Quiero agregar servicios manualmente", |
24 | "import.submit.label" : "Importar servicios", | 34 | "import.submit.label" : "Importar servicios", |
25 | "infobar.buttonChangelog" : "¿Qué hay de nuevo?", | 35 | "infobar.buttonChangelog" : "¿Qué hay de nuevo?", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Recargar servicios", | 37 | "infobar.buttonReloadServices" : "Recargar servicios", |
28 | "infobar.requiredRequestsFailed" : "No se han podido cargar los servicios ni la información de usuario", | 38 | "infobar.requiredRequestsFailed" : "No se han podido cargar los servicios ni la información de usuario", |
29 | "infobar.servicesUpdated" : "Tus servicios han sido actualizados.", | 39 | "infobar.servicesUpdated" : "Tus servicios han sido actualizados.", |
30 | "infobar.updateAvailable" : "Una nueva actualización de Ferdi está disponible", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Una nueva actualización de Franz está disponible", | ||
31 | "invite.email.label" : "Dirección de correo electrónico", | 42 | "invite.email.label" : "Dirección de correo electrónico", |
32 | "invite.headline.friends" : "Invita a 3 de tus amigos o compañeros", | 43 | "invite.headline.friends" : "Invita a 3 de tus amigos o compañeros", |
33 | "invite.name.label" : "Nombre", | 44 | "invite.name.label" : "Nombre", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "Tu sesión ha expirado, por favor inicia la sesión de nuevo.", | 54 | "login.serverLogout" : "Tu sesión ha expirado, por favor inicia la sesión de nuevo.", |
44 | "login.submit.label" : "Iniciar sesión", | 55 | "login.submit.label" : "Iniciar sesión", |
45 | "login.tokenExpired" : "Tu sesión ha expirado, por favor inicia sesión de nuevo.", | 56 | "login.tokenExpired" : "Tu sesión ha expirado, por favor inicia sesión de nuevo.", |
57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", | ||
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
46 | "menu.app.about" : "Acerca de Franz", | 59 | "menu.app.about" : "Acerca de Franz", |
47 | "menu.app.announcement" : "¿Qué hay de nuevo?", | 60 | "menu.app.announcement" : "¿Qué hay de nuevo?", |
48 | "menu.app.checkForUpdates" : "Comprobar actualizaciones", | 61 | "menu.app.checkForUpdates" : "Comprobar actualizaciones", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Archivo", | 81 | "menu.file" : "Archivo", |
69 | "menu.help" : "Ayuda", | 82 | "menu.help" : "Ayuda", |
70 | "menu.help.changelog" : "Registro de cambios", | 83 | "menu.help.changelog" : "Registro de cambios", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Conocer más", | 87 | "menu.help.learnMore" : "Conocer más", |
72 | "menu.help.privacy" : "Declaración de privacidad", | 88 | "menu.help.privacy" : "Declaración de privacidad", |
73 | "menu.help.support" : "Soporte", | 89 | "menu.help.support" : "Soporte", |
@@ -76,6 +92,8 @@ | |||
76 | "menu.services.activatePreviousService" : "Activa el servicio previo", | 92 | "menu.services.activatePreviousService" : "Activa el servicio previo", |
77 | "menu.services.addNewService" : "Añadir Nuevo Servicio...", | 93 | "menu.services.addNewService" : "Añadir Nuevo Servicio...", |
78 | "menu.services.setNextServiceActive" : "Activa el siguiente servicio", | 94 | "menu.services.setNextServiceActive" : "Activa el siguiente servicio", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Mostrar", | 97 | "menu.view" : "Mostrar", |
80 | "menu.view.enterFullScreen" : "Pasar a pantalla completa", | 98 | "menu.view.enterFullScreen" : "Pasar a pantalla completa", |
81 | "menu.view.exitFullScreen" : "Salir de Pantalla Completa", | 99 | "menu.view.exitFullScreen" : "Salir de Pantalla Completa", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "Activar las Herramientas para Desarrolladores", | 103 | "menu.view.toggleDevTools" : "Activar las Herramientas para Desarrolladores", |
86 | "menu.view.toggleFullScreen" : "Cambiar a Pantalla Completa", | 104 | "menu.view.toggleFullScreen" : "Cambiar a Pantalla Completa", |
87 | "menu.view.toggleServiceDevTools" : "Mostrar Herramientas de Servicios para Desarrolladores", | 105 | "menu.view.toggleServiceDevTools" : "Mostrar Herramientas de Servicios para Desarrolladores", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Ampliar", | 107 | "menu.view.zoomIn" : "Ampliar", |
89 | "menu.view.zoomOut" : "Reducir", | 108 | "menu.view.zoomOut" : "Reducir", |
90 | "menu.window" : "Ventana", | 109 | "menu.window" : "Ventana", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Enviar", | 122 | "password.submit.label" : "Enviar", |
104 | "password.successInfo" : "Por favor revisa tu correo electrónico", | 123 | "password.successInfo" : "Por favor revisa tu correo electrónico", |
105 | "premiumFeature.button.upgradeAccount" : "Mejora tu cuenta", | 124 | "premiumFeature.button.upgradeAccount" : "Mejora tu cuenta", |
106 | "pricing.headline" : "Apoya a Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "No quiero apoyar el desarrollo de Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Quiero apoyar el desarrollo de Franz", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Selecciona tu plan de soporte", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Espacios de trabajo", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Franz", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Recargar {name}", | 152 | "service.crashHandler.action" : "Recargar {name}", |
111 | "service.crashHandler.autoReload" : "Intentando recuperar automáticamente {name} en {seconds} segundos", | 153 | "service.crashHandler.autoReload" : "Intentando recuperar automáticamente {name} en {seconds} segundos", |
112 | "service.crashHandler.headline" : "¡Oh, no!", | 154 | "service.crashHandler.headline" : "¡Oh, no!", |
@@ -118,6 +160,11 @@ | |||
118 | "service.errorHandler.headline" : "¡Oh, no!", | 160 | "service.errorHandler.headline" : "¡Oh, no!", |
119 | "service.errorHandler.message" : "Error", | 161 | "service.errorHandler.message" : "Error", |
120 | "service.errorHandler.text" : "{name} ha fallado la carga", | 162 | "service.errorHandler.text" : "{name} ha fallado la carga", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Cargando", | 168 | "service.webviewLoader.loading" : "Cargando", |
122 | "services.getStarted" : "Primeros pasos", | 169 | "services.getStarted" : "Primeros pasos", |
123 | "services.welcome" : "Bienvenido a Franz", | 170 | "services.welcome" : "Bienvenido a Franz", |
@@ -135,28 +182,36 @@ | |||
135 | "settings.account.headlinePassword" : "Cambiar contraseña", | 182 | "settings.account.headlinePassword" : "Cambiar contraseña", |
136 | "settings.account.headlineProfile" : "Actualizar perfil", | 183 | "settings.account.headlineProfile" : "Actualizar perfil", |
137 | "settings.account.headlineSubscription" : "Tu suscripción", | 184 | "settings.account.headlineSubscription" : "Tu suscripción", |
138 | "settings.account.headlineUpgrade" : "Actualiza tu cuenta y apoya a Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Descargar", | 187 | "settings.account.invoiceDownload" : "Descargar", |
140 | "settings.account.manageSubscription.label" : "Administra tu suscripción", | 188 | "settings.account.manageSubscription.label" : "Administra tu suscripción", |
141 | "settings.account.successInfo" : "Tus cambios han sido guardados", | 189 | "settings.account.successInfo" : "Tus cambios han sido guardados", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Intentar de nuevo", | 193 | "settings.account.tryReloadServices" : "Intentar de nuevo", |
143 | "settings.account.tryReloadUserInfoRequest" : "Intenta de nuevo", | 194 | "settings.account.tryReloadUserInfoRequest" : "Intenta de nuevo", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "No se pudo cargar la información de usuario", | 196 | "settings.account.userInfoRequestFailed" : "No se pudo cargar la información de usuario", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Limpiar caché", | 198 | "settings.app.buttonClearAllCache" : "Limpiar caché", |
146 | "settings.app.buttonInstallUpdate" : "Reiniciar e instalar actualizaciones", | 199 | "settings.app.buttonInstallUpdate" : "Reiniciar e instalar actualizaciones", |
147 | "settings.app.buttonSearchForUpdate" : "Buscar actualizaciones", | 200 | "settings.app.buttonSearchForUpdate" : "Buscar actualizaciones", |
148 | "settings.app.cacheInfo" : "El cache de Ferdi actualmente usa {size} de espacio en disco.", | 201 | "settings.app.cacheInfo" : "El cache de Franz actualmente usa {size} de espacio en disco.", |
149 | "settings.app.currentVersion" : "Versión actual:", | 202 | "settings.app.currentVersion" : "Versión actual:", |
150 | "settings.app.form.autoLaunchInBackground" : "Abrir en segundo plano", | 203 | "settings.app.form.autoLaunchInBackground" : "Abrir en segundo plano", |
151 | "settings.app.form.autoLaunchOnStart" : "Iniciar Ferdi al iniciar", | 204 | "settings.app.form.autoLaunchOnStart" : "Iniciar Franz al iniciar", |
152 | "settings.app.form.beta" : "Incluir versiones beta", | 205 | "settings.app.form.beta" : "Incluir versiones beta", |
153 | "settings.app.form.darkMode" : "Únete al Lado Oscuro", | 206 | "settings.app.form.darkMode" : "Únete al Lado Oscuro", |
154 | "settings.app.form.enableGPUAcceleration" : "Habilitar aceleración de GPU", | 207 | "settings.app.form.enableGPUAcceleration" : "Habilitar aceleración de GPU", |
155 | "settings.app.form.enableSpellchecking" : "Activar corrección ortográfica", | 208 | "settings.app.form.enableSpellchecking" : "Activar corrección ortográfica", |
156 | "settings.app.form.enableSystemTray" : "Mostrar Ferdi en la bandeja del sistema", | 209 | "settings.app.form.enableSystemTray" : "Mostrar Franz en la bandeja del sistema", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Idioma", | 212 | "settings.app.form.language" : "Idioma", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimizar Ferdi a la bandeja del sistema", | 213 | "settings.app.form.minimizeToSystemTray" : "Minimizar Franz a la bandeja del sistema", |
159 | "settings.app.form.runInBackground" : "Mantener Ferdi en segundo plano al cerrar la ventana", | 214 | "settings.app.form.runInBackground" : "Mantener Franz en segundo plano al cerrar la ventana", |
160 | "settings.app.form.showDisabledServices" : "Mostrar pestañas de servicios desactivados", | 215 | "settings.app.form.showDisabledServices" : "Mostrar pestañas de servicios desactivados", |
161 | "settings.app.form.showMessagesBadgesWhenMuted" : "Mostrar la insignia de mensajes sin leer cuando las notificaciones están desactivadas", | 216 | "settings.app.form.showMessagesBadgesWhenMuted" : "Mostrar la insignia de mensajes sin leer cuando las notificaciones están desactivadas", |
162 | "settings.app.headline" : "Configuración", | 217 | "settings.app.headline" : "Configuración", |
@@ -168,7 +223,7 @@ | |||
168 | "settings.app.languageDisclaimer" : "Las traducciones oficiales son en inglés y alemán. Todos los demás idiomas son traducciones basadas en la comunidad.", | 223 | "settings.app.languageDisclaimer" : "Las traducciones oficiales son en inglés y alemán. Todos los demás idiomas son traducciones basadas en la comunidad.", |
169 | "settings.app.restartRequired" : "Los cambios requieren reiniciar", | 224 | "settings.app.restartRequired" : "Los cambios requieren reiniciar", |
170 | "settings.app.subheadlineCache" : "Caché", | 225 | "settings.app.subheadlineCache" : "Caché", |
171 | "settings.app.translationHelp" : "Ayúdanos a traducir Ferdi a tu idioma.", | 226 | "settings.app.translationHelp" : "Ayúdanos a traducir Franz a tu idioma.", |
172 | "settings.app.updateStatusAvailable" : "Actualización disponible, descargando...", | 227 | "settings.app.updateStatusAvailable" : "Actualización disponible, descargando...", |
173 | "settings.app.updateStatusSearching" : "Buscando actualizaciones", | 228 | "settings.app.updateStatusSearching" : "Buscando actualizaciones", |
174 | "settings.app.updateStatusUpToDate" : "Estás utilizando la última versión de Franz", | 229 | "settings.app.updateStatusUpToDate" : "Estás utilizando la última versión de Franz", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Tus servicios", | 237 | "settings.navigation.yourServices" : "Tus servicios", |
183 | "settings.navigation.yourWorkspaces" : "Tus espacios de trabajo", | 238 | "settings.navigation.yourWorkspaces" : "Tus espacios de trabajo", |
184 | "settings.recipes.all" : "Todos los servicios", | 239 | "settings.recipes.all" : "Todos los servicios", |
185 | "settings.recipes.dev" : "Desarrollo", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Servicios disponibles", | 247 | "settings.recipes.headline" : "Servicios disponibles", |
187 | "settings.recipes.missingService" : "¿Echas de menos algún servicio?", | 248 | "settings.recipes.missingService" : "¿Echas de menos algún servicio?", |
188 | "settings.recipes.mostPopular" : "Más populares", | 249 | "settings.recipes.mostPopular" : "Más populares", |
@@ -221,7 +282,7 @@ | |||
221 | "settings.service.form.proxy.isEnabled" : "Use Proxy", | 282 | "settings.service.form.proxy.isEnabled" : "Use Proxy", |
222 | "settings.service.form.proxy.password" : "Contraseña (opcional)", | 283 | "settings.service.form.proxy.password" : "Contraseña (opcional)", |
223 | "settings.service.form.proxy.port" : "Puerto", | 284 | "settings.service.form.proxy.port" : "Puerto", |
224 | "settings.service.form.proxy.restartInfo" : "Por favor reinicie Ferdi despues de modificar los ajustes proxy.", | 285 | "settings.service.form.proxy.restartInfo" : "Por favor reinicie Franz despues de modificar los ajustes proxy.", |
225 | "settings.service.form.proxy.user" : "Usuario (opcional)", | 286 | "settings.service.form.proxy.user" : "Usuario (opcional)", |
226 | "settings.service.form.saveButton" : "Guardar servicio", | 287 | "settings.service.form.saveButton" : "Guardar servicio", |
227 | "settings.service.form.tabHosted" : "Alojado", | 288 | "settings.service.form.tabHosted" : "Alojado", |
@@ -238,11 +299,11 @@ | |||
238 | "settings.services.tooltip.isMuted" : "Todos los sonidos están silenciados", | 299 | "settings.services.tooltip.isMuted" : "Todos los sonidos están silenciados", |
239 | "settings.services.tooltip.notificationsDisabled" : "Las notificaciones están desactivadas", | 300 | "settings.services.tooltip.notificationsDisabled" : "Las notificaciones están desactivadas", |
240 | "settings.services.updatedInfo" : "Tus cambios han sido guardados", | 301 | "settings.services.updatedInfo" : "Tus cambios han sido guardados", |
241 | "settings.team.contentHeadline" : "Ferdi for Teams", | 302 | "settings.team.contentHeadline" : "Franz para equipos", |
242 | "settings.team.copy" : "Ferdi for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 303 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", |
243 | "settings.team.headline" : "Equipo", | 304 | "settings.team.headline" : "Equipo", |
244 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 305 | "settings.team.intro" : "¿Usted y su equipo usan a Franz? Ahora puede administrar las suscripciones Premium para tantos colegas, amigos o familiares como desee, todo desde una misma cuenta.", |
245 | "settings.team.manageAction" : "Manage your Team on meetfranz.com", | 306 | "settings.team.manageAction" : "Gestione su equipo en meetfranz.com", |
246 | "settings.team.upgradeAction" : "Actualiza tu cuenta", | 307 | "settings.team.upgradeAction" : "Actualiza tu cuenta", |
247 | "settings.user.form.accountType.company" : "Empresa", | 308 | "settings.user.form.accountType.company" : "Empresa", |
248 | "settings.user.form.accountType.individual" : "Individual", | 309 | "settings.user.form.accountType.individual" : "Individual", |
@@ -254,52 +315,45 @@ | |||
254 | "settings.user.form.lastname" : "Apellido", | 315 | "settings.user.form.lastname" : "Apellido", |
255 | "settings.user.form.newPassword" : "Nueva contraseña", | 316 | "settings.user.form.newPassword" : "Nueva contraseña", |
256 | "settings.workspace.add.form.name" : "Nombre", | 317 | "settings.workspace.add.form.name" : "Nombre", |
257 | "settings.workspace.add.form.submitButton" : "Create workspace", | 318 | "settings.workspace.add.form.submitButton" : "Crear un sitio de trabajo", |
258 | "settings.workspace.form.buttonDelete" : "Eliminar espacio de trabajo", | 319 | "settings.workspace.form.buttonDelete" : "Eliminar espacio de trabajo", |
259 | "settings.workspace.form.buttonSave" : "Guardar espacio de trabajo", | 320 | "settings.workspace.form.buttonSave" : "Guardar espacio de trabajo", |
260 | "settings.workspace.form.name" : "Nombre", | 321 | "settings.workspace.form.name" : "Nombre", |
261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Servicios en este espacio de trabajo", | 322 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Servicios en este espacio de trabajo", |
262 | "settings.workspace.form.yourWorkspaces" : "Tus espacios de trabajo", | 323 | "settings.workspace.form.yourWorkspaces" : "Tus espacios de trabajo", |
263 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 324 | "settings.workspaces.deletedInfo" : "Se ha eliminado el sitio de trabajo", |
264 | "settings.workspaces.headline" : "Tus espacios de trabajo", | 325 | "settings.workspaces.headline" : "Tus espacios de trabajo", |
265 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 326 | "settings.workspaces.noWorkspacesAdded" : "Aún no ha añadido ningún sitio de trabajo.", |
266 | "settings.workspaces.tryReloadWorkspaces" : "Inténtalo de nuevo", | 327 | "settings.workspaces.tryReloadWorkspaces" : "Inténtalo de nuevo", |
267 | "settings.workspaces.updatedInfo" : "Tus cambios han sido guardados", | 328 | "settings.workspaces.updatedInfo" : "Tus cambios han sido guardados", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Menos es más: Presentación de Ferdi Workspaces", | 329 | "settings.workspaces.workspaceFeatureHeadline" : "Menos es más: Presentación de Franz Workspaces", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Añadir nuevo servicio", | 332 | "sidebar.addNewService" : "Añadir nuevo servicio", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Cerrar cajón de espacio de trabajo", | 334 | "sidebar.closeWorkspaceDrawer" : "Cerrar cajón de espacio de trabajo", |
273 | "sidebar.muteApp" : "Desactivar notificaciones y sonido", | 335 | "sidebar.muteApp" : "Desactivar notificaciones y sonido", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "Configuración", | 338 | "sidebar.settings" : "Configuración", |
276 | "sidebar.unmuteApp" : "Activar notificaciones y sonido", | 339 | "sidebar.unmuteApp" : "Activar notificaciones y sonido", |
277 | "signup.company.label" : "CompañÃa", | ||
278 | "signup.email.label" : "Dirección de correo electrónico", | 340 | "signup.email.label" : "Dirección de correo electrónico", |
279 | "signup.emailDuplicate" : "Ya existe un usuario con esa dirección de correo electrónico", | 341 | "signup.emailDuplicate" : "Ya existe un usuario con esa dirección de correo electrónico", |
280 | "signup.firstname.label" : "Nombre", | 342 | "signup.firstname.label" : "Nombre", |
281 | "signup.headline" : "Registrarse", | 343 | "signup.headline" : "Registrarse", |
282 | "signup.lastname.label" : "Apellido", | 344 | "signup.lastname.label" : "Apellido", |
283 | "signup.legal.info" : "Al crear una cuenta en Ferdi usted acepta", | 345 | "signup.legal.info" : "Al crear una cuenta en Franz usted acepta", |
284 | "signup.legal.privacy" : "Declaración de privacidad", | 346 | "signup.legal.privacy" : "Declaración de privacidad", |
285 | "signup.legal.terms" : "Términos de servicio", | 347 | "signup.legal.terms" : "Términos de servicio", |
286 | "signup.link.login" : "Ya tienes una cuenta, ¿Iniciar sesión?", | 348 | "signup.link.login" : "Ya tienes una cuenta, ¿Iniciar sesión?", |
287 | "signup.password.label" : "Contraseña", | 349 | "signup.password.label" : "Contraseña", |
288 | "signup.submit.label" : "Crear cuenta", | 350 | "signup.submit.label" : "Crear cuenta", |
289 | "subscription.euTaxInfo" : "Residentes de la UE: pueden aplicarse impuestos locales", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "¡Sin publicidad, para siempre!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "próximamente", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "Sin retrasos en la app ni molestas actualizaciones de licencias", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Agregar servicios de almacenamiento como Mattermost", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Soporte Proxy para servicios", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Soporte para corrector de ortografÃa", | ||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | ||
297 | "subscription.includedFeatures" : "La Cuenta pagada de Colaborador Premium de Ferdi incluye", | ||
298 | "subscription.paymentSessionError" : "No se pudo inicializar el formulario de pago", | ||
299 | "subscription.submit.label" : "Quiero apoyar el desarrollo de Franz", | ||
300 | "subscription.type.free" : "gratis", | ||
301 | "subscription.type.month" : "mes", | ||
302 | "subscription.type.year" : "año", | ||
303 | "subscriptionPopup.buttonCancel" : "Cancelar", | 357 | "subscriptionPopup.buttonCancel" : "Cancelar", |
304 | "subscriptionPopup.buttonDone" : "Listo", | 358 | "subscriptionPopup.buttonDone" : "Listo", |
305 | "tabs.item.deleteService" : "Borrar servicio", | 359 | "tabs.item.deleteService" : "Borrar servicio", |
@@ -326,7 +380,7 @@ | |||
326 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 380 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", |
327 | "workspaceDrawer.proFeatureBadge" : "Premium feature", | 381 | "workspaceDrawer.proFeatureBadge" : "Premium feature", |
328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", | 382 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", |
329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>", | 383 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>", |
330 | "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", | 384 | "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", |
331 | "workspaces.switchingIndicator.switchingTo" : "Switching to" | 385 | "workspaces.switchingIndicator.switchingTo" : "Switching to" |
332 | } | 386 | } |
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 608eee52a..eb8eda18e 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recharger", | 2 | "app.errorHandler.action" : "Actualiser", |
3 | "app.errorHandler.headline" : "Une erreur s'est produite", | 3 | "app.errorHandler.headline" : "On dirait que quelque chose ne va pas", |
4 | "feature.announcements.changelog.headline" : "Changements dans Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Les nouveaux changements dans Franz {version}", |
5 | "feature.delayApp.action" : "Obtenez une licence de Supporter Franz", | 5 | "feature.delayApp.headline" : "Achetez la licence Franz pour ne plus avoir de temps d'attente", |
6 | "feature.delayApp.headline" : "Achetez une licence de Supporter Ferdi pour ne plus avoir de temps d'attente", | 6 | "feature.delayApp.text" : "Franz s'ouvrira dans {seconds} secondes.", |
7 | "feature.delayApp.text" : "Ferdi reprendra dans {seconds} secondes.", | 7 | "feature.delayApp.trial.action" : "Oui, je veux les 14 jours d'essai gratuits de Franz Professionnel", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Acheter une license Ferdi", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Augmenter le niveau de mon compte", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Envoyer par mail", | 13 | "feature.shareFranz.action.email" : "Envoyer par mail", |
9 | "feature.shareFranz.action.facebook" : "Partager sur Facebook", | 14 | "feature.shareFranz.action.facebook" : "Partager sur Facebook", |
10 | "feature.shareFranz.action.twitter" : "Partager sur Twitter", | 15 | "feature.shareFranz.action.twitter" : "Partager sur Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi est meilleur quand on est tous ensemble !", | 16 | "feature.shareFranz.headline" : "Franz est meilleur quand on est ensemble !", |
12 | "feature.shareFranz.shareText.email" : "J'ai ajouté {count} services à Ferdi ! Télécharger l'appli gratuite pour WhatsApp, Messenger, Skype et cie sur www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "J'ai ajouté {count} services sur Franz ! Télécharger l'appli gratuite pour WhatsApp, Messenger, Skype et autres sur www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "J'ai ajouté {count} services à Franz! Télécharge l'application gratuite pour WhatsApp, Messenger, Slack, Skype et compagnie sur www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "J'ai ajouté {count} services à Franz! Télécharge l'application gratuite pour WhatsApp, Messenger, Slack, Skype et autres sur www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Dites à vos amis et collègues a quel point Ferdi est super et aidez nous à faire passer le mot.", | 19 | "feature.shareFranz.text" : "Dites à vos amis et collègues a quel point Franz est super et aidez nous à faire passer le mot.", |
15 | "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Ferdi", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté à Internet.", | 25 | "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté à Internet.", |
17 | "global.spellchecker.useDefault" : "Par défaut ({default})", | 26 | "global.spellchecker.useDefault" : "Par défaut ({default})", |
18 | "global.spellchecking.autodetect" : "Detecter automatiquement la langue", | 27 | "global.spellchecking.autodetect" : "Detecter automatiquement la langue", |
19 | "global.spellchecking.autodetect.short" : "Automatiquement", | 28 | "global.spellchecking.autodetect.short" : "Automatiquement", |
20 | "global.spellchecking.language" : "Langue de la vérification orthographique", | 29 | "global.spellchecking.language" : "Langue de la vérification orthographique", |
30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", | ||
21 | "import.headline" : "Importez vos services depuis la version 4 de Franz.", | 31 | "import.headline" : "Importez vos services depuis la version 4 de Franz.", |
22 | "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par la version 5 de Franz", | 32 | "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par la version 5 de Ferdi", |
23 | "import.skip.label" : "Je veux ajouter des services manuellement", | 33 | "import.skip.label" : "Je veux ajouter des services manuellement", |
24 | "import.submit.label" : "Importer des services", | 34 | "import.submit.label" : "Importer des services", |
25 | "infobar.buttonChangelog" : "Nouveautés", | 35 | "infobar.buttonChangelog" : "Nouveautés", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Recharger les services", | 37 | "infobar.buttonReloadServices" : "Recharger les services", |
28 | "infobar.requiredRequestsFailed" : "Impossible d'accéder aux services et informations de l'utilisateur", | 38 | "infobar.requiredRequestsFailed" : "Impossible d'accéder aux services et informations de l'utilisateur", |
29 | "infobar.servicesUpdated" : "Vos services ont été mis à jour.", | 39 | "infobar.servicesUpdated" : "Vos services ont été mis à jour.", |
30 | "infobar.updateAvailable" : "Une nouvelle mise à jour de Ferdi est disponible.", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Une nouvelle mise à jour de Franz est disponible.", | ||
31 | "invite.email.label" : "Adresse Email", | 42 | "invite.email.label" : "Adresse Email", |
32 | "invite.headline.friends" : "Invitez 3 amis ou collègues", | 43 | "invite.headline.friends" : "Invitez 3 amis ou collègues", |
33 | "invite.name.label" : "Nom", | 44 | "invite.name.label" : "Nom", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "Votre session a expiré. Reconnectez-vous s'il vous plaît.", | 54 | "login.serverLogout" : "Votre session a expiré. Reconnectez-vous s'il vous plaît.", |
44 | "login.submit.label" : "Se connecter", | 55 | "login.submit.label" : "Se connecter", |
45 | "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.", | 56 | "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.", |
46 | "menu.app.about" : "À propos de Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
59 | "menu.app.about" : "À propos de Ferdi", | ||
47 | "menu.app.announcement" : "Quoi de neuf ? ", | 60 | "menu.app.announcement" : "Quoi de neuf ? ", |
48 | "menu.app.checkForUpdates" : "Vérifier les mises à jour", | 61 | "menu.app.checkForUpdates" : "Vérifier les mises à jour", |
49 | "menu.app.hide" : "Masquer", | 62 | "menu.app.hide" : "Masquer", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Fichier", | 81 | "menu.file" : "Fichier", |
69 | "menu.help" : "Aide", | 82 | "menu.help" : "Aide", |
70 | "menu.help.changelog" : "Liste des modifications", | 83 | "menu.help.changelog" : "Liste des modifications", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "En savoir plus", | 87 | "menu.help.learnMore" : "En savoir plus", |
72 | "menu.help.privacy" : "Déclaration de confidentialité", | 88 | "menu.help.privacy" : "Déclaration de confidentialité", |
73 | "menu.help.support" : "Assistance", | 89 | "menu.help.support" : "Assistance", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Activer le service précédent", | 92 | "menu.services.activatePreviousService" : "Activer le service précédent", |
77 | "menu.services.addNewService" : "Ajouter un nouveau service...", | 93 | "menu.services.addNewService" : "Ajouter un nouveau service...", |
78 | "menu.services.setNextServiceActive" : "Activer le service suivant", | 94 | "menu.services.setNextServiceActive" : "Activer le service suivant", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Aperçu", | 97 | "menu.view" : "Aperçu", |
80 | "menu.view.enterFullScreen" : "Entrer en mode plein écran", | 98 | "menu.view.enterFullScreen" : "Entrer en mode plein écran", |
81 | "menu.view.exitFullScreen" : "Sortir du mode plein écran", | 99 | "menu.view.exitFullScreen" : "Sortir du mode plein écran", |
82 | "menu.view.reloadFranz" : "Recharger Franz", | 100 | "menu.view.reloadFranz" : "Recharger Ferdi", |
83 | "menu.view.reloadService" : "Redémarrer le service", | 101 | "menu.view.reloadService" : "Redémarrer le service", |
84 | "menu.view.resetZoom" : "Taille actuelle", | 102 | "menu.view.resetZoom" : "Taille actuelle", |
85 | "menu.view.toggleDevTools" : "Activer les outils développeur", | 103 | "menu.view.toggleDevTools" : "Activer les outils développeur", |
86 | "menu.view.toggleFullScreen" : "Activer \/ désactiver le mode plein écran", | 104 | "menu.view.toggleFullScreen" : "Activer \/ désactiver le mode plein écran", |
87 | "menu.view.toggleServiceDevTools" : "Activer les outils de développement WebKit", | 105 | "menu.view.toggleServiceDevTools" : "Activer les outils de développement WebKit", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Zoom Avant", | 107 | "menu.view.zoomIn" : "Zoom Avant", |
89 | "menu.view.zoomOut" : "Zoom Arrière", | 108 | "menu.view.zoomOut" : "Zoom Arrière", |
90 | "menu.window" : "Fenêtre", | 109 | "menu.window" : "Fenêtre", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Soumettre", | 122 | "password.submit.label" : "Soumettre", |
104 | "password.successInfo" : "Merci de consulter vos emails", | 123 | "password.successInfo" : "Merci de consulter vos emails", |
105 | "premiumFeature.button.upgradeAccount" : "Augmenter le niveau de mon compte", | 124 | "premiumFeature.button.upgradeAccount" : "Augmenter le niveau de mon compte", |
106 | "pricing.headline" : "Soutenez Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Je ne veux pas soutenir le développement de Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Je veux soutenir le développement de Franz", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Sélectionnez votre plan de soutien", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Espace de travail", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Recharger {name}", | 152 | "service.crashHandler.action" : "Recharger {name}", |
111 | "service.crashHandler.autoReload" : "Tentative de restauration automatique de {name} dans {seconds} secondes", | 153 | "service.crashHandler.autoReload" : "Tentative de restauration automatique de {name} dans {seconds} secondes", |
112 | "service.crashHandler.headline" : "Oh non !", | 154 | "service.crashHandler.headline" : "Oh non !", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "Oh non !", | 160 | "service.errorHandler.headline" : "Oh non !", |
119 | "service.errorHandler.message" : "Erreur", | 161 | "service.errorHandler.message" : "Erreur", |
120 | "service.errorHandler.text" : "Le chargement de {name} a échoué.", | 162 | "service.errorHandler.text" : "Le chargement de {name} a échoué.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Chargement (c'est l'heure du café...)", | 168 | "service.webviewLoader.loading" : "Chargement (c'est l'heure du café...)", |
122 | "services.getStarted" : "Commencer", | 169 | "services.getStarted" : "Commencer", |
123 | "services.welcome" : "Bienvenue dans Franz", | 170 | "services.welcome" : "Bienvenue dans Ferdi", |
124 | "settings.account.account.editButton" : "Modifier le compte", | 171 | "settings.account.account.editButton" : "Modifier le compte", |
125 | "settings.account.accountType.basic" : "Compte de base", | 172 | "settings.account.accountType.basic" : "Compte de base", |
126 | "settings.account.accountType.premium" : "Compte supporteur premium", | 173 | "settings.account.accountType.premium" : "Compte supporteur premium", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Changer le mot de passe", | 182 | "settings.account.headlinePassword" : "Changer le mot de passe", |
136 | "settings.account.headlineProfile" : "Mettre à jour le profil", | 183 | "settings.account.headlineProfile" : "Mettre à jour le profil", |
137 | "settings.account.headlineSubscription" : "Votre abonnement", | 184 | "settings.account.headlineSubscription" : "Votre abonnement", |
138 | "settings.account.headlineUpgrade" : "Améliorez votre compte et soutenez Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Télécharger", | 187 | "settings.account.invoiceDownload" : "Télécharger", |
140 | "settings.account.manageSubscription.label" : "Gérer votre abonnement", | 188 | "settings.account.manageSubscription.label" : "Gérer votre abonnement", |
141 | "settings.account.successInfo" : "Vos modifications ont été enregistrées", | 189 | "settings.account.successInfo" : "Vos modifications ont été enregistrées", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Réessayer", | 193 | "settings.account.tryReloadServices" : "Réessayer", |
143 | "settings.account.tryReloadUserInfoRequest" : "Réessayer", | 194 | "settings.account.tryReloadUserInfoRequest" : "Réessayer", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Impossible de charger les informations de l'utilisateur", | 196 | "settings.account.userInfoRequestFailed" : "Impossible de charger les informations de l'utilisateur", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Vider le cache", | 198 | "settings.app.buttonClearAllCache" : "Vider le cache", |
146 | "settings.app.buttonInstallUpdate" : "Redémarrer et installer la mise à jour", | 199 | "settings.app.buttonInstallUpdate" : "Redémarrer et installer la mise à jour", |
147 | "settings.app.buttonSearchForUpdate" : "Vérifier les mises à jour", | 200 | "settings.app.buttonSearchForUpdate" : "Vérifier les mises à jour", |
@@ -150,10 +203,12 @@ | |||
150 | "settings.app.form.autoLaunchInBackground" : "Ouvrir en arrière-plan", | 203 | "settings.app.form.autoLaunchInBackground" : "Ouvrir en arrière-plan", |
151 | "settings.app.form.autoLaunchOnStart" : "Lancer Ferdi au démarrage", | 204 | "settings.app.form.autoLaunchOnStart" : "Lancer Ferdi au démarrage", |
152 | "settings.app.form.beta" : "Accepter les versions bêta", | 205 | "settings.app.form.beta" : "Accepter les versions bêta", |
153 | "settings.app.form.darkMode" : "Rejoins le côté obscur", | 206 | "settings.app.form.darkMode" : "Activer le thème sombre", |
154 | "settings.app.form.enableGPUAcceleration" : "Activer l'accélération GPU", | 207 | "settings.app.form.enableGPUAcceleration" : "Activer l'accélération GPU", |
155 | "settings.app.form.enableSpellchecking" : "Activer la vérification orthographique", | 208 | "settings.app.form.enableSpellchecking" : "Activer la vérification orthographique", |
156 | "settings.app.form.enableSystemTray" : "Afficher Ferdi dans la barre d'état système", | 209 | "settings.app.form.enableSystemTray" : "Afficher Franz dans la barre d'état système", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Langue", | 212 | "settings.app.form.language" : "Langue", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimiser Ferdi dans la zone de notification", | 213 | "settings.app.form.minimizeToSystemTray" : "Minimiser Ferdi dans la zone de notification", |
159 | "settings.app.form.runInBackground" : "Garder Ferdi ouvert en arrière-plan à la fermeture de la fenêtre", | 214 | "settings.app.form.runInBackground" : "Garder Ferdi ouvert en arrière-plan à la fermeture de la fenêtre", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Aidez-nous à traduire Ferdi dans votre langue.", | 226 | "settings.app.translationHelp" : "Aidez-nous à traduire Ferdi dans votre langue.", |
172 | "settings.app.updateStatusAvailable" : "Mise à jour disponible, téléchargement en cours...", | 227 | "settings.app.updateStatusAvailable" : "Mise à jour disponible, téléchargement en cours...", |
173 | "settings.app.updateStatusSearching" : "Recherche d'une mise à jour", | 228 | "settings.app.updateStatusSearching" : "Recherche d'une mise à jour", |
174 | "settings.app.updateStatusUpToDate" : "Vous utilisez la dernière version de Franz", | 229 | "settings.app.updateStatusUpToDate" : "Vous utilisez la dernière version de Ferdi", |
175 | "settings.invite.headline" : "Invite des amis", | 230 | "settings.invite.headline" : "Invite des amis", |
176 | "settings.navigation.account" : "Compte", | 231 | "settings.navigation.account" : "Compte", |
177 | "settings.navigation.availableServices" : "Services disponibles", | 232 | "settings.navigation.availableServices" : "Services disponibles", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Vos services", | 237 | "settings.navigation.yourServices" : "Vos services", |
183 | "settings.navigation.yourWorkspaces" : "Tes espaces de travail", | 238 | "settings.navigation.yourWorkspaces" : "Tes espaces de travail", |
184 | "settings.recipes.all" : "Tous les services", | 239 | "settings.recipes.all" : "Tous les services", |
185 | "settings.recipes.dev" : "Développement", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Services disponibles", | 247 | "settings.recipes.headline" : "Services disponibles", |
187 | "settings.recipes.missingService" : "Un service est manquant ?", | 248 | "settings.recipes.missingService" : "Un service est manquant ?", |
188 | "settings.recipes.mostPopular" : "Les plus populaires", | 249 | "settings.recipes.mostPopular" : "Les plus populaires", |
@@ -265,16 +326,17 @@ | |||
265 | "settings.workspaces.noWorkspacesAdded" : "Vous n'avez pas encore ajouté d'espace de travail.", | 326 | "settings.workspaces.noWorkspacesAdded" : "Vous n'avez pas encore ajouté d'espace de travail.", |
266 | "settings.workspaces.tryReloadWorkspaces" : "Réessayer", | 327 | "settings.workspaces.tryReloadWorkspaces" : "Réessayer", |
267 | "settings.workspaces.updatedInfo" : "Vos modifications ont été enregistrées", | 328 | "settings.workspaces.updatedInfo" : "Vos modifications ont été enregistrées", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Présentation des Espaces de travail de Franz", | 329 | "settings.workspaces.workspaceFeatureHeadline" : "Présentation des Espaces de travail de Ferdi", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Les Espaces de travail de Ferdi vous permettant de rester concentré sur ce qui est important. Créez différents groupes de services et naviguez facilement entre eux à n'importe quel moment. Vous décidez de quels services vous avez besoin, où et quand, ainsi nous pouvons vous aider à rester concentré sur votre travail - ou à le quitter dès que vous le souhaitez.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Les Espaces de travail de Ferdi vous permettant de rester concentré sur ce qui est important. Créez différents groupes de services et naviguez facilement entre eux à n'importe quel moment. Vous décidez de quels services vous avez besoin, où et quand, ainsi nous pouvons vous aider à rester concentré sur votre travail - ou à le quitter dès que vous le souhaitez.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Impossible de charger vos espaces de travail", | 331 | "settings.workspaces.workspacesRequestFailed" : "Impossible de charger vos espaces de travail", |
271 | "sidebar.addNewService" : "Ajouter un nouveau service", | 332 | "sidebar.addNewService" : "Ajouter un nouveau service", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Fermer l'espace de travail", | 334 | "sidebar.closeWorkspaceDrawer" : "Fermer l'espace de travail", |
273 | "sidebar.muteApp" : "Désactiver les notifications et les sons", | 335 | "sidebar.muteApp" : "Désactiver les notifications et les sons", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Ouvrir l'espace de travail", | 337 | "sidebar.openWorkspaceDrawer" : "Ouvrir l'espace de travail", |
275 | "sidebar.settings" : "Paramètres", | 338 | "sidebar.settings" : "Paramètres", |
276 | "sidebar.unmuteApp" : "Activer les notifications et les sons", | 339 | "sidebar.unmuteApp" : "Activer les notifications et les sons", |
277 | "signup.company.label" : "Entreprise", | ||
278 | "signup.email.label" : "Adresse email", | 340 | "signup.email.label" : "Adresse email", |
279 | "signup.emailDuplicate" : "Cette adresse email est déjà utilisée", | 341 | "signup.emailDuplicate" : "Cette adresse email est déjà utilisée", |
280 | "signup.firstname.label" : "Prénom", | 342 | "signup.firstname.label" : "Prénom", |
@@ -296,10 +358,16 @@ | |||
296 | "subscription.features.workspaces" : "Organisez vos services en espaces de travail", | 358 | "subscription.features.workspaces" : "Organisez vos services en espaces de travail", |
297 | "subscription.includedFeatures" : "Le compte payant Supporter Premium Ferdi inclut", | 359 | "subscription.includedFeatures" : "Le compte payant Supporter Premium Ferdi inclut", |
298 | "subscription.paymentSessionError" : "Initialisation du paiement impossible", | 360 | "subscription.paymentSessionError" : "Initialisation du paiement impossible", |
299 | "subscription.submit.label" : "Je souhaite aider au développement de Franz", | 361 | "subscription.submit.label" : "Je souhaite aider au développement de Ferdi", |
300 | "subscription.type.free" : "gratuit", | 362 | "subscription.type.free" : "gratuit", |
301 | "subscription.type.month" : "mois", | 363 | "subscription.type.month" : "mois", |
302 | "subscription.type.year" : "année", | 364 | "subscription.type.year" : "année", |
365 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", | ||
366 | "subscription.cta.allOptions" : "See all options", | ||
367 | "subscription.cta.choosePlan" : "Choose your plan", | ||
368 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", | ||
369 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", | ||
370 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | ||
303 | "subscriptionPopup.buttonCancel" : "Annuler", | 371 | "subscriptionPopup.buttonCancel" : "Annuler", |
304 | "subscriptionPopup.buttonDone" : "Terminé", | 372 | "subscriptionPopup.buttonDone" : "Terminé", |
305 | "tabs.item.deleteService" : "Supprimer le service", | 373 | "tabs.item.deleteService" : "Supprimer le service", |
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index 75c4c268a..503fe6e08 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Athlódáil", | 2 | "app.errorHandler.action" : "Athlódáil", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Something went wrong", |
4 | "feature.announcements.changelog.headline" : "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", |
5 | "feature.delayApp.action" : "Get a Ferdi Supporter License", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.headline" : "Please purchase a Ferdi Supporter License to skip waiting", | 6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", |
7 | "feature.delayApp.text" : "Ferdi will continue in {seconds} seconds.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Get a Franz Supporter License", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Upgrade account", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Send as email", | 13 | "feature.shareFranz.action.email" : "Send as email", |
9 | "feature.shareFranz.action.facebook" : "Share on Facebook", | 14 | "feature.shareFranz.action.facebook" : "Share on Facebook", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 15 | "feature.shareFranz.action.twitter" : "Share on Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi is better together!", | 16 | "feature.shareFranz.headline" : "Ferdi is better together!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
15 | "global.api.unhealthy" : "Nà féidir nascadh le seirbhÃsà Ferdi ar lÃne", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Nà féidir nascadh le seirbhÃsà Franz ar lÃne", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "NÃl tú nasctha leis an IdirlÃon.", | 25 | "global.notConnectedToTheInternet" : "NÃl tú nasctha leis an IdirlÃon.", |
17 | "global.spellchecker.useDefault" : "Use System Default ({default})", | 26 | "global.spellchecker.useDefault" : "Use System Default ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 27 | "global.spellchecking.autodetect" : "Detect language automatically", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 28 | "global.spellchecking.autodetect.short" : "Automatic", |
20 | "global.spellchecking.language" : "Spell checking language", | 29 | "global.spellchecking.language" : "Spell checking language", |
21 | "import.headline" : "Iompórtáil do sheirbhÃsà Ferdi 4", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "NÃl na seirbhÃsà seo taca ag Ferdi 5 go fóill", | 31 | "import.headline" : "Iompórtáil do sheirbhÃsà Franz 4", |
32 | "import.notSupportedHeadline" : "NÃl na seirbhÃsà seo taca ag Franz 5 go fóill", | ||
23 | "import.skip.label" : "Ba mhaith liom seirbhÃsà a chur de láimh", | 33 | "import.skip.label" : "Ba mhaith liom seirbhÃsà a chur de láimh", |
24 | "import.submit.label" : "Iompórtáil seirbhÃsÃ", | 34 | "import.submit.label" : "Iompórtáil seirbhÃsÃ", |
25 | "infobar.buttonChangelog" : "Cad atá nua?", | 35 | "infobar.buttonChangelog" : "Cad atá nua?", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Athlódáil seirbhÃsÃ", | 37 | "infobar.buttonReloadServices" : "Athlódáil seirbhÃsÃ", |
28 | "infobar.requiredRequestsFailed" : "Nà féidir seirbhÃsà agus eolas úsáideora a lódáil", | 38 | "infobar.requiredRequestsFailed" : "Nà féidir seirbhÃsà agus eolas úsáideora a lódáil", |
29 | "infobar.servicesUpdated" : "NuashonraÃodh do sheirbhÃsÃ.", | 39 | "infobar.servicesUpdated" : "NuashonraÃodh do sheirbhÃsÃ.", |
30 | "infobar.updateAvailable" : "Tá nuashonrú nua do Ferdi ar fáil.", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Tá nuashonrú nua do Franz ar fáil.", | ||
31 | "invite.email.label" : "Seoladh rÃomhphoist", | 42 | "invite.email.label" : "Seoladh rÃomhphoist", |
32 | "invite.headline.friends" : "Tabhair cuireadh do thriúr chara nó chomhghleacaÃ", | 43 | "invite.headline.friends" : "Tabhair cuireadh do thriúr chara nó chomhghleacaÃ", |
33 | "invite.name.label" : "Ainm", | 44 | "invite.name.label" : "Ainm", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "D'éag do sheisiún, logáil isteach arÃs le do thoil.", | 54 | "login.serverLogout" : "D'éag do sheisiún, logáil isteach arÃs le do thoil.", |
44 | "login.submit.label" : "Logáil isteach", | 55 | "login.submit.label" : "Logáil isteach", |
45 | "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arÃs le do thoil.", | 56 | "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arÃs le do thoil.", |
46 | "menu.app.about" : "Faoi Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
59 | "menu.app.about" : "Faoi Ferdi", | ||
47 | "menu.app.announcement" : "What's new?", | 60 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Cuardaigh le nuashonruithe", | 61 | "menu.app.checkForUpdates" : "Cuardaigh le nuashonruithe", |
49 | "menu.app.hide" : "Cuir Ferdi i bhfolach", | 62 | "menu.app.hide" : "Cuir Ferdi i bhfolach", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Comhad", | 81 | "menu.file" : "Comhad", |
69 | "menu.help" : "Cabhair", | 82 | "menu.help" : "Cabhair", |
70 | "menu.help.changelog" : "Athruithe", | 83 | "menu.help.changelog" : "Athruithe", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Tuilleadh eolais", | 87 | "menu.help.learnMore" : "Tuilleadh eolais", |
72 | "menu.help.privacy" : "Ráiteas phrÃobháideachais", | 88 | "menu.help.privacy" : "Ráiteas phrÃobháideachais", |
73 | "menu.help.support" : "TacaÃocht", | 89 | "menu.help.support" : "TacaÃocht", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Activate previous service", | 92 | "menu.services.activatePreviousService" : "Activate previous service", |
77 | "menu.services.addNewService" : "Cuir seirbhÃs nua leis", | 93 | "menu.services.addNewService" : "Cuir seirbhÃs nua leis", |
78 | "menu.services.setNextServiceActive" : "Activate next service", | 94 | "menu.services.setNextServiceActive" : "Activate next service", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Amharc", | 97 | "menu.view" : "Amharc", |
80 | "menu.view.enterFullScreen" : "Cuir isteach mód lánscáileáin", | 98 | "menu.view.enterFullScreen" : "Cuir isteach mód lánscáileáin", |
81 | "menu.view.exitFullScreen" : "Scoir mód lánscáileáin", | 99 | "menu.view.exitFullScreen" : "Scoir mód lánscáileáin", |
82 | "menu.view.reloadFranz" : "Athlódáil Franz", | 100 | "menu.view.reloadFranz" : "Athlódáil Ferdi", |
83 | "menu.view.reloadService" : "Athlódáil seirbhÃs", | 101 | "menu.view.reloadService" : "Athlódáil seirbhÃs", |
84 | "menu.view.resetZoom" : "FÃormhéid", | 102 | "menu.view.resetZoom" : "FÃormhéid", |
85 | "menu.view.toggleDevTools" : "Scoránaigh uirlis forbróra", | 103 | "menu.view.toggleDevTools" : "Scoránaigh uirlis forbróra", |
86 | "menu.view.toggleFullScreen" : "Scoránaigh mód lánscáileáin", | 104 | "menu.view.toggleFullScreen" : "Scoránaigh mód lánscáileáin", |
87 | "menu.view.toggleServiceDevTools" : "Scoránaigh uirlis forbróra seirbhÃse", | 105 | "menu.view.toggleServiceDevTools" : "Scoránaigh uirlis forbróra seirbhÃse", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Zúmáil isteach", | 107 | "menu.view.zoomIn" : "Zúmáil isteach", |
89 | "menu.view.zoomOut" : "Zúmáil amach", | 108 | "menu.view.zoomOut" : "Zúmáil amach", |
90 | "menu.window" : "Fuinneog", | 109 | "menu.window" : "Fuinneog", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Cuir isteach", | 122 | "password.submit.label" : "Cuir isteach", |
104 | "password.successInfo" : "Seiceáil do chuid rÃomhphoist le do thoil", | 123 | "password.successInfo" : "Seiceáil do chuid rÃomhphoist le do thoil", |
105 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 124 | "premiumFeature.button.upgradeAccount" : "Upgrade account", |
106 | "pricing.headline" : "Tabhair tacaÃocht do Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "NÃor mhaith liom tacaÃocht a thabhairt d'fhorbairt Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Ba mhaith liom tacaÃocht a thabhairt d'fhorbairt Franz.", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Conas ar mhaith leat tacú le Franz?", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Athlódáil {name}", | 152 | "service.crashHandler.action" : "Athlódáil {name}", |
111 | "service.crashHandler.autoReload" : "Ag iarraidh {name} a thabhairt ar ais go huathoibrÃoch i gceann {seconds} shoicind", | 153 | "service.crashHandler.autoReload" : "Ag iarraidh {name} a thabhairt ar ais go huathoibrÃoch i gceann {seconds} shoicind", |
112 | "service.crashHandler.headline" : "Oró, nà hea!", | 154 | "service.crashHandler.headline" : "Oró, nà hea!", |
@@ -118,12 +160,17 @@ | |||
118 | "service.errorHandler.headline" : "Oró, nà hea!", | 160 | "service.errorHandler.headline" : "Oró, nà hea!", |
119 | "service.errorHandler.message" : "Earráid", | 161 | "service.errorHandler.message" : "Earráid", |
120 | "service.errorHandler.text" : "{name} has failed to load.", | 162 | "service.errorHandler.text" : "{name} has failed to load.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Loading", | 168 | "service.webviewLoader.loading" : "Loading", |
122 | "services.getStarted" : "Cuir tús", | 169 | "services.getStarted" : "Cuir tús", |
123 | "services.welcome" : "Fáilte go Franz", | 170 | "services.welcome" : "Fáilte go Ferdi", |
124 | "settings.account.account.editButton" : "Cuir cuntas in eagar", | 171 | "settings.account.account.editButton" : "Cuir cuntas in eagar", |
125 | "settings.account.accountType.basic" : "Bunchuntas", | 172 | "settings.account.accountType.basic" : "Bunchuntas", |
126 | "settings.account.accountType.premium" : "Cuntas Phŕeimhthacadóra Franz", | 173 | "settings.account.accountType.premium" : "Cuntas Phŕeimhthacadóra Ferdi", |
127 | "settings.account.buttonSave" : "Nuashonraigh próifÃl", | 174 | "settings.account.buttonSave" : "Nuashonraigh próifÃl", |
128 | "settings.account.deleteAccount" : "Scrios cuntas", | 175 | "settings.account.deleteAccount" : "Scrios cuntas", |
129 | "settings.account.deleteEmailSent" : "Fuair tú rÃomhphost chun scriosadh do chuntais a dheimhniú. Nà féidir do chuntas agus do chuid sonraà a thabhairt ar ais!", | 176 | "settings.account.deleteEmailSent" : "Fuair tú rÃomhphost chun scriosadh do chuntais a dheimhniú. Nà féidir do chuntas agus do chuid sonraà a thabhairt ar ais!", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Athraigh pasfhocal", | 182 | "settings.account.headlinePassword" : "Athraigh pasfhocal", |
136 | "settings.account.headlineProfile" : "Nuashonraigh próifÃl", | 183 | "settings.account.headlineProfile" : "Nuashonraigh próifÃl", |
137 | "settings.account.headlineSubscription" : "Do shÃntiús", | 184 | "settings.account.headlineSubscription" : "Do shÃntiús", |
138 | "settings.account.headlineUpgrade" : "Uasghrádaigh do chuntas chun tacaÃocht a thabhairt do Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Ãoslódáil", | 187 | "settings.account.invoiceDownload" : "Ãoslódáil", |
140 | "settings.account.manageSubscription.label" : "Bainistigh do shÃntiús", | 188 | "settings.account.manageSubscription.label" : "Bainistigh do shÃntiús", |
141 | "settings.account.successInfo" : "Sábháladh do chuid athruithe", | 189 | "settings.account.successInfo" : "Sábháladh do chuid athruithe", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Atriail", | 193 | "settings.account.tryReloadServices" : "Atriail", |
143 | "settings.account.tryReloadUserInfoRequest" : "Atriail", | 194 | "settings.account.tryReloadUserInfoRequest" : "Atriail", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Nà féidir eolas úsáideora a lódáil", | 196 | "settings.account.userInfoRequestFailed" : "Nà féidir eolas úsáideora a lódáil", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Glan taisce", | 198 | "settings.app.buttonClearAllCache" : "Glan taisce", |
146 | "settings.app.buttonInstallUpdate" : "Atosaigh ⊠suiteáil nuashonrú", | 199 | "settings.app.buttonInstallUpdate" : "Atosaigh ⊠suiteáil nuashonrú", |
147 | "settings.app.buttonSearchForUpdate" : "Cuardaigh le nuashonruithe", | 200 | "settings.app.buttonSearchForUpdate" : "Cuardaigh le nuashonruithe", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Join the Dark Side", | 206 | "settings.app.form.darkMode" : "Join the Dark Side", |
154 | "settings.app.form.enableGPUAcceleration" : "Cumasaigh luasghéarú APG", | 207 | "settings.app.form.enableGPUAcceleration" : "Cumasaigh luasghéarú APG", |
155 | "settings.app.form.enableSpellchecking" : "Cumasaigh seiceáil litrithe", | 208 | "settings.app.form.enableSpellchecking" : "Cumasaigh seiceáil litrithe", |
156 | "settings.app.form.enableSystemTray" : "Taispeáin Ferdi i dtráidire an chórais", | 209 | "settings.app.form.enableSystemTray" : "Taispeáin Franz i dtráidire an chórais", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Teanga", | 212 | "settings.app.form.language" : "Teanga", |
158 | "settings.app.form.minimizeToSystemTray" : "Ãoslaghdaigh Ferdi chuig tráidire an chórais", | 213 | "settings.app.form.minimizeToSystemTray" : "Ãoslaghdaigh Ferdi chuig tráidire an chórais", |
159 | "settings.app.form.runInBackground" : "Coimeád Ferdi sa chúlra nuair a dhúntar an fhuinneog", | 214 | "settings.app.form.runInBackground" : "Coimeád Ferdi sa chúlra nuair a dhúntar an fhuinneog", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Cabhraigh linn Ferdi a aistriú i do theanga.", | 226 | "settings.app.translationHelp" : "Cabhraigh linn Ferdi a aistriú i do theanga.", |
172 | "settings.app.updateStatusAvailable" : "Nuashonrú le fáil, ag Ãoslódáil...", | 227 | "settings.app.updateStatusAvailable" : "Nuashonrú le fáil, ag Ãoslódáil...", |
173 | "settings.app.updateStatusSearching" : "Ag cuardach le nuashonruithe", | 228 | "settings.app.updateStatusSearching" : "Ag cuardach le nuashonruithe", |
174 | "settings.app.updateStatusUpToDate" : "Tá tú ag baint úsáid as an leagan is deireanaà de Franz", | 229 | "settings.app.updateStatusUpToDate" : "Tá tú ag baint úsáid as an leagan is deireanaà de Ferdi", |
175 | "settings.invite.headline" : "Tabhair cuireadh do thriúr chara", | 230 | "settings.invite.headline" : "Tabhair cuireadh do thriúr chara", |
176 | "settings.navigation.account" : "Cuntas", | 231 | "settings.navigation.account" : "Cuntas", |
177 | "settings.navigation.availableServices" : "SeirbhÃsà le fáil", | 232 | "settings.navigation.availableServices" : "SeirbhÃsà le fáil", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Do sheirbhÃsÃ", | 237 | "settings.navigation.yourServices" : "Do sheirbhÃsÃ", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Your workspaces", |
184 | "settings.recipes.all" : "Gach seirbhÃs", | 239 | "settings.recipes.all" : "Gach seirbhÃs", |
185 | "settings.recipes.dev" : "Forbairt", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "SeirbhÃsà le fáil", | 247 | "settings.recipes.headline" : "SeirbhÃsà le fáil", |
187 | "settings.recipes.missingService" : "SeirbhÃs ar iarraidh?", | 248 | "settings.recipes.missingService" : "SeirbhÃs ar iarraidh?", |
188 | "settings.recipes.mostPopular" : "Is coitianta", | 249 | "settings.recipes.mostPopular" : "Is coitianta", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Cuir seirbhÃs nua leis", | 332 | "sidebar.addNewService" : "Cuir seirbhÃs nua leis", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 334 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", |
273 | "sidebar.muteApp" : "DÃchumasaigh fógraà ⊠fuaim", | 335 | "sidebar.muteApp" : "DÃchumasaigh fógraà ⊠fuaim", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "Socruithe", | 338 | "sidebar.settings" : "Socruithe", |
276 | "sidebar.unmuteApp" : "Cumasaigh fógraà ⊠fuaim", | 339 | "sidebar.unmuteApp" : "Cumasaigh fógraà ⊠fuaim", |
277 | "signup.company.label" : "Comhlacht", | ||
278 | "signup.email.label" : "Seoladh rÃomhphoist", | 340 | "signup.email.label" : "Seoladh rÃomhphoist", |
279 | "signup.emailDuplicate" : "Tá úsáideoir leis an seoladh rÃomhphoist sin cheana féin", | 341 | "signup.emailDuplicate" : "Tá úsáideoir leis an seoladh rÃomhphoist sin cheana féin", |
280 | "signup.firstname.label" : "Céadainm", | 342 | "signup.firstname.label" : "Céadainm", |
@@ -296,10 +358,16 @@ | |||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | 358 | "subscription.features.workspaces" : "Organize your services in workspaces", |
297 | "subscription.includedFeatures" : "Cuireann Cuntas Phŕeimhthacadóra Ferdi san áireamh", | 359 | "subscription.includedFeatures" : "Cuireann Cuntas Phŕeimhthacadóra Ferdi san áireamh", |
298 | "subscription.paymentSessionError" : "Nà féidir an bhfoirm ÃocaÃochta a lódáil", | 360 | "subscription.paymentSessionError" : "Nà féidir an bhfoirm ÃocaÃochta a lódáil", |
299 | "subscription.submit.label" : "Ba mhaith liom tacaÃocht a thabhairt d'fhorbairt Franz", | 361 | "subscription.submit.label" : "Ba mhaith liom tacaÃocht a thabhairt d'fhorbairt Ferdi", |
300 | "subscription.type.free" : "saor in aisce", | 362 | "subscription.type.free" : "saor in aisce", |
301 | "subscription.type.month" : "mÃ", | 363 | "subscription.type.month" : "mÃ", |
302 | "subscription.type.year" : "bliain", | 364 | "subscription.type.year" : "bliain", |
365 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", | ||
366 | "subscription.cta.allOptions" : "See all options", | ||
367 | "subscription.cta.choosePlan" : "Choose your plan", | ||
368 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", | ||
369 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", | ||
370 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | ||
303 | "subscriptionPopup.buttonCancel" : "Cealaigh", | 371 | "subscriptionPopup.buttonCancel" : "Cealaigh", |
304 | "subscriptionPopup.buttonDone" : "Déanta", | 372 | "subscriptionPopup.buttonDone" : "Déanta", |
305 | "tabs.item.deleteService" : "Scrios seirbhÃs", | 373 | "tabs.item.deleteService" : "Scrios seirbhÃs", |
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index f77c4a185..6d6c8d0d2 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json | |||
@@ -1,23 +1,33 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Ponovno uÄitavanje", | 2 | "app.errorHandler.action" : "Ponovno uÄitavanje", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Something went wrong", |
4 | "feature.announcements.changelog.headline" : "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", |
5 | "feature.delayApp.action" : "Get a Ferdi Supporter License", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.headline" : "Please purchase a Ferdi Supporter License to skip waiting", | 6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", |
7 | "feature.delayApp.text" : "Ferdi will continue in {seconds} seconds.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Get a Franz Supporter License", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Upgrade account", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Send as email", | 13 | "feature.shareFranz.action.email" : "Send as email", |
9 | "feature.shareFranz.action.facebook" : "Share on Facebook", | 14 | "feature.shareFranz.action.facebook" : "Share on Facebook", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 15 | "feature.shareFranz.action.twitter" : "Share on Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi is better together!", | 16 | "feature.shareFranz.headline" : "Ferdi is better together!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", | ||
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
15 | "global.api.unhealthy" : "Nije se moguće povezati na Francove on-line servise. ", | 23 | "global.api.unhealthy" : "Nije se moguće povezati na Francove on-line servise. ", |
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Sada ste povezani s internetom. ", | 25 | "global.notConnectedToTheInternet" : "Sada ste povezani s internetom. ", |
17 | "global.spellchecker.useDefault" : "Use System Default ({default})", | 26 | "global.spellchecker.useDefault" : "Use System Default ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 27 | "global.spellchecking.autodetect" : "Detect language automatically", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 28 | "global.spellchecking.autodetect.short" : "Automatic", |
20 | "global.spellchecking.language" : "Spell checking language", | 29 | "global.spellchecking.language" : "Spell checking language", |
30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", | ||
21 | "import.headline" : "Uvezite svoje Franc 4 servise. ", | 31 | "import.headline" : "Uvezite svoje Franc 4 servise. ", |
22 | "import.notSupportedHeadline" : "Franc 5 trenutno ne podržava taj servis", | 32 | "import.notSupportedHeadline" : "Franc 5 trenutno ne podržava taj servis", |
23 | "import.skip.label" : "Želim ruÄno dodati ove usluge", | 33 | "import.skip.label" : "Želim ruÄno dodati ove usluge", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "Ponovo uÄitaj servise", | 37 | "infobar.buttonReloadServices" : "Ponovo uÄitaj servise", |
28 | "infobar.requiredRequestsFailed" : "Nemoguće uÄitati servise i korisniÄke informacije", | 38 | "infobar.requiredRequestsFailed" : "Nemoguće uÄitati servise i korisniÄke informacije", |
29 | "infobar.servicesUpdated" : "Vaši servisi su ažurirani. ", | 39 | "infobar.servicesUpdated" : "Vaši servisi su ažurirani. ", |
40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", | ||
30 | "infobar.updateAvailable" : "Novo ažuriranje Franz-a je dostupno. ", | 41 | "infobar.updateAvailable" : "Novo ažuriranje Franz-a je dostupno. ", |
31 | "invite.email.label" : "Vaša e-adresa:", | 42 | "invite.email.label" : "Vaša e-adresa:", |
32 | "invite.headline.friends" : "Pozovite 3 vaša prijatelja ili kolege", | 43 | "invite.headline.friends" : "Pozovite 3 vaša prijatelja ili kolege", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "Vaša sesija je istekla, prijavite se ponovo.", | 54 | "login.serverLogout" : "Vaša sesija je istekla, prijavite se ponovo.", |
44 | "login.submit.label" : "Prijavite se", | 55 | "login.submit.label" : "Prijavite se", |
45 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", | 56 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", |
57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", | ||
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
46 | "menu.app.about" : "O aplikaciji", | 59 | "menu.app.about" : "O aplikaciji", |
47 | "menu.app.announcement" : "What's new?", | 60 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Potraži ažuriranja", | 61 | "menu.app.checkForUpdates" : "Potraži ažuriranja", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "File", | 81 | "menu.file" : "File", |
69 | "menu.help" : "Help", | 82 | "menu.help" : "Help", |
70 | "menu.help.changelog" : "Changelog", | 83 | "menu.help.changelog" : "Changelog", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Learn More", | 87 | "menu.help.learnMore" : "Learn More", |
72 | "menu.help.privacy" : "Izjava o privatnosti ", | 88 | "menu.help.privacy" : "Izjava o privatnosti ", |
73 | "menu.help.support" : "Support", | 89 | "menu.help.support" : "Support", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Activate previous service", | 92 | "menu.services.activatePreviousService" : "Activate previous service", |
77 | "menu.services.addNewService" : "Add New Service...", | 93 | "menu.services.addNewService" : "Add New Service...", |
78 | "menu.services.setNextServiceActive" : "Activate next service", | 94 | "menu.services.setNextServiceActive" : "Activate next service", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "View", | 97 | "menu.view" : "View", |
80 | "menu.view.enterFullScreen" : "Enter Full Screen", | 98 | "menu.view.enterFullScreen" : "Enter Full Screen", |
81 | "menu.view.exitFullScreen" : "Exit Full Screen", | 99 | "menu.view.exitFullScreen" : "Exit Full Screen", |
82 | "menu.view.reloadFranz" : "Reload Franz", | 100 | "menu.view.reloadFranz" : "Reload Ferdi", |
83 | "menu.view.reloadService" : "Reload Service", | 101 | "menu.view.reloadService" : "Reload Service", |
84 | "menu.view.resetZoom" : "Actual Size", | 102 | "menu.view.resetZoom" : "Actual Size", |
85 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | 103 | "menu.view.toggleDevTools" : "Toggle Developer Tools", |
86 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | 104 | "menu.view.toggleFullScreen" : "Toggle Full Screen", |
87 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | 105 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Zoom In", | 107 | "menu.view.zoomIn" : "Zoom In", |
89 | "menu.view.zoomOut" : "Zoom Out", | 108 | "menu.view.zoomOut" : "Zoom Out", |
90 | "menu.window" : "Window", | 109 | "menu.window" : "Window", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Pošalji", | 122 | "password.submit.label" : "Pošalji", |
104 | "password.successInfo" : "Molimo Vas da provjerite svoju e-mail adresu", | 123 | "password.successInfo" : "Molimo Vas da provjerite svoju e-mail adresu", |
105 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 124 | "premiumFeature.button.upgradeAccount" : "Upgrade account", |
106 | "pricing.headline" : "Podržite Ferdi aplikaciju", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Ne želim da podržim razvoj Franz-a.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Želim da podržim razvoj Franz-a.", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Izaberite vaš plan za podržavanje", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Osvježi okvir", | 152 | "service.crashHandler.action" : "Osvježi okvir", |
111 | "service.crashHandler.autoReload" : "Pokušati ću automatski povratiti {ime} u {sekundi} sekundi", | 153 | "service.crashHandler.autoReload" : "Pokušati ću automatski povratiti {ime} u {sekundi} sekundi", |
112 | "service.crashHandler.headline" : "O, ne! ", | 154 | "service.crashHandler.headline" : "O, ne! ", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "O, ne! ", | 160 | "service.errorHandler.headline" : "O, ne! ", |
119 | "service.errorHandler.message" : "Greška", | 161 | "service.errorHandler.message" : "Greška", |
120 | "service.errorHandler.text" : "{name} has failed to load.", | 162 | "service.errorHandler.text" : "{name} has failed to load.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Loading", | 168 | "service.webviewLoader.loading" : "Loading", |
122 | "services.getStarted" : "ZapoÄnimo!", | 169 | "services.getStarted" : "ZapoÄnimo!", |
123 | "services.welcome" : "Dobrodošli u Franz", | 170 | "services.welcome" : "Dobrodošli u Ferdi", |
124 | "settings.account.account.editButton" : "Uredi raÄun", | 171 | "settings.account.account.editButton" : "Uredi raÄun", |
125 | "settings.account.accountType.basic" : "Osnovni raÄun", | 172 | "settings.account.accountType.basic" : "Osnovni raÄun", |
126 | "settings.account.accountType.premium" : "Premium raÄun", | 173 | "settings.account.accountType.premium" : "Premium raÄun", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Promijenite lozinku", | 182 | "settings.account.headlinePassword" : "Promijenite lozinku", |
136 | "settings.account.headlineProfile" : "Ažurirajte profil", | 183 | "settings.account.headlineProfile" : "Ažurirajte profil", |
137 | "settings.account.headlineSubscription" : "Vaša pretplata", | 184 | "settings.account.headlineSubscription" : "Vaša pretplata", |
138 | "settings.account.headlineUpgrade" : "Nadogradite raÄun i podržite Franc", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Preuzmite", | 187 | "settings.account.invoiceDownload" : "Preuzmite", |
140 | "settings.account.manageSubscription.label" : "Upravljajte pretplatama", | 188 | "settings.account.manageSubscription.label" : "Upravljajte pretplatama", |
141 | "settings.account.successInfo" : "Vaše promjene su spremljene", | 189 | "settings.account.successInfo" : "Vaše promjene su spremljene", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Pokušajte ponovno", | 193 | "settings.account.tryReloadServices" : "Pokušajte ponovno", |
143 | "settings.account.tryReloadUserInfoRequest" : "Pokušajte ponovno", | 194 | "settings.account.tryReloadUserInfoRequest" : "Pokušajte ponovno", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Nije moguće uÄitati informacije o korisniku", | 196 | "settings.account.userInfoRequestFailed" : "Nije moguće uÄitati informacije o korisniku", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "OÄisti memoriju", | 198 | "settings.app.buttonClearAllCache" : "OÄisti memoriju", |
146 | "settings.app.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje", | 199 | "settings.app.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje", |
147 | "settings.app.buttonSearchForUpdate" : "Potraži ažuriranja", | 200 | "settings.app.buttonSearchForUpdate" : "Potraži ažuriranja", |
@@ -154,6 +207,8 @@ | |||
154 | "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration", | 207 | "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration", |
155 | "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa", | 208 | "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa", |
156 | "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci", | 209 | "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Jezik", | 212 | "settings.app.form.language" : "Jezik", |
158 | "settings.app.form.minimizeToSystemTray" : "Smanji Franca u sustavsku traku", | 213 | "settings.app.form.minimizeToSystemTray" : "Smanji Franca u sustavsku traku", |
159 | "settings.app.form.runInBackground" : "Neka se Franc održava u pozadini i ako je prozor zatvoren", | 214 | "settings.app.form.runInBackground" : "Neka se Franc održava u pozadini i ako je prozor zatvoren", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Vaše usluge", | 237 | "settings.navigation.yourServices" : "Vaše usluge", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Your workspaces", |
184 | "settings.recipes.all" : "Sve usluge", | 239 | "settings.recipes.all" : "Sve usluge", |
185 | "settings.recipes.dev" : "Razvoj", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Dostupne usluge", | 247 | "settings.recipes.headline" : "Dostupne usluge", |
187 | "settings.recipes.missingService" : "Da li neki servis nedostaje?", | 248 | "settings.recipes.missingService" : "Da li neki servis nedostaje?", |
188 | "settings.recipes.mostPopular" : "Najpopularniji", | 249 | "settings.recipes.mostPopular" : "Najpopularniji", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Dodajte novu uslugu", | 332 | "sidebar.addNewService" : "Dodajte novu uslugu", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 334 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", |
273 | "sidebar.muteApp" : "Ugasi obavijesti i zvuk", | 335 | "sidebar.muteApp" : "Ugasi obavijesti i zvuk", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "Postavke", | 338 | "sidebar.settings" : "Postavke", |
276 | "sidebar.unmuteApp" : "Omogući obavijesti i zvuk", | 339 | "sidebar.unmuteApp" : "Omogući obavijesti i zvuk", |
277 | "signup.company.label" : "Tvrtka", | ||
278 | "signup.email.label" : "Vaša e-adresa", | 340 | "signup.email.label" : "Vaša e-adresa", |
279 | "signup.emailDuplicate" : "Već postoji korisnik s tom e-mail adresom", | 341 | "signup.emailDuplicate" : "Već postoji korisnik s tom e-mail adresom", |
280 | "signup.firstname.label" : "Ime", | 342 | "signup.firstname.label" : "Ime", |
@@ -286,20 +348,12 @@ | |||
286 | "signup.link.login" : "Imate raÄun? Prijavite se.", | 348 | "signup.link.login" : "Imate raÄun? Prijavite se.", |
287 | "signup.password.label" : "Lozinka", | 349 | "signup.password.label" : "Lozinka", |
288 | "signup.submit.label" : "Napravite novi raÄun", | 350 | "signup.submit.label" : "Napravite novi raÄun", |
289 | "subscription.euTaxInfo" : "EU državljani, upozerenje: Moguće taksiranje ", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Bez reklama, doživotno!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "Dolazi uskoro", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Proxy support for services", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Support for spellchecker", | ||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | ||
297 | "subscription.includedFeatures" : "Plaćeni\/Premium raÄun ukljuÄuje sljedeće: ", | ||
298 | "subscription.paymentSessionError" : "Nemoguće inicijalizirati obrazac za uplatu", | ||
299 | "subscription.submit.label" : "Želim da podržim razvoj Franca. ", | ||
300 | "subscription.type.free" : "Slobodno", | ||
301 | "subscription.type.month" : "mjesec", | ||
302 | "subscription.type.year" : "godina", | ||
303 | "subscriptionPopup.buttonCancel" : "Odustani", | 357 | "subscriptionPopup.buttonCancel" : "Odustani", |
304 | "subscriptionPopup.buttonDone" : "Završeno", | 358 | "subscriptionPopup.buttonDone" : "Završeno", |
305 | "tabs.item.deleteService" : "Izbriši servis", | 359 | "tabs.item.deleteService" : "Izbriši servis", |
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index 50f5e72d3..77b1a9c53 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Újratöltés", | 2 | "app.errorHandler.action" : "Újratöltés", |
3 | "app.errorHandler.headline" : "Valami nem jött össze", | 3 | "app.errorHandler.headline" : "Valami nem jött össze", |
4 | "feature.announcements.changelog.headline" : "Ferdi {version} változásai", | 4 | "feature.announcements.changelog.headline" : "Franz {version} változásai", |
5 | "feature.delayApp.action" : "Szerezz egy Ferdi Támogatói Liszencet", | ||
6 | "feature.delayApp.headline" : "Kérjük vásárolj egy Franc Támogatói Liszencet a várakozás átugrásához", | 5 | "feature.delayApp.headline" : "Kérjük vásárolj egy Franc Támogatói Liszencet a várakozás átugrásához", |
7 | "feature.delayApp.text" : "A Ferdi továbblép {seconds} másodperc múlva.", | 6 | "feature.delayApp.text" : "A Franz továbblép {seconds} másodperc múlva.", |
7 | "feature.delayApp.trial.action" : "Igen, szeretném kipróbálni 14 napig a Franz Professional-t ingyen", | ||
8 | "feature.delayApp.trial.actionShort" : "Aktiválom az ingyenes Franz Professional próbaidőszakot", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Szerezz egy Franz Támogatói Liszencet", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Fiók frissÃtése", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Küldés email-ben", | 13 | "feature.shareFranz.action.email" : "Küldés email-ben", |
9 | "feature.shareFranz.action.facebook" : "Megosztás Facebook-on", | 14 | "feature.shareFranz.action.facebook" : "Megosztás Facebook-on", |
10 | "feature.shareFranz.action.twitter" : "Megosztás Twitter-en", | 15 | "feature.shareFranz.action.twitter" : "Megosztás Twitter-en", |
11 | "feature.shareFranz.headline" : "A Ferdi barátokkal együtt mégjobb!", | 16 | "feature.shareFranz.headline" : "A Ferdi barátokkal együtt mégjobb!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
15 | "global.api.unhealthy" : "Nem lehet csatlakozni a Ferdi online szolgáltatáshoz", | 20 | "feature.todos.premium.info" : "A Franz Tennivalók már elérhető a prémium felhasználók részére!", |
21 | "feature.todos.premium.rollout" : "Mindenki másnak még egy kicsit tovább kell várni.", | ||
22 | "feature.todos.premium.upgrade" : "Fiók frissÃtése", | ||
23 | "global.api.unhealthy" : "Nem lehet csatlakozni a Franz online szolgáltatáshoz", | ||
24 | "global.franzProRequired" : "Franz Professional szükséges", | ||
16 | "global.notConnectedToTheInternet" : "Nincs hálózati kapcsolat.", | 25 | "global.notConnectedToTheInternet" : "Nincs hálózati kapcsolat.", |
17 | "global.spellchecker.useDefault" : "Rendszer alapbeállÃtás használata ({default})", | 26 | "global.spellchecker.useDefault" : "Rendszer alapbeállÃtás használata ({default})", |
18 | "global.spellchecking.autodetect" : "Automatikus nyelvdetektálás", | 27 | "global.spellchecking.autodetect" : "Automatikus nyelvdetektálás", |
19 | "global.spellchecking.autodetect.short" : "Automatikus", | 28 | "global.spellchecking.autodetect.short" : "Automatikus", |
20 | "global.spellchecking.language" : "HelyesÃrás-ellenÅ‘rzÅ‘ nyelve", | 29 | "global.spellchecking.language" : "HelyesÃrás-ellenÅ‘rzÅ‘ nyelve", |
21 | "import.headline" : "Importáld szolgáltatásaidat a Ferdi 4-bÅ‘l", | 30 | "global.upgradeButton.upgradeToPro" : "FrissÃtés Franz Professional-ra", |
22 | "import.notSupportedHeadline" : "Még nem támogatott szolgáltatások a Ferdi 5-ben", | 31 | "import.headline" : "Importáld szolgáltatásaidat a Franz 4-ből", |
32 | "import.notSupportedHeadline" : "Még nem támogatott szolgáltatások a Franz 5-ben", | ||
23 | "import.skip.label" : "Manuálisan szeretném hozzáadni a szolgáltatásokat", | 33 | "import.skip.label" : "Manuálisan szeretném hozzáadni a szolgáltatásokat", |
24 | "import.submit.label" : "Szolgáltatások importálása", | 34 | "import.submit.label" : "Szolgáltatások importálása", |
25 | "infobar.buttonChangelog" : "Mi változott?", | 35 | "infobar.buttonChangelog" : "Mi változott?", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "Szolgáltatások újratöltése", | 37 | "infobar.buttonReloadServices" : "Szolgáltatások újratöltése", |
28 | "infobar.requiredRequestsFailed" : "Szolgáltatások és felhasználói információk nem tölthetők be", | 38 | "infobar.requiredRequestsFailed" : "Szolgáltatások és felhasználói információk nem tölthetők be", |
29 | "infobar.servicesUpdated" : "A szolgáltatások frissÃtésre kerültek.", | 39 | "infobar.servicesUpdated" : "A szolgáltatások frissÃtésre kerültek.", |
40 | "infobar.trialActivated" : "A próbaidőszak aktiválva. Jó mulatást!", | ||
30 | "infobar.updateAvailable" : "Új frissÃtés érhetÅ‘ el a Franz-hoz.", | 41 | "infobar.updateAvailable" : "Új frissÃtés érhetÅ‘ el a Franz-hoz.", |
31 | "invite.email.label" : "Email cÃm", | 42 | "invite.email.label" : "Email cÃm", |
32 | "invite.headline.friends" : "HÃvd meg 3 barátodat vagy kollégádat", | 43 | "invite.headline.friends" : "HÃvd meg 3 barátodat vagy kollégádat", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "A munkamenet lejárt, kérlek lépj be újra.", | 54 | "login.serverLogout" : "A munkamenet lejárt, kérlek lépj be újra.", |
44 | "login.submit.label" : "Bejelentkezés", | 55 | "login.submit.label" : "Bejelentkezés", |
45 | "login.tokenExpired" : "A munkamenet lejárt, kérlek lépj be újra.", | 56 | "login.tokenExpired" : "A munkamenet lejárt, kérlek lépj be újra.", |
57 | "menu.Todoss.closeTodosDrawer" : "Tennivalók sáv bezárása", | ||
58 | "menu.Todoss.openTodosDrawer" : "Tennivalók sáv kinyitása", | ||
46 | "menu.app.about" : "Névjegy", | 59 | "menu.app.about" : "Névjegy", |
47 | "menu.app.announcement" : "Mi újság?", | 60 | "menu.app.announcement" : "Mi újság?", |
48 | "menu.app.checkForUpdates" : "FrissÃtések keresése", | 61 | "menu.app.checkForUpdates" : "FrissÃtések keresése", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Fájl", | 81 | "menu.file" : "Fájl", |
69 | "menu.help" : "Súgó", | 82 | "menu.help" : "Súgó", |
70 | "menu.help.changelog" : "Változások listája", | 83 | "menu.help.changelog" : "Változások listája", |
84 | "menu.help.debugInfo" : "Hibajelentés másolása", | ||
85 | "menu.help.debugInfoCopiedBody" : "A Hibajelentést a vágólapra másoltuk.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Hibajelentés", | ||
71 | "menu.help.learnMore" : "Tudjon meg többet", | 87 | "menu.help.learnMore" : "Tudjon meg többet", |
72 | "menu.help.privacy" : "Adatvédelmi Nyilatkozatot", | 88 | "menu.help.privacy" : "Adatvédelmi Nyilatkozatot", |
73 | "menu.help.support" : "Támogatás", | 89 | "menu.help.support" : "Támogatás", |
@@ -76,6 +92,8 @@ | |||
76 | "menu.services.activatePreviousService" : "Előző szolgáltatás", | 92 | "menu.services.activatePreviousService" : "Előző szolgáltatás", |
77 | "menu.services.addNewService" : "Új szolgáltatás hozzáadása...", | 93 | "menu.services.addNewService" : "Új szolgáltatás hozzáadása...", |
78 | "menu.services.setNextServiceActive" : "Következő szolgáltatás", | 94 | "menu.services.setNextServiceActive" : "Következő szolgáltatás", |
95 | "menu.todos" : "Tennivalók", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Nézet", | 97 | "menu.view" : "Nézet", |
80 | "menu.view.enterFullScreen" : "Kilépés a teljes képernyős módból", | 98 | "menu.view.enterFullScreen" : "Kilépés a teljes képernyős módból", |
81 | "menu.view.exitFullScreen" : "Kilépés a teljes képernyős módból", | 99 | "menu.view.exitFullScreen" : "Kilépés a teljes képernyős módból", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "Fejlesztői eszközök ki\/bekapcsolása", | 103 | "menu.view.toggleDevTools" : "Fejlesztői eszközök ki\/bekapcsolása", |
86 | "menu.view.toggleFullScreen" : "Teljes képernyős mód ki\/bekapcsolása", | 104 | "menu.view.toggleFullScreen" : "Teljes képernyős mód ki\/bekapcsolása", |
87 | "menu.view.toggleServiceDevTools" : "Szolgáltatás Fejlesztői Eszközök ki\/bekapcsolása", | 105 | "menu.view.toggleServiceDevTools" : "Szolgáltatás Fejlesztői Eszközök ki\/bekapcsolása", |
106 | "menu.view.toggleTodosDevTools" : "Tennivalók Fejlesztői Eszközök kapcsolása", | ||
88 | "menu.view.zoomIn" : "NagyÃtás", | 107 | "menu.view.zoomIn" : "NagyÃtás", |
89 | "menu.view.zoomOut" : "KicsinyÃtés", | 108 | "menu.view.zoomOut" : "KicsinyÃtés", |
90 | "menu.window" : "Ablak", | 109 | "menu.window" : "Ablak", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Küldés", | 122 | "password.submit.label" : "Küldés", |
104 | "password.successInfo" : "Ellenőrizd az email fiókodat", | 123 | "password.successInfo" : "Ellenőrizd az email fiókodat", |
105 | "premiumFeature.button.upgradeAccount" : "Fiók frissÃtése", | 124 | "premiumFeature.button.upgradeAccount" : "Fiók frissÃtése", |
106 | "pricing.headline" : "Támogasd a Franz-ot", | 125 | "pricing.features.adFree" : "Hirdetésmentesség, örökre!", |
107 | "pricing.link.skipPayment" : "Nem szeretném támogatni a Ferdi fejlesztését.", | 126 | "pricing.features.appDelays" : "Nincsenek töltőképernyők", |
108 | "pricing.submit.label" : "Támogatni szeretném a Ferdi fejlesztését", | 127 | "pricing.features.customWebsites" : "Egyéni weboldalak megadása", |
109 | "pricing.support.label" : "Válaszd ki a támogatás módját", | 128 | "pricing.features.onPremise" : "Helyi és egyéb távoli szolgáltatások", |
129 | "pricing.features.serviceProxies" : "Szolgáltatás Proxy-k", | ||
130 | "pricing.features.spellchecker" : "HelyesÃrás-ellenÅ‘rzés támogatás", | ||
131 | "pricing.features.teamManagement" : "Csapatkezelés", | ||
132 | "pricing.features.thirdPartyServices" : "Harmadik féltől származó szolgáltatások használata", | ||
133 | "pricing.features.unlimitedServices" : "Korlátlan szolgáltatások felvitele", | ||
134 | "pricing.features.workspaces" : "Munkaterületek", | ||
135 | "pricing.plan.free" : "Ingyenes Franz", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "{name} újratöltése", | 152 | "service.crashHandler.action" : "{name} újratöltése", |
111 | "service.crashHandler.autoReload" : "{name} automatikusan helyreállÃtása {seconds} másodpercen belül", | 153 | "service.crashHandler.autoReload" : "{name} automatikusan helyreállÃtása {seconds} másodpercen belül", |
112 | "service.crashHandler.headline" : "Jajj ne!", | 154 | "service.crashHandler.headline" : "Jajj ne!", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "Jajj ne!", | 160 | "service.errorHandler.headline" : "Jajj ne!", |
119 | "service.errorHandler.message" : "Hiba", | 161 | "service.errorHandler.message" : "Hiba", |
120 | "service.errorHandler.text" : "{name} nem tudott betöltődni.", | 162 | "service.errorHandler.text" : "{name} nem tudott betöltődni.", |
163 | "service.restrictedHandler.action" : "Fiók frissÃtése", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Betöltés", | 168 | "service.webviewLoader.loading" : "Betöltés", |
122 | "services.getStarted" : "Kezdj hozzá", | 169 | "services.getStarted" : "Kezdj hozzá", |
123 | "services.welcome" : "Üdvözöl a Franz", | 170 | "services.welcome" : "Üdvözöl a Ferdi", |
124 | "settings.account.account.editButton" : "Fiók szerkesztése", | 171 | "settings.account.account.editButton" : "Fiók szerkesztése", |
125 | "settings.account.accountType.basic" : "Alap Fiók", | 172 | "settings.account.accountType.basic" : "Alap Fiók", |
126 | "settings.account.accountType.premium" : "Prémium Támogató Fiók", | 173 | "settings.account.accountType.premium" : "Prémium Támogató Fiók", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Jelszócsere", | 182 | "settings.account.headlinePassword" : "Jelszócsere", |
136 | "settings.account.headlineProfile" : "Profil frissÃtése", | 183 | "settings.account.headlineProfile" : "Profil frissÃtése", |
137 | "settings.account.headlineSubscription" : "Előfizetésed", | 184 | "settings.account.headlineSubscription" : "Előfizetésed", |
138 | "settings.account.headlineUpgrade" : "FrissÃtsd fiókod és támogasd a Franz-ot", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Letöltés", | 187 | "settings.account.invoiceDownload" : "Letöltés", |
140 | "settings.account.manageSubscription.label" : "Előfizetés kezelése", | 188 | "settings.account.manageSubscription.label" : "Előfizetés kezelése", |
141 | "settings.account.successInfo" : "A módosÃtásokat elmentettük", | 189 | "settings.account.successInfo" : "A módosÃtásokat elmentettük", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Próbáld újra", | 193 | "settings.account.tryReloadServices" : "Próbáld újra", |
143 | "settings.account.tryReloadUserInfoRequest" : "Próbáld újra", | 194 | "settings.account.tryReloadUserInfoRequest" : "Próbáld újra", |
195 | "settings.account.upgradeToPro.label" : "FrissÃtés Franz Professional-ra", | ||
144 | "settings.account.userInfoRequestFailed" : "A felhasználói adatok betöltése sikertelen", | 196 | "settings.account.userInfoRequestFailed" : "A felhasználói adatok betöltése sikertelen", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "GyorsÃtótár törlése", | 198 | "settings.app.buttonClearAllCache" : "GyorsÃtótár törlése", |
146 | "settings.app.buttonInstallUpdate" : "ÚjraindÃtás és frissÃtések telepÃtése", | 199 | "settings.app.buttonInstallUpdate" : "ÚjraindÃtás és frissÃtések telepÃtése", |
147 | "settings.app.buttonSearchForUpdate" : "FrissÃtések keresése", | 200 | "settings.app.buttonSearchForUpdate" : "FrissÃtések keresése", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Csatlakozz a Sötét Oldalhoz", | 206 | "settings.app.form.darkMode" : "Csatlakozz a Sötét Oldalhoz", |
154 | "settings.app.form.enableGPUAcceleration" : "Hardveres gyorsÃtás engedélyezése", | 207 | "settings.app.form.enableGPUAcceleration" : "Hardveres gyorsÃtás engedélyezése", |
155 | "settings.app.form.enableSpellchecking" : "HelyesÃrás-ellenÅ‘rzés engedélyezése", | 208 | "settings.app.form.enableSpellchecking" : "HelyesÃrás-ellenÅ‘rzés engedélyezése", |
156 | "settings.app.form.enableSystemTray" : "Ferdi mutatása a tálcán", | 209 | "settings.app.form.enableSystemTray" : "Franz mutatása a tálcán", |
210 | "settings.app.form.enableTodos" : "Franz Tennivalók bekapcsolása", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Nyelv", | 212 | "settings.app.form.language" : "Nyelv", |
158 | "settings.app.form.minimizeToSystemTray" : "Ferdi kicsinyÃtése a tálcára", | 213 | "settings.app.form.minimizeToSystemTray" : "Ferdi kicsinyÃtése a tálcára", |
159 | "settings.app.form.runInBackground" : "Ferdi fusson a háttérben az ablak bezárásakor", | 214 | "settings.app.form.runInBackground" : "Ferdi fusson a háttérben az ablak bezárásakor", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Szolgáltatásaid", | 237 | "settings.navigation.yourServices" : "Szolgáltatásaid", |
183 | "settings.navigation.yourWorkspaces" : "Munkaterületeid", | 238 | "settings.navigation.yourWorkspaces" : "Munkaterületeid", |
184 | "settings.recipes.all" : "Összes szolgáltatás", | 239 | "settings.recipes.all" : "Összes szolgáltatás", |
185 | "settings.recipes.dev" : "Fejlesztés", | 240 | "settings.recipes.custom" : "Egyéni szolgáltatások", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Egyéni, harmadik féltől származó receptek", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "Az egyéni szolgáltatás hozzáadásához, másoljuk be annak receptjét:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Fejlesztői dokumentáció", | ||
246 | "settings.recipes.customService.openFolder" : "Könyvtár megnyitása", | ||
186 | "settings.recipes.headline" : "Elérhető szolgáltatások", | 247 | "settings.recipes.headline" : "Elérhető szolgáltatások", |
187 | "settings.recipes.missingService" : "Hiányzik egy szolgáltatás?", | 248 | "settings.recipes.missingService" : "Hiányzik egy szolgáltatás?", |
188 | "settings.recipes.mostPopular" : "Legnépszerűbb", | 249 | "settings.recipes.mostPopular" : "Legnépszerűbb", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "A Ferdi Munkaterületek lehetÅ‘vé teszik, hogy összpontosÃts a jelenleg fontos dolgokra. ÃllÃtsd be a különbözÅ‘ szolgáltatáskészleteket és könnyedén válthatsz közöttük bármikor. Te döntöd el, hogy mely szolgáltatásokra van szükséged, mikor és hol, Ãgy segÃthetünk abban, hogy a teljesÃtményed csúcsán maradhass, vagy ha csak akarod, egyszerűen kikapcsold a munkával kapcsolatos dolgokat.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "A Ferdi Munkaterületek lehetÅ‘vé teszik, hogy összpontosÃts a jelenleg fontos dolgokra. ÃllÃtsd be a különbözÅ‘ szolgáltatáskészleteket és könnyedén válthatsz közöttük bármikor. Te döntöd el, hogy mely szolgáltatásokra van szükséged, mikor és hol, Ãgy segÃthetünk abban, hogy a teljesÃtményed csúcsán maradhass, vagy ha csak akarod, egyszerűen kikapcsold a munkával kapcsolatos dolgokat.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Nem sikerült betölteni a munkaterületeket", | 331 | "settings.workspaces.workspacesRequestFailed" : "Nem sikerült betölteni a munkaterületeket", |
271 | "sidebar.addNewService" : "Szolgáltatás hozzáadása", | 332 | "sidebar.addNewService" : "Szolgáltatás hozzáadása", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Munkaterület panel bezárása", | 334 | "sidebar.closeWorkspaceDrawer" : "Munkaterület panel bezárása", |
273 | "sidebar.muteApp" : "ÉrtesÃtések és hangok letiltása", | 335 | "sidebar.muteApp" : "ÉrtesÃtések és hangok letiltása", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Munkaterület panel megnyitása", | 337 | "sidebar.openWorkspaceDrawer" : "Munkaterület panel megnyitása", |
275 | "sidebar.settings" : "BeállÃtások", | 338 | "sidebar.settings" : "BeállÃtások", |
276 | "sidebar.unmuteApp" : "ÉrtesÃtések és hangok engedélyezése", | 339 | "sidebar.unmuteApp" : "ÉrtesÃtések és hangok engedélyezése", |
277 | "signup.company.label" : "Cég", | ||
278 | "signup.email.label" : "Email cÃm", | 340 | "signup.email.label" : "Email cÃm", |
279 | "signup.emailDuplicate" : "Ezzel az e-mail cÃmmel már létezik felhasználó", | 341 | "signup.emailDuplicate" : "Ezzel az e-mail cÃmmel már létezik felhasználó", |
280 | "signup.firstname.label" : "Keresztnév", | 342 | "signup.firstname.label" : "Keresztnév", |
@@ -300,6 +362,12 @@ | |||
300 | "subscription.type.free" : "ingyenes", | 362 | "subscription.type.free" : "ingyenes", |
301 | "subscription.type.month" : "hónap", | 363 | "subscription.type.month" : "hónap", |
302 | "subscription.type.year" : "év", | 364 | "subscription.type.year" : "év", |
365 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", | ||
366 | "subscription.cta.allOptions" : "See all options", | ||
367 | "subscription.cta.choosePlan" : "Choose your plan", | ||
368 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", | ||
369 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", | ||
370 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | ||
303 | "subscriptionPopup.buttonCancel" : "Mégsem", | 371 | "subscriptionPopup.buttonCancel" : "Mégsem", |
304 | "subscriptionPopup.buttonDone" : "Kész", | 372 | "subscriptionPopup.buttonDone" : "Kész", |
305 | "tabs.item.deleteService" : "Szolgáltatás törlése", | 373 | "tabs.item.deleteService" : "Szolgáltatás törlése", |
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index 437be8e5c..bf9200064 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Muat Ulang", | 2 | "app.errorHandler.action" : "Muat Ulang", |
3 | "app.errorHandler.headline" : "Terjadi kesalahan", | 3 | "app.errorHandler.headline" : "Terjadi kesalahan", |
4 | "feature.announcements.changelog.headline" : "Perubahan dalam Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Perubahan dalam Franz {version}", |
5 | "feature.delayApp.action" : "Dapatkan Lisensi Pendukung Franz", | 5 | "feature.delayApp.headline" : "Beli Lisensi Pendukung Franz agar tidak perlu menunggu", |
6 | "feature.delayApp.headline" : "Beli Lisensi Pendukung Ferdi agar tidak perlu menunggu", | 6 | "feature.delayApp.text" : "Franz akan melanjutkan dalam {seconds} detik.", |
7 | "feature.delayApp.text" : "Ferdi akan melanjutkan dalam {seconds} detik.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Dapatkan Lisensi Pendukung Ferdi", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Tingkatkan akun", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Kirim sebagai email", | 13 | "feature.shareFranz.action.email" : "Kirim sebagai email", |
9 | "feature.shareFranz.action.facebook" : "Bagikan di Facebook", | 14 | "feature.shareFranz.action.facebook" : "Bagikan di Facebook", |
10 | "feature.shareFranz.action.twitter" : "Bagikan di Twitter", | 15 | "feature.shareFranz.action.twitter" : "Bagikan di Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi lebih baik bersama!", | 16 | "feature.shareFranz.headline" : "Ferdi lebih baik bersama!", |
12 | "feature.shareFranz.shareText.email" : "Saya telah menambahkan layanan {count} ke Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan co di www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "Saya telah menambahkan layanan {count} ke Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan co di www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "Saya telah menambahkan {count} layanan di Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan lainnya di www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "Saya telah menambahkan {count} layanan di Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan lainnya di www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Beri tahu teman dan kolega Anda betapa hebatnya Ferdi dan bantu kami menyebarkan berita.", | 19 | "feature.shareFranz.text" : "Beri tahu teman dan kolega Anda betapa hebatnya Franz dan bantu kami menyebarkan berita.", |
15 | "global.api.unhealthy" : "Tidak dapat tersambung ke layanan Franz", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Tidak dapat tersambung ke layanan Ferdi", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Anda tidak tersambung ke internet.", | 25 | "global.notConnectedToTheInternet" : "Anda tidak tersambung ke internet.", |
17 | "global.spellchecker.useDefault" : "Gunakan Bawaan Sistem ({default})", | 26 | "global.spellchecker.useDefault" : "Gunakan Bawaan Sistem ({default})", |
18 | "global.spellchecking.autodetect" : "Deteksi bahasa secara otomatis", | 27 | "global.spellchecking.autodetect" : "Deteksi bahasa secara otomatis", |
19 | "global.spellchecking.autodetect.short" : "Otomatis", | 28 | "global.spellchecking.autodetect.short" : "Otomatis", |
20 | "global.spellchecking.language" : "Periksa ejaan", | 29 | "global.spellchecking.language" : "Periksa ejaan", |
21 | "import.headline" : "Impor layanan Ferdi 4 Anda", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Layanan belum didukung di Ferdi 5", | 31 | "import.headline" : "Impor layanan Franz 4 Anda", |
32 | "import.notSupportedHeadline" : "Layanan belum didukung di Franz 5", | ||
23 | "import.skip.label" : "Saya ingin menambahkan layanan secara manual", | 33 | "import.skip.label" : "Saya ingin menambahkan layanan secara manual", |
24 | "import.submit.label" : "Impor layanan", | 34 | "import.submit.label" : "Impor layanan", |
25 | "infobar.buttonChangelog" : "Yang baru", | 35 | "infobar.buttonChangelog" : "Yang baru", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Muat ulang layanan", | 37 | "infobar.buttonReloadServices" : "Muat ulang layanan", |
28 | "infobar.requiredRequestsFailed" : "Gagal memuat layanan dan informasi pengguna", | 38 | "infobar.requiredRequestsFailed" : "Gagal memuat layanan dan informasi pengguna", |
29 | "infobar.servicesUpdated" : "Layanan Anda telah diperbarui", | 39 | "infobar.servicesUpdated" : "Layanan Anda telah diperbarui", |
30 | "infobar.updateAvailable" : "Versi baru Ferdi tersedia.", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Versi baru Franz tersedia.", | ||
31 | "invite.email.label" : "Alamat email", | 42 | "invite.email.label" : "Alamat email", |
32 | "invite.headline.friends" : "Undang 3 teman atau kolega Anda", | 43 | "invite.headline.friends" : "Undang 3 teman atau kolega Anda", |
33 | "invite.name.label" : "Nama", | 44 | "invite.name.label" : "Nama", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "Sesi Anda telah berakhir, silakan masuk kembali.", | 54 | "login.serverLogout" : "Sesi Anda telah berakhir, silakan masuk kembali.", |
44 | "login.submit.label" : "Masuk", | 55 | "login.submit.label" : "Masuk", |
45 | "login.tokenExpired" : "Sesi Anda telah kedaluwarsa, silakan masuk kembali.", | 56 | "login.tokenExpired" : "Sesi Anda telah kedaluwarsa, silakan masuk kembali.", |
46 | "menu.app.about" : "Tentang Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
59 | "menu.app.about" : "Tentang Ferdi", | ||
47 | "menu.app.announcement" : "Yang baru", | 60 | "menu.app.announcement" : "Yang baru", |
48 | "menu.app.checkForUpdates" : "Periksa versi baru", | 61 | "menu.app.checkForUpdates" : "Periksa versi baru", |
49 | "menu.app.hide" : "Sembunyikan", | 62 | "menu.app.hide" : "Sembunyikan", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Berkas", | 81 | "menu.file" : "Berkas", |
69 | "menu.help" : "Bantuan", | 82 | "menu.help" : "Bantuan", |
70 | "menu.help.changelog" : "Log Perubahan", | 83 | "menu.help.changelog" : "Log Perubahan", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Pelajari Lebih Lanjut", | 87 | "menu.help.learnMore" : "Pelajari Lebih Lanjut", |
72 | "menu.help.privacy" : "Pernyataan Privasi", | 88 | "menu.help.privacy" : "Pernyataan Privasi", |
73 | "menu.help.support" : "Dukungan", | 89 | "menu.help.support" : "Dukungan", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Aktifkan layanan sebelumnya", | 92 | "menu.services.activatePreviousService" : "Aktifkan layanan sebelumnya", |
77 | "menu.services.addNewService" : "Tambahkan Layanan Baru...", | 93 | "menu.services.addNewService" : "Tambahkan Layanan Baru...", |
78 | "menu.services.setNextServiceActive" : "Aktifkan layanan berikutnya", | 94 | "menu.services.setNextServiceActive" : "Aktifkan layanan berikutnya", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Tampilan", | 97 | "menu.view" : "Tampilan", |
80 | "menu.view.enterFullScreen" : "Masuk ke Mode Layar Penuh", | 98 | "menu.view.enterFullScreen" : "Masuk ke Mode Layar Penuh", |
81 | "menu.view.exitFullScreen" : "Keluar dari Layar Penuh", | 99 | "menu.view.exitFullScreen" : "Keluar dari Layar Penuh", |
82 | "menu.view.reloadFranz" : "Muat Ulang Franz", | 100 | "menu.view.reloadFranz" : "Muat Ulang Ferdi", |
83 | "menu.view.reloadService" : "Muat ulang Layanan", | 101 | "menu.view.reloadService" : "Muat ulang Layanan", |
84 | "menu.view.resetZoom" : "Ukuran Sebenarnya", | 102 | "menu.view.resetZoom" : "Ukuran Sebenarnya", |
85 | "menu.view.toggleDevTools" : "Aktif\/Nonaktifkan alat pengembang", | 103 | "menu.view.toggleDevTools" : "Aktif\/Nonaktifkan alat pengembang", |
86 | "menu.view.toggleFullScreen" : "Aktif\/Nonaktifkan Layar Penuh", | 104 | "menu.view.toggleFullScreen" : "Aktif\/Nonaktifkan Layar Penuh", |
87 | "menu.view.toggleServiceDevTools" : "Aktif\/Nonaktifkan layanan alat pengembang", | 105 | "menu.view.toggleServiceDevTools" : "Aktif\/Nonaktifkan layanan alat pengembang", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Perbesar", | 107 | "menu.view.zoomIn" : "Perbesar", |
89 | "menu.view.zoomOut" : "Perkecil", | 108 | "menu.view.zoomOut" : "Perkecil", |
90 | "menu.window" : "Jendela", | 109 | "menu.window" : "Jendela", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Kirim", | 122 | "password.submit.label" : "Kirim", |
104 | "password.successInfo" : "Periksa email Anda", | 123 | "password.successInfo" : "Periksa email Anda", |
105 | "premiumFeature.button.upgradeAccount" : "Tingkatkan akun", | 124 | "premiumFeature.button.upgradeAccount" : "Tingkatkan akun", |
106 | "pricing.headline" : "Dukung Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Saya tidak ingin mendukung pengembangan Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Saya ingin mendukung pengembangan Franz", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Pilih paket dukungan Anda", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Ruang kerja", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Muat Ulang {name}", | 152 | "service.crashHandler.action" : "Muat Ulang {name}", |
111 | "service.crashHandler.autoReload" : "Mencoba memulihkan {name} secara otomatis dalam {seconds} detik", | 153 | "service.crashHandler.autoReload" : "Mencoba memulihkan {name} secara otomatis dalam {seconds} detik", |
112 | "service.crashHandler.headline" : "Ya Ampun!", | 154 | "service.crashHandler.headline" : "Ya Ampun!", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "Oh tidak!", | 160 | "service.errorHandler.headline" : "Oh tidak!", |
119 | "service.errorHandler.message" : "Kesalahan", | 161 | "service.errorHandler.message" : "Kesalahan", |
120 | "service.errorHandler.text" : "{name} gagal dimuat", | 162 | "service.errorHandler.text" : "{name} gagal dimuat", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Memuat", | 168 | "service.webviewLoader.loading" : "Memuat", |
122 | "services.getStarted" : "Memulai", | 169 | "services.getStarted" : "Memulai", |
123 | "services.welcome" : "Selamat datang di Franz", | 170 | "services.welcome" : "Selamat datang di Ferdi", |
124 | "settings.account.account.editButton" : "Edit akun", | 171 | "settings.account.account.editButton" : "Edit akun", |
125 | "settings.account.accountType.basic" : "Akun Dasar", | 172 | "settings.account.accountType.basic" : "Akun Dasar", |
126 | "settings.account.accountType.premium" : "Akun Pendukung Premium", | 173 | "settings.account.accountType.premium" : "Akun Pendukung Premium", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Ubah sandi", | 182 | "settings.account.headlinePassword" : "Ubah sandi", |
136 | "settings.account.headlineProfile" : "Perbarui profil", | 183 | "settings.account.headlineProfile" : "Perbarui profil", |
137 | "settings.account.headlineSubscription" : "Langganan Anda", | 184 | "settings.account.headlineSubscription" : "Langganan Anda", |
138 | "settings.account.headlineUpgrade" : "Tingkatkan akun Anda & dukung Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Unduh", | 187 | "settings.account.invoiceDownload" : "Unduh", |
140 | "settings.account.manageSubscription.label" : "Kelola langganan Anda", | 188 | "settings.account.manageSubscription.label" : "Kelola langganan Anda", |
141 | "settings.account.successInfo" : "Perubahan Anda telah disimpan", | 189 | "settings.account.successInfo" : "Perubahan Anda telah disimpan", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Coba lagi", | 193 | "settings.account.tryReloadServices" : "Coba lagi", |
143 | "settings.account.tryReloadUserInfoRequest" : "Coba lagi", | 194 | "settings.account.tryReloadUserInfoRequest" : "Coba lagi", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Gagal memuat informasi pengguna", | 196 | "settings.account.userInfoRequestFailed" : "Gagal memuat informasi pengguna", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Bersihkan singgahan", | 198 | "settings.app.buttonClearAllCache" : "Bersihkan singgahan", |
146 | "settings.app.buttonInstallUpdate" : "Mulai ulang dan instal versi baru", | 199 | "settings.app.buttonInstallUpdate" : "Mulai ulang dan instal versi baru", |
147 | "settings.app.buttonSearchForUpdate" : "Periksa pembaruan", | 200 | "settings.app.buttonSearchForUpdate" : "Periksa pembaruan", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Sisi Kelam menunggu Anda (Mode Gelap)", | 206 | "settings.app.form.darkMode" : "Sisi Kelam menunggu Anda (Mode Gelap)", |
154 | "settings.app.form.enableGPUAcceleration" : "Aktifkan Akselerasi GPU", | 207 | "settings.app.form.enableGPUAcceleration" : "Aktifkan Akselerasi GPU", |
155 | "settings.app.form.enableSpellchecking" : "Aktifkan pemeriksaan ejaan", | 208 | "settings.app.form.enableSpellchecking" : "Aktifkan pemeriksaan ejaan", |
156 | "settings.app.form.enableSystemTray" : "Tampilkan Ferdi di baki sistem", | 209 | "settings.app.form.enableSystemTray" : "Tampilkan Franz di baki sistem", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Bahasa", | 212 | "settings.app.form.language" : "Bahasa", |
158 | "settings.app.form.minimizeToSystemTray" : "Perkecil Ferdi ke baki sistem", | 213 | "settings.app.form.minimizeToSystemTray" : "Perkecil Ferdi ke baki sistem", |
159 | "settings.app.form.runInBackground" : "Tetap jalankan Ferdi di latar belakang saat menutup jendela", | 214 | "settings.app.form.runInBackground" : "Tetap jalankan Ferdi di latar belakang saat menutup jendela", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Bantu kami menerjemahkan Ferdi ke bahasa Anda.", | 226 | "settings.app.translationHelp" : "Bantu kami menerjemahkan Ferdi ke bahasa Anda.", |
172 | "settings.app.updateStatusAvailable" : "Versi baru tersedia, mengunduh...", | 227 | "settings.app.updateStatusAvailable" : "Versi baru tersedia, mengunduh...", |
173 | "settings.app.updateStatusSearching" : "Sedang mencari versi baru", | 228 | "settings.app.updateStatusSearching" : "Sedang mencari versi baru", |
174 | "settings.app.updateStatusUpToDate" : "Anda sedang menggunakan versi terbaru Franz", | 229 | "settings.app.updateStatusUpToDate" : "Anda sedang menggunakan versi terbaru Ferdi", |
175 | "settings.invite.headline" : "Undang Teman", | 230 | "settings.invite.headline" : "Undang Teman", |
176 | "settings.navigation.account" : "Akun", | 231 | "settings.navigation.account" : "Akun", |
177 | "settings.navigation.availableServices" : "Layanan tersedia", | 232 | "settings.navigation.availableServices" : "Layanan tersedia", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Layanan Anda", | 237 | "settings.navigation.yourServices" : "Layanan Anda", |
183 | "settings.navigation.yourWorkspaces" : "Ruang kerja Anda", | 238 | "settings.navigation.yourWorkspaces" : "Ruang kerja Anda", |
184 | "settings.recipes.all" : "Semua layanan", | 239 | "settings.recipes.all" : "Semua layanan", |
185 | "settings.recipes.dev" : "Pengembangan", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Layanan tersedia", | 247 | "settings.recipes.headline" : "Layanan tersedia", |
187 | "settings.recipes.missingService" : "Layanan tidak tersedia?", | 248 | "settings.recipes.missingService" : "Layanan tidak tersedia?", |
188 | "settings.recipes.mostPopular" : "Terpopuler", | 249 | "settings.recipes.mostPopular" : "Terpopuler", |
@@ -265,16 +326,17 @@ | |||
265 | "settings.workspaces.noWorkspacesAdded" : "Anda belum menambahkan ruang kerja.", | 326 | "settings.workspaces.noWorkspacesAdded" : "Anda belum menambahkan ruang kerja.", |
266 | "settings.workspaces.tryReloadWorkspaces" : "Coba lagi", | 327 | "settings.workspaces.tryReloadWorkspaces" : "Coba lagi", |
267 | "settings.workspaces.updatedInfo" : "Perubahan Anda telah disimpan", | 328 | "settings.workspaces.updatedInfo" : "Perubahan Anda telah disimpan", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Sedikit Namun Banyak: Memperkenalkan Ruang Kerja Franz", | 329 | "settings.workspaces.workspaceFeatureHeadline" : "Sedikit Namun Banyak: Memperkenalkan Ruang Kerja Ferdi", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Ruang Kerja Ferdi dapat digunakan untuk tetap fokus pada hal penting saat ini. Siapkan sekelompok layanan yang berbeda dan dengan mudah beralih ke yang lain. Anda yang memutuskan layanan mana yang Anda perlukan dan kapan, agar kami bisa membantu Anda tetap berada di garis depan - atau dengan mudah mengakhiri hari kerja kapan saja Anda inginkan.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ruang Kerja Ferdi dapat digunakan untuk tetap fokus pada hal penting saat ini. Siapkan sekelompok layanan yang berbeda dan dengan mudah beralih ke yang lain. Anda yang memutuskan layanan mana yang Anda perlukan dan kapan, agar kami bisa membantu Anda tetap berada di garis depan - atau dengan mudah mengakhiri hari kerja kapan saja Anda inginkan.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Tidak dapat memuat ruang kerja Anda", | 331 | "settings.workspaces.workspacesRequestFailed" : "Tidak dapat memuat ruang kerja Anda", |
271 | "sidebar.addNewService" : "Tambahkan layanan baru", | 332 | "sidebar.addNewService" : "Tambahkan layanan baru", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Tutup laci ruang kerja", | 334 | "sidebar.closeWorkspaceDrawer" : "Tutup laci ruang kerja", |
273 | "sidebar.muteApp" : "Nonaktifkan pemberitahuan & audio", | 335 | "sidebar.muteApp" : "Nonaktifkan pemberitahuan & audio", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Buka laci ruang kerja", | 337 | "sidebar.openWorkspaceDrawer" : "Buka laci ruang kerja", |
275 | "sidebar.settings" : "Pengaturan", | 338 | "sidebar.settings" : "Pengaturan", |
276 | "sidebar.unmuteApp" : "Aktifkan pemberitahuan", | 339 | "sidebar.unmuteApp" : "Aktifkan pemberitahuan", |
277 | "signup.company.label" : "Perusahaan", | ||
278 | "signup.email.label" : "Alamat email", | 340 | "signup.email.label" : "Alamat email", |
279 | "signup.emailDuplicate" : "Pengguna dengan alamat email ini sudah ada", | 341 | "signup.emailDuplicate" : "Pengguna dengan alamat email ini sudah ada", |
280 | "signup.firstname.label" : "Nama Depan", | 342 | "signup.firstname.label" : "Nama Depan", |
@@ -286,20 +348,12 @@ | |||
286 | "signup.link.login" : "Sudah punya akun, masuk?", | 348 | "signup.link.login" : "Sudah punya akun, masuk?", |
287 | "signup.password.label" : "Sandi", | 349 | "signup.password.label" : "Sandi", |
288 | "signup.submit.label" : "Buat akun", | 350 | "signup.submit.label" : "Buat akun", |
289 | "subscription.euTaxInfo" : "Warga UE: pajak penjualan lokal mungkin berlaku", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Tanpa iklan, selamanya!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "segera hadir", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "Tanpa menunggu dan ditanya untuk meningkatkan lisensi", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Integrasi layanan hosted, misalnya Mattermost", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Dukungan proksi untuk layanan", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Dukungan pengecek ejaan", | ||
296 | "subscription.features.workspaces" : "Kelola layanan Anda dalam ruang kerja", | ||
297 | "subscription.includedFeatures" : "Ferdi Premium Supporter Account berbayar menyertakan", | ||
298 | "subscription.paymentSessionError" : "Tidak bisa menginisialisasi formulir pembayaran", | ||
299 | "subscription.submit.label" : "Saya ingin mendukung pengembangan Franz", | ||
300 | "subscription.type.free" : "gratis", | ||
301 | "subscription.type.month" : "bulan", | ||
302 | "subscription.type.year" : "tahun", | ||
303 | "subscriptionPopup.buttonCancel" : "Batalkan", | 357 | "subscriptionPopup.buttonCancel" : "Batalkan", |
304 | "subscriptionPopup.buttonDone" : "Selesai", | 358 | "subscriptionPopup.buttonDone" : "Selesai", |
305 | "tabs.item.deleteService" : "Hapus layanan", | 359 | "tabs.item.deleteService" : "Hapus layanan", |
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index 8492193fd..de43a10e0 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Ricarica", | 2 | "app.errorHandler.action" : "Ricarica", |
3 | "app.errorHandler.headline" : "Qualcosa è andato storto", | 3 | "app.errorHandler.headline" : "Qualcosa è andato storto", |
4 | "feature.announcements.changelog.headline" : "Modifiche in Ferdi {Version}", | 4 | "feature.announcements.changelog.headline" : "Modifiche in Franz {Version}", |
5 | "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", |
6 | "feature.delayApp.headline" : "Per favore, compra una Licenza Supporter di Ferdi per saltare l'attesa", | 6 | "feature.delayApp.text" : "Franz continuerà tra {seconds} secondi.", |
7 | "feature.delayApp.text" : "Ferdi continuerà tra {seconds} secondi.", | 7 | "feature.delayApp.trial.action" : "Sì, voglio la prova gratuita di 14 giorni di Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Attiva la prova gratuita di Franz Professional", | ||
9 | "feature.delayApp.trial.headline" : "Ottieni la prova gratuita per 14 giorni di Franz Professional e salta la coda", | ||
10 | "feature.delayApp.upgrade.action" : "Ricevi una Licenza Supporter di Franz", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Effettua l'upgrade del tuo account", | ||
12 | "feature.serviceLimit.limitReached" : "Hai aggiunto {amount} su {limit} servizi che sono inclusi nel tuo piano. Per favore potenzia il tuo account per aggiungere più servizi.", | ||
8 | "feature.shareFranz.action.email" : "Manda come email", | 13 | "feature.shareFranz.action.email" : "Manda come email", |
9 | "feature.shareFranz.action.facebook" : "Condividi su Facebook", | 14 | "feature.shareFranz.action.facebook" : "Condividi su Facebook", |
10 | "feature.shareFranz.action.twitter" : "Condividi su Twitter", | 15 | "feature.shareFranz.action.twitter" : "Condividi su Twitter", |
11 | "feature.shareFranz.headline" : "Franze è migliore insieme!", | 16 | "feature.shareFranz.headline" : "Franze è migliore insieme!", |
12 | "feature.shareFranz.shareText.email" : "Ho aggiunto {count} nuovi servizi a Franz! Scarica ora l'app gratuita per WhatsApp, Messenger, Slack, Skype e altri all'indirizzo www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "Ho aggiunto {count} nuovi servizi a Franz! Scarica ora l'app gratuita per WhatsApp, Messenger, Slack, Skype e altri all'indirizzo www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "Ho aggiunto {count} nuovi servizi a Franz! Scarica ora l’app gratuita per WhatsApp, Messenger, Slack, Skype e altri all’indirizzo www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "Ho aggiunto {count} nuovi servizi a Franz! Scarica ora l’app gratuita per WhatsApp, Messenger, Slack, Skype e altri all’indirizzo www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Di’ ai tuoi amici e colleghi quanto Ferdi è fantastico e aiutaci a diffondere la parola.", | 19 | "feature.shareFranz.text" : "Di’ ai tuoi amici e colleghi quanto Franz è fantastico e aiutaci a diffondere la parola.", |
20 | "feature.todos.premium.info" : "Le attività Franz sono ora disponibili agli utenti premium!", | ||
21 | "feature.todos.premium.rollout" : "Chiunque altro dovrà aspettare un po' di più.", | ||
22 | "feature.todos.premium.upgrade" : "Potenzia l'Account", | ||
15 | "global.api.unhealthy" : "Impossibile connettersi ai servizi online di Franz", | 23 | "global.api.unhealthy" : "Impossibile connettersi ai servizi online di Franz", |
24 | "global.franzProRequired" : "Richiesto Franz Professional", | ||
16 | "global.notConnectedToTheInternet" : "Non sei connesso a Internet.", | 25 | "global.notConnectedToTheInternet" : "Non sei connesso a Internet.", |
17 | "global.spellchecker.useDefault" : "Usa le impostazioni predefinite di sistema ({default})", | 26 | "global.spellchecker.useDefault" : "Usa le impostazioni predefinite di sistema ({default})", |
18 | "global.spellchecking.autodetect" : "Rileva automaticamente la lingua", | 27 | "global.spellchecking.autodetect" : "Rileva automaticamente la lingua", |
19 | "global.spellchecking.autodetect.short" : "Automatico", | 28 | "global.spellchecking.autodetect.short" : "Automatico", |
20 | "global.spellchecking.language" : "Lingua per controllo ortografico", | 29 | "global.spellchecking.language" : "Lingua per controllo ortografico", |
21 | "import.headline" : "Importa i servizi di Ferdi 4", | 30 | "global.upgradeButton.upgradeToPro" : "Aggiorna a Franz Professional", |
22 | "import.notSupportedHeadline" : "Servizi non ancora supportati in Ferdi 5", | 31 | "import.headline" : "Importa i servizi di Franz 4", |
32 | "import.notSupportedHeadline" : "Servizi non ancora supportati in Franz 5", | ||
23 | "import.skip.label" : "Voglio aggiungere i servizi manualmente", | 33 | "import.skip.label" : "Voglio aggiungere i servizi manualmente", |
24 | "import.submit.label" : "Importa servizi", | 34 | "import.submit.label" : "Importa servizi", |
25 | "infobar.buttonChangelog" : "Cosa c'è di nuovo?", | 35 | "infobar.buttonChangelog" : "Cosa c'è di nuovo?", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "Ricarica servizi", | 37 | "infobar.buttonReloadServices" : "Ricarica servizi", |
28 | "infobar.requiredRequestsFailed" : "Impossibile caricare i servizi e le informazioni dell'utente", | 38 | "infobar.requiredRequestsFailed" : "Impossibile caricare i servizi e le informazioni dell'utente", |
29 | "infobar.servicesUpdated" : "I tuoi servizi sono stati aggiornati.", | 39 | "infobar.servicesUpdated" : "I tuoi servizi sono stati aggiornati.", |
40 | "infobar.trialActivated" : "La tua prova è stata attivata con successo. Buona chat!", | ||
30 | "infobar.updateAvailable" : "È disponibile un nuovo aggiornamento di Franz.", | 41 | "infobar.updateAvailable" : "È disponibile un nuovo aggiornamento di Franz.", |
31 | "invite.email.label" : "Indirizzo email", | 42 | "invite.email.label" : "Indirizzo email", |
32 | "invite.headline.friends" : "Invita 3 dei tuoi amici o colleghi", | 43 | "invite.headline.friends" : "Invita 3 dei tuoi amici o colleghi", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "La tua sessione è scaduta, per favore accedi di nuovo.", | 54 | "login.serverLogout" : "La tua sessione è scaduta, per favore accedi di nuovo.", |
44 | "login.submit.label" : "Accedi", | 55 | "login.submit.label" : "Accedi", |
45 | "login.tokenExpired" : "La tua sessione è scaduta, per favore accedi di nuovo.", | 56 | "login.tokenExpired" : "La tua sessione è scaduta, per favore accedi di nuovo.", |
57 | "menu.Todoss.closeTodosDrawer" : "Chiudi il cassetto delle attività ", | ||
58 | "menu.Todoss.openTodosDrawer" : "Apri il cassetto delle attività ", | ||
46 | "menu.app.about" : "Info su Franz", | 59 | "menu.app.about" : "Info su Franz", |
47 | "menu.app.announcement" : "Cosa c'è di nuovo?", | 60 | "menu.app.announcement" : "Cosa c'è di nuovo?", |
48 | "menu.app.checkForUpdates" : "Controlla aggiornamenti", | 61 | "menu.app.checkForUpdates" : "Controlla aggiornamenti", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "File", | 81 | "menu.file" : "File", |
69 | "menu.help" : "Aiuto", | 82 | "menu.help" : "Aiuto", |
70 | "menu.help.changelog" : "Changelog", | 83 | "menu.help.changelog" : "Changelog", |
84 | "menu.help.debugInfo" : "Copia informazioni di debug", | ||
85 | "menu.help.debugInfoCopiedBody" : "Le tue informazioni di debug sono state copiate nella tua clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Informazioni di debug di Franz", | ||
71 | "menu.help.learnMore" : "Maggiori Informazioni", | 87 | "menu.help.learnMore" : "Maggiori Informazioni", |
72 | "menu.help.privacy" : "Dichiarazione della Privacy", | 88 | "menu.help.privacy" : "Dichiarazione della Privacy", |
73 | "menu.help.support" : "Supporto", | 89 | "menu.help.support" : "Supporto", |
@@ -76,6 +92,8 @@ | |||
76 | "menu.services.activatePreviousService" : "Attiva servizio precedente", | 92 | "menu.services.activatePreviousService" : "Attiva servizio precedente", |
77 | "menu.services.addNewService" : "Aggiungi Nuovo Servizio...", | 93 | "menu.services.addNewService" : "Aggiungi Nuovo Servizio...", |
78 | "menu.services.setNextServiceActive" : "Attiva servizio seguente", | 94 | "menu.services.setNextServiceActive" : "Attiva servizio seguente", |
95 | "menu.todos" : "Attività ", | ||
96 | "menu.todos.enableTodos" : "Abilita attività ", | ||
79 | "menu.view" : "Visualizza", | 97 | "menu.view" : "Visualizza", |
80 | "menu.view.enterFullScreen" : "Visualizza a Schermo Intero", | 98 | "menu.view.enterFullScreen" : "Visualizza a Schermo Intero", |
81 | "menu.view.exitFullScreen" : "Esci da Schermo Intero", | 99 | "menu.view.exitFullScreen" : "Esci da Schermo Intero", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "Attiva\/Disattiva Strumenti Sviluppo", | 103 | "menu.view.toggleDevTools" : "Attiva\/Disattiva Strumenti Sviluppo", |
86 | "menu.view.toggleFullScreen" : "Attiva\/Disattiva Schermo Intero", | 104 | "menu.view.toggleFullScreen" : "Attiva\/Disattiva Schermo Intero", |
87 | "menu.view.toggleServiceDevTools" : "Attiva\/Disattiva Strumenti per Sviluppatori di Servizi", | 105 | "menu.view.toggleServiceDevTools" : "Attiva\/Disattiva Strumenti per Sviluppatori di Servizi", |
106 | "menu.view.toggleTodosDevTools" : "Attiva gli strumenti di sviluppo delle attività ", | ||
88 | "menu.view.zoomIn" : "Aumenta Zoom", | 107 | "menu.view.zoomIn" : "Aumenta Zoom", |
89 | "menu.view.zoomOut" : "Diminuisci Zoom", | 108 | "menu.view.zoomOut" : "Diminuisci Zoom", |
90 | "menu.window" : "Finestra", | 109 | "menu.window" : "Finestra", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Invia", | 122 | "password.submit.label" : "Invia", |
104 | "password.successInfo" : "Per favore controlla la tua email", | 123 | "password.successInfo" : "Per favore controlla la tua email", |
105 | "premiumFeature.button.upgradeAccount" : "Effettua l'upgrade del tuo account", | 124 | "premiumFeature.button.upgradeAccount" : "Effettua l'upgrade del tuo account", |
106 | "pricing.headline" : "Supporta Franz", | 125 | "pricing.features.adFree" : "Senza pubblicità per sempre", |
107 | "pricing.link.skipPayment" : "Non voglio supportare lo sviluppo di Franz", | 126 | "pricing.features.appDelays" : "Nessuna schermata di attesa", |
108 | "pricing.submit.label" : "Voglio supportare lo sviluppo di Franz", | 127 | "pricing.features.customWebsites" : "Aggiungi siti web personalizzati", |
109 | "pricing.support.label" : "Seleziona la modalità di supporto", | 128 | "pricing.features.onPremise" : "Servizi ospitati & on-premise", |
129 | "pricing.features.serviceProxies" : "Proxy di servizio", | ||
130 | "pricing.features.spellchecker" : "Supporto per il correttore ortografico", | ||
131 | "pricing.features.teamManagement" : "Gestione del team", | ||
132 | "pricing.features.thirdPartyServices" : "Installa servizi di terze parti", | ||
133 | "pricing.features.unlimitedServices" : "Aggiungi servizi illimitati", | ||
134 | "pricing.features.workspaces" : "Aree di lavoro", | ||
135 | "pricing.plan.free" : "Franz Gratuito", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personale", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personale Mensile", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personale Annuale", | ||
140 | "pricing.plan.pro" : "Franz Professionale", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professionale Mensile", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professionale Annuale", | ||
143 | "pricing.trial.cta.accept" : "Sì, potenzia il mio account a Franz Professionale", | ||
144 | "pricing.trial.cta.skip" : "Continua su Franz", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professionale", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Ricarica {name}", | 152 | "service.crashHandler.action" : "Ricarica {name}", |
111 | "service.crashHandler.autoReload" : "Tentativo di ripristino automatico di {name} in {seconds} secondi", | 153 | "service.crashHandler.autoReload" : "Tentativo di ripristino automatico di {name} in {seconds} secondi", |
112 | "service.crashHandler.headline" : "Oh no!", | 154 | "service.crashHandler.headline" : "Oh no!", |
@@ -118,6 +160,11 @@ | |||
118 | "service.errorHandler.headline" : "Oh no!", | 160 | "service.errorHandler.headline" : "Oh no!", |
119 | "service.errorHandler.message" : "Errore", | 161 | "service.errorHandler.message" : "Errore", |
120 | "service.errorHandler.text" : "{name} non si è caricato correttamente.", | 162 | "service.errorHandler.text" : "{name} non si è caricato correttamente.", |
163 | "service.restrictedHandler.action" : "Potenzia l'Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Caricamento", | 168 | "service.webviewLoader.loading" : "Caricamento", |
122 | "services.getStarted" : "Iniziamo", | 169 | "services.getStarted" : "Iniziamo", |
123 | "services.welcome" : "Benvenuto su Franz", | 170 | "services.welcome" : "Benvenuto su Franz", |
@@ -135,28 +182,36 @@ | |||
135 | "settings.account.headlinePassword" : "Cambia password", | 182 | "settings.account.headlinePassword" : "Cambia password", |
136 | "settings.account.headlineProfile" : "Aggiorna profilo", | 183 | "settings.account.headlineProfile" : "Aggiorna profilo", |
137 | "settings.account.headlineSubscription" : "Il tuo abbonamento", | 184 | "settings.account.headlineSubscription" : "Il tuo abbonamento", |
138 | "settings.account.headlineUpgrade" : "Aggiorna il tuo account e supporta Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Scarica", | 187 | "settings.account.invoiceDownload" : "Scarica", |
140 | "settings.account.manageSubscription.label" : "Gestisci il tuo abbonamento", | 188 | "settings.account.manageSubscription.label" : "Gestisci il tuo abbonamento", |
141 | "settings.account.successInfo" : "Le tue modifiche sono state salvate", | 189 | "settings.account.successInfo" : "Le tue modifiche sono state salvate", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Prova di nuovo", | 193 | "settings.account.tryReloadServices" : "Prova di nuovo", |
143 | "settings.account.tryReloadUserInfoRequest" : "Riprova", | 194 | "settings.account.tryReloadUserInfoRequest" : "Riprova", |
195 | "settings.account.upgradeToPro.label" : "Aggiorna a Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Impossibile caricare le informazioni dell'utente.", | 196 | "settings.account.userInfoRequestFailed" : "Impossibile caricare le informazioni dell'utente.", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Svuota la cache", | 198 | "settings.app.buttonClearAllCache" : "Svuota la cache", |
146 | "settings.app.buttonInstallUpdate" : "Riavvia e installa l'aggiornamento", | 199 | "settings.app.buttonInstallUpdate" : "Riavvia e installa l'aggiornamento", |
147 | "settings.app.buttonSearchForUpdate" : "Controlla aggiornamenti", | 200 | "settings.app.buttonSearchForUpdate" : "Controlla aggiornamenti", |
148 | "settings.app.cacheInfo" : "Ferdi sta utilizzando {size} di spazio su disco.", | 201 | "settings.app.cacheInfo" : "Franz sta utilizzando {size} di spazio su disco.", |
149 | "settings.app.currentVersion" : "Versione attuale:", | 202 | "settings.app.currentVersion" : "Versione attuale:", |
150 | "settings.app.form.autoLaunchInBackground" : "Apri in background", | 203 | "settings.app.form.autoLaunchInBackground" : "Apri in background", |
151 | "settings.app.form.autoLaunchOnStart" : "Esegui Ferdi all'avvio", | 204 | "settings.app.form.autoLaunchOnStart" : "Esegui Franz all'avvio", |
152 | "settings.app.form.beta" : "Includi versioni beta", | 205 | "settings.app.form.beta" : "Includi versioni beta", |
153 | "settings.app.form.darkMode" : "Unisciti al Lato Oscuro.", | 206 | "settings.app.form.darkMode" : "Unisciti al Lato Oscuro.", |
154 | "settings.app.form.enableGPUAcceleration" : "Attiva Accelerazione GPU", | 207 | "settings.app.form.enableGPUAcceleration" : "Attiva Accelerazione GPU", |
155 | "settings.app.form.enableSpellchecking" : "Attiva controllo ortografico", | 208 | "settings.app.form.enableSpellchecking" : "Attiva controllo ortografico", |
156 | "settings.app.form.enableSystemTray" : "Mostra Ferdi nell'area di notifica", | 209 | "settings.app.form.enableSystemTray" : "Mostra Franz nell'area di notifica", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Lingua", | 212 | "settings.app.form.language" : "Lingua", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimizza Ferdi nell'area di notifica", | 213 | "settings.app.form.minimizeToSystemTray" : "Minimizza Franz nell'area di notifica", |
159 | "settings.app.form.runInBackground" : "Mantieni Ferdi in esecuzione quando chiudi la finestra", | 214 | "settings.app.form.runInBackground" : "Mantieni Franz in esecuzione quando chiudi la finestra", |
160 | "settings.app.form.showDisabledServices" : "Mostra schede servizi disattivati", | 215 | "settings.app.form.showDisabledServices" : "Mostra schede servizi disattivati", |
161 | "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra l'etichetta dei messaggi non letti quando le notifiche sono disattivate", | 216 | "settings.app.form.showMessagesBadgesWhenMuted" : "Mostra l'etichetta dei messaggi non letti quando le notifiche sono disattivate", |
162 | "settings.app.headline" : "Impostazioni", | 217 | "settings.app.headline" : "Impostazioni", |
@@ -168,7 +223,7 @@ | |||
168 | "settings.app.languageDisclaimer" : "Le traduzioni ufficiali sono in Inglese e Tedesco. Tutte le altre lingue sono tradotte dalla community.", | 223 | "settings.app.languageDisclaimer" : "Le traduzioni ufficiali sono in Inglese e Tedesco. Tutte le altre lingue sono tradotte dalla community.", |
169 | "settings.app.restartRequired" : "Le modifiche richiedono un riavvio", | 224 | "settings.app.restartRequired" : "Le modifiche richiedono un riavvio", |
170 | "settings.app.subheadlineCache" : "Cache", | 225 | "settings.app.subheadlineCache" : "Cache", |
171 | "settings.app.translationHelp" : "Aiutaci a tradurre Ferdi nella tua lingua.", | 226 | "settings.app.translationHelp" : "Aiutaci a tradurre Franz nella tua lingua.", |
172 | "settings.app.updateStatusAvailable" : "Aggiornamento disponibile, download in corso...", | 227 | "settings.app.updateStatusAvailable" : "Aggiornamento disponibile, download in corso...", |
173 | "settings.app.updateStatusSearching" : "Ricerca aggiornamenti", | 228 | "settings.app.updateStatusSearching" : "Ricerca aggiornamenti", |
174 | "settings.app.updateStatusUpToDate" : "Stai utilizzando l'ultima versione di Franz", | 229 | "settings.app.updateStatusUpToDate" : "Stai utilizzando l'ultima versione di Franz", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "I tuoi servizi", | 237 | "settings.navigation.yourServices" : "I tuoi servizi", |
183 | "settings.navigation.yourWorkspaces" : "I tuoi workspaces", | 238 | "settings.navigation.yourWorkspaces" : "I tuoi workspaces", |
184 | "settings.recipes.all" : "Tutti i servizi", | 239 | "settings.recipes.all" : "Tutti i servizi", |
185 | "settings.recipes.dev" : "Sviluppo", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Servizi disponibili", | 247 | "settings.recipes.headline" : "Servizi disponibili", |
187 | "settings.recipes.missingService" : "Manca un servizio?", | 248 | "settings.recipes.missingService" : "Manca un servizio?", |
188 | "settings.recipes.mostPopular" : "Più popolari", | 249 | "settings.recipes.mostPopular" : "Più popolari", |
@@ -195,7 +256,7 @@ | |||
195 | "settings.service.form.addServiceHeadline" : "Aggiungi {name}", | 256 | "settings.service.form.addServiceHeadline" : "Aggiungi {name}", |
196 | "settings.service.form.availableServices" : "Servizi disponibili", | 257 | "settings.service.form.availableServices" : "Servizi disponibili", |
197 | "settings.service.form.customUrl" : "Server personalizzato", | 258 | "settings.service.form.customUrl" : "Server personalizzato", |
198 | "settings.service.form.customUrlPremiumInfo" : "Per aggiungere servizi personalizzati, devi avere un account Ferdi Premium Supporter.", | 259 | "settings.service.form.customUrlPremiumInfo" : "Per aggiungere servizi personalizzati, devi avere un account Franz Premium Supporter.", |
199 | "settings.service.form.customUrlUpgradeAccount" : "Aggiorna il tuo account", | 260 | "settings.service.form.customUrlUpgradeAccount" : "Aggiorna il tuo account", |
200 | "settings.service.form.customUrlValidationError" : "Impossibile validare il server personalizzato {name}.", | 261 | "settings.service.form.customUrlValidationError" : "Impossibile validare il server personalizzato {name}.", |
201 | "settings.service.form.deleteButton" : "Elimina servizio", | 262 | "settings.service.form.deleteButton" : "Elimina servizio", |
@@ -221,7 +282,7 @@ | |||
221 | "settings.service.form.proxy.isEnabled" : "Usa un Proxy", | 282 | "settings.service.form.proxy.isEnabled" : "Usa un Proxy", |
222 | "settings.service.form.proxy.password" : "Password (opzionale)", | 283 | "settings.service.form.proxy.password" : "Password (opzionale)", |
223 | "settings.service.form.proxy.port" : "Porta", | 284 | "settings.service.form.proxy.port" : "Porta", |
224 | "settings.service.form.proxy.restartInfo" : "Riavvia Ferdi dopo aver cambiato le impostazioni del proxy.", | 285 | "settings.service.form.proxy.restartInfo" : "Riavvia Franz dopo aver cambiato le impostazioni del proxy.", |
225 | "settings.service.form.proxy.user" : "Utente (opzionale)", | 286 | "settings.service.form.proxy.user" : "Utente (opzionale)", |
226 | "settings.service.form.saveButton" : "Salva servizio", | 287 | "settings.service.form.saveButton" : "Salva servizio", |
227 | "settings.service.form.tabHosted" : "Hosted", | 288 | "settings.service.form.tabHosted" : "Hosted", |
@@ -238,8 +299,8 @@ | |||
238 | "settings.services.tooltip.isMuted" : "Tutti i suoni sono disattivati", | 299 | "settings.services.tooltip.isMuted" : "Tutti i suoni sono disattivati", |
239 | "settings.services.tooltip.notificationsDisabled" : "Le notifiche sono disattivate", | 300 | "settings.services.tooltip.notificationsDisabled" : "Le notifiche sono disattivate", |
240 | "settings.services.updatedInfo" : "Le tue modifiche sono state salvate", | 301 | "settings.services.updatedInfo" : "Le tue modifiche sono state salvate", |
241 | "settings.team.contentHeadline" : "Ferdi per i Teams", | 302 | "settings.team.contentHeadline" : "Franz per i Teams", |
242 | "settings.team.copy" : "Ferdi per i Teams ti da la possibilità di invitare collaboratori al tuo team, invitandoli per email e gestendo la loro iscrizione all'interno delle preferenze del tuo account. Non perdere tempo impostando le iscrizioni di un singolo collaboratore individualmente, dimenticati di fatture multiple e cicli differenti di fatturazione - un team per comandarli tutti!", | 303 | "settings.team.copy" : "Franz per i Teams ti da la possibilità di invitare collaboratori al tuo team, invitandoli per email e gestendo la loro iscrizione all'interno delle preferenze del tuo account. Non perdere tempo impostando le iscrizioni di un singolo collaboratore individualmente, dimenticati di fatture multiple e cicli differenti di fatturazione - un team per comandarli tutti!", |
243 | "settings.team.headline" : "Team", | 304 | "settings.team.headline" : "Team", |
244 | "settings.team.intro" : "Tu e il tuo team usate Franz? Ora puoi gestire le sottoscrizioni Premium per tutti i colleghi, amici e famigliari che vuoi, tutto da un singolo account.", | 305 | "settings.team.intro" : "Tu e il tuo team usate Franz? Ora puoi gestire le sottoscrizioni Premium per tutti i colleghi, amici e famigliari che vuoi, tutto da un singolo account.", |
245 | "settings.team.manageAction" : "Gestisci il tuo Team su meetfranz.com", | 306 | "settings.team.manageAction" : "Gestisci il tuo Team su meetfranz.com", |
@@ -266,40 +327,33 @@ | |||
266 | "settings.workspaces.tryReloadWorkspaces" : "Riprova nuovamente", | 327 | "settings.workspaces.tryReloadWorkspaces" : "Riprova nuovamente", |
267 | "settings.workspaces.updatedInfo" : "Le tue modifiche sono state salvate", | 328 | "settings.workspaces.updatedInfo" : "Le tue modifiche sono state salvate", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Meno è Meglio: I Workspaces di Franz", | 329 | "settings.workspaces.workspaceFeatureHeadline" : "Meno è Meglio: I Workspaces di Franz", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces ti permette di concentrarti su ciò che è importante. Configura diversi insiemi di servizi e passa facilmente da uno all’altro quando vuoi. Decidi di quali servizi hai bisogno quando e dove, così che ti possiamo aiutare a dare sempre il massimo - o semplicemente staccare dal lavoro quando ne hai bisogno.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces ti permette di concentrarti su ciò che è importante. Configura diversi insiemi di servizi e passa facilmente da uno all’altro quando vuoi. Decidi di quali servizi hai bisogno quando e dove, così che ti possiamo aiutare a dare sempre il massimo - o semplicemente staccare dal lavoro quando ne hai bisogno.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Non è possibile caricare i tuoi workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Non è possibile caricare i tuoi workspaces", |
271 | "sidebar.addNewService" : "Aggiungi un nuovo servizio", | 332 | "sidebar.addNewService" : "Aggiungi un nuovo servizio", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Chiudi il menu dei workspace", | 334 | "sidebar.closeWorkspaceDrawer" : "Chiudi il menu dei workspace", |
273 | "sidebar.muteApp" : "Disattiva notifiche e audio", | 335 | "sidebar.muteApp" : "Disattiva notifiche e audio", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Apri il menu dei workspace", | 337 | "sidebar.openWorkspaceDrawer" : "Apri il menu dei workspace", |
275 | "sidebar.settings" : "Impostazioni", | 338 | "sidebar.settings" : "Impostazioni", |
276 | "sidebar.unmuteApp" : "Attiva notifiche e audio", | 339 | "sidebar.unmuteApp" : "Attiva notifiche e audio", |
277 | "signup.company.label" : "Società ", | ||
278 | "signup.email.label" : "Indirizzo email", | 340 | "signup.email.label" : "Indirizzo email", |
279 | "signup.emailDuplicate" : "Esiste già un utente con lo stesso indirizzo email", | 341 | "signup.emailDuplicate" : "Esiste già un utente con lo stesso indirizzo email", |
280 | "signup.firstname.label" : "Nome", | 342 | "signup.firstname.label" : "Nome", |
281 | "signup.headline" : "Iscriviti", | 343 | "signup.headline" : "Iscriviti", |
282 | "signup.lastname.label" : "Cognome", | 344 | "signup.lastname.label" : "Cognome", |
283 | "signup.legal.info" : "Creando un account di Ferdi accetti i ", | 345 | "signup.legal.info" : "Creando un account di Franz accetti i ", |
284 | "signup.legal.privacy" : "Informativa sulla Privacy", | 346 | "signup.legal.privacy" : "Informativa sulla Privacy", |
285 | "signup.legal.terms" : "Termini di Servizio", | 347 | "signup.legal.terms" : "Termini di Servizio", |
286 | "signup.link.login" : "Hai già un account, vuoi accedere?", | 348 | "signup.link.login" : "Hai già un account, vuoi accedere?", |
287 | "signup.password.label" : "Password", | 349 | "signup.password.label" : "Password", |
288 | "signup.submit.label" : "Crea un account", | 350 | "signup.submit.label" : "Crea un account", |
289 | "subscription.euTaxInfo" : "Per i residenti UE: possono essere applicate tasse locali", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Nessuna pubblicità , mai!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "in arrivo", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "L'upgrade della licenza avrà impatti sull'utilizzo dell'App", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Aggiungi servizi on-premise\/hosted come \"Mattermost\"", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Supporto proxy per i servizi", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Supporto per il correttore ortografico", | ||
296 | "subscription.features.workspaces" : "Organizza i tuoi servizi in workspace", | ||
297 | "subscription.includedFeatures" : "L'account a pagamento Ferdi Premium Supporter include", | ||
298 | "subscription.paymentSessionError" : "Impossibile inizializzare il modulo per il pagamento", | ||
299 | "subscription.submit.label" : "Voglio supportare lo sviluppo di Franz", | ||
300 | "subscription.type.free" : "gratis", | ||
301 | "subscription.type.month" : "mese", | ||
302 | "subscription.type.year" : "anno", | ||
303 | "subscriptionPopup.buttonCancel" : "Annulla", | 357 | "subscriptionPopup.buttonCancel" : "Annulla", |
304 | "subscriptionPopup.buttonDone" : "Fatto", | 358 | "subscriptionPopup.buttonDone" : "Fatto", |
305 | "tabs.item.deleteService" : "Elimina servizio", | 359 | "tabs.item.deleteService" : "Elimina servizio", |
@@ -326,7 +380,7 @@ | |||
326 | "workspaceDrawer.premiumCtaButtonLabel" : "Crea il tuo primo workspace", | 380 | "workspaceDrawer.premiumCtaButtonLabel" : "Crea il tuo primo workspace", |
327 | "workspaceDrawer.proFeatureBadge" : "Funzionalità premium", | 381 | "workspaceDrawer.proFeatureBadge" : "Funzionalità premium", |
328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Riattiva l’account premium", | 382 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Riattiva l’account premium", |
329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Ferdi Workspaces ti permette di concentrarti su ciò che è importante. Configura diversi insiemi di servizi e passa facilmente da uno all’altro quando vuoi.<\/p><p>Decidi di quali servizi hai bisogno quando e dove, così che ti possiamo aiutare a dare sempre il massimo - o semplicemente staccare dal lavoro quando ne hai bisogno.<\/p>", | 383 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces ti permette di concentrarti su ciò che è importante. Configura diversi insiemi di servizi e passa facilmente da uno all’altro quando vuoi.<\/p><p>Decidi di quali servizi hai bisogno quando e dove, così che ti possiamo aiutare a dare sempre il massimo - o semplicemente staccare dal lavoro quando ne hai bisogno.<\/p>", |
330 | "workspaceDrawer.workspacesSettingsTooltip" : "Modifica le impostazioni dei workspace", | 384 | "workspaceDrawer.workspacesSettingsTooltip" : "Modifica le impostazioni dei workspace", |
331 | "workspaces.switchingIndicator.switchingTo" : "Passa a " | 385 | "workspaces.switchingIndicator.switchingTo" : "Passa a " |
332 | } | 386 | } |
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 611c1ec80..f6174cbbd 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json | |||
@@ -1,10 +1,15 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "å†èªã¿è¾¼ã¿", | 2 | "app.errorHandler.action" : "å†èªã¿è¾¼ã¿", |
3 | "app.errorHandler.headline" : "é–“é•ãˆã¦ã„る部分ãŒã‚ã‚Šã¾ã™", | 3 | "app.errorHandler.headline" : "é–“é•ãˆã¦ã„る部分ãŒã‚ã‚Šã¾ã™", |
4 | "feature.announcements.changelog.headline" : "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", |
5 | "feature.delayApp.action" : "Franzサãƒãƒ¼ã‚¿ãƒ¼ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’購入ã™ã‚‹", | 5 | "feature.delayApp.headline" : "Franzã‚’ã™ãã«èµ·å‹•ã™ã‚‹ã«ã¯ã€Franz サãƒãƒ¼ã‚¿ãƒ¼ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’購入ã—ã¦ãã ã•ã„。", |
6 | "feature.delayApp.headline" : "Franzã‚’ã™ãã«èµ·å‹•ã™ã‚‹ã«ã¯ã€Ferdi サãƒãƒ¼ã‚¿ãƒ¼ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’購入ã—ã¦ãã ã•ã„。", | ||
7 | "feature.delayApp.text" : "Franzã¯ã‚ã¨{seconds}秒後ã«èµ·å‹•ã—ã¾ã™ã€‚", | 6 | "feature.delayApp.text" : "Franzã¯ã‚ã¨{seconds}秒後ã«èµ·å‹•ã—ã¾ã™ã€‚", |
7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", | ||
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Franzサãƒãƒ¼ã‚¿ãƒ¼ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’購入ã™ã‚‹", | ||
11 | "feature.delayApp.upgrade.actionShort" : "アカウントをアップグレード", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "メールã§é€ä¿¡", | 13 | "feature.shareFranz.action.email" : "メールã§é€ä¿¡", |
9 | "feature.shareFranz.action.facebook" : "Facebookã§ã‚·ã‚§ã‚¢", | 14 | "feature.shareFranz.action.facebook" : "Facebookã§ã‚·ã‚§ã‚¢", |
10 | "feature.shareFranz.action.twitter" : "Twitterã§ã‚·ã‚§ã‚¢", | 15 | "feature.shareFranz.action.twitter" : "Twitterã§ã‚·ã‚§ã‚¢", |
@@ -12,14 +17,19 @@ | |||
12 | "feature.shareFranz.shareText.email" : "Franzã§{count}個ã®ã‚µãƒ¼ãƒ“スを使ã£ã¦ã„ã¾ã™ï¼ã‚ãªãŸã‚‚Gmail, Messenger, Slack, Skypeãªã©ã®ã‚µãƒ¼ãƒ“スをFranzã§ä¸€å…ƒç®¡ç†ã—ã¾ã—ょã†ï¼ www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "Franzã§{count}個ã®ã‚µãƒ¼ãƒ“スを使ã£ã¦ã„ã¾ã™ï¼ã‚ãªãŸã‚‚Gmail, Messenger, Slack, Skypeãªã©ã®ã‚µãƒ¼ãƒ“スをFranzã§ä¸€å…ƒç®¡ç†ã—ã¾ã—ょã†ï¼ www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "ã‚ãªãŸã®ãŠå‹é”ã«Franzã‚’æ•™ãˆã¦ã‚ã’ã¾ã—ょã†ã€‚", | 19 | "feature.shareFranz.text" : "ã‚ãªãŸã®ãŠå‹é”ã«Franzã‚’æ•™ãˆã¦ã‚ã’ã¾ã—ょã†ã€‚", |
20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", | ||
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
15 | "global.api.unhealthy" : "Franzã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‚µãƒ¼ãƒ“スã«æŽ¥ç¶šã§ãã¾ã›ã‚“。", | 23 | "global.api.unhealthy" : "Franzã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‚µãƒ¼ãƒ“スã«æŽ¥ç¶šã§ãã¾ã›ã‚“。", |
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "インターãƒãƒƒãƒˆã«æŽ¥ç¶šã•ã‚Œã¦ã„ã¾ã›ã‚“。", | 25 | "global.notConnectedToTheInternet" : "インターãƒãƒƒãƒˆã«æŽ¥ç¶šã•ã‚Œã¦ã„ã¾ã›ã‚“。", |
17 | "global.spellchecker.useDefault" : " {default}ã‚’åˆæœŸè¨å®šã§ä½¿ç”¨ã—ã¦ãã ã•ã„", | 26 | "global.spellchecker.useDefault" : " {default}ã‚’åˆæœŸè¨å®šã§ä½¿ç”¨ã—ã¦ãã ã•ã„", |
18 | "global.spellchecking.autodetect" : "言語を自動的ã«æ¤œå‡ºã™ã‚‹", | 27 | "global.spellchecking.autodetect" : "言語を自動的ã«æ¤œå‡ºã™ã‚‹", |
19 | "global.spellchecking.autodetect.short" : "自動", | 28 | "global.spellchecking.autodetect.short" : "自動", |
20 | "global.spellchecking.language" : "スペルãƒã‚§ãƒƒã‚¯ã™ã‚‹è¨€èªž", | 29 | "global.spellchecking.language" : "スペルãƒã‚§ãƒƒã‚¯ã™ã‚‹è¨€èªž", |
21 | "import.headline" : "Ferdi 4ã®ã‚µãƒ¼ãƒ“スをインãƒãƒ¼ãƒˆã—ã¦ä¸‹ã•ã„", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Ferdi 5ã§ã¯ã“ã®ã‚µãƒ¼ãƒ“スã«ã¾ã 対応ã—ã¦ã„ã¾ã›ã‚“", | 31 | "import.headline" : "Franz 4ã®ã‚µãƒ¼ãƒ“スをインãƒãƒ¼ãƒˆã—ã¦ä¸‹ã•ã„", |
32 | "import.notSupportedHeadline" : "Franz 5ã§ã¯ã“ã®ã‚µãƒ¼ãƒ“スã«ã¾ã 対応ã—ã¦ã„ã¾ã›ã‚“", | ||
23 | "import.skip.label" : "手動ã§ã‚µãƒ¼ãƒ“ã‚¹ã‚’è¿½åŠ ã™ã‚‹", | 33 | "import.skip.label" : "手動ã§ã‚µãƒ¼ãƒ“ã‚¹ã‚’è¿½åŠ ã™ã‚‹", |
24 | "import.submit.label" : "サービスをインãƒãƒ¼ãƒˆã—ã¦ä¸‹ã•ã„", | 34 | "import.submit.label" : "サービスをインãƒãƒ¼ãƒˆã—ã¦ä¸‹ã•ã„", |
25 | "infobar.buttonChangelog" : "æ›´æ–°å±¥æ´ã‚’見る", | 35 | "infobar.buttonChangelog" : "æ›´æ–°å±¥æ´ã‚’見る", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "サービスã®å†èªã¿è¾¼ã¿", | 37 | "infobar.buttonReloadServices" : "サービスã®å†èªã¿è¾¼ã¿", |
28 | "infobar.requiredRequestsFailed" : "サービスã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ±ã‚’èªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ", | 38 | "infobar.requiredRequestsFailed" : "サービスã¨ãƒ¦ãƒ¼ã‚¶ãƒ¼æƒ…å ±ã‚’èªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ", |
29 | "infobar.servicesUpdated" : "サービスãŒæ›´æ–°ã•ã‚Œã¾ã—ãŸã€‚", | 39 | "infobar.servicesUpdated" : "サービスãŒæ›´æ–°ã•ã‚Œã¾ã—ãŸã€‚", |
40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", | ||
30 | "infobar.updateAvailable" : "Franzã®æ›´æ–°ãŒã‚ã‚Šã¾ã™ã€‚", | 41 | "infobar.updateAvailable" : "Franzã®æ›´æ–°ãŒã‚ã‚Šã¾ã™ã€‚", |
31 | "invite.email.label" : "メールアドレス", | 42 | "invite.email.label" : "メールアドレス", |
32 | "invite.headline.friends" : "ã‚ãªãŸã®å‹äººã‚„åŒåƒšã®æ–¹ã‚’3åã¾ã§Franzã«æ‹›å¾…ã§ãã¾ã™", | 43 | "invite.headline.friends" : "ã‚ãªãŸã®å‹äººã‚„åŒåƒšã®æ–¹ã‚’3åã¾ã§Franzã«æ‹›å¾…ã§ãã¾ã™", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "セッションã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ãƒã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦ä¸‹ã•ã„。", | 54 | "login.serverLogout" : "セッションã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ãƒã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦ä¸‹ã•ã„。", |
44 | "login.submit.label" : "サインイン", | 55 | "login.submit.label" : "サインイン", |
45 | "login.tokenExpired" : "セッションã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ãƒã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦ä¸‹ã•ã„。", | 56 | "login.tokenExpired" : "セッションã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ãƒã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦ä¸‹ã•ã„。", |
57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", | ||
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
46 | "menu.app.about" : "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±", | 59 | "menu.app.about" : "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±", |
47 | "menu.app.announcement" : "What's new?", | 60 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "æ›´æ–°ã®ç¢ºèª", | 61 | "menu.app.checkForUpdates" : "æ›´æ–°ã®ç¢ºèª", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "ファイル", | 81 | "menu.file" : "ファイル", |
69 | "menu.help" : "ヘルプ", | 82 | "menu.help" : "ヘルプ", |
70 | "menu.help.changelog" : "æ›´æ–°å±¥æ´", | 83 | "menu.help.changelog" : "æ›´æ–°å±¥æ´", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Franzã«ã¤ã„ã¦", | 87 | "menu.help.learnMore" : "Franzã«ã¤ã„ã¦", |
72 | "menu.help.privacy" : "プライãƒã‚·ãƒ¼ã«ã¤ã„ã¦", | 88 | "menu.help.privacy" : "プライãƒã‚·ãƒ¼ã«ã¤ã„ã¦", |
73 | "menu.help.support" : "サãƒãƒ¼ãƒˆ", | 89 | "menu.help.support" : "サãƒãƒ¼ãƒˆ", |
@@ -76,6 +92,8 @@ | |||
76 | "menu.services.activatePreviousService" : "å‰ã®ã‚µãƒ¼ãƒ“スを有効ã«ã™ã‚‹", | 92 | "menu.services.activatePreviousService" : "å‰ã®ã‚µãƒ¼ãƒ“スを有効ã«ã™ã‚‹", |
77 | "menu.services.addNewService" : "ã‚µãƒ¼ãƒ“ã‚¹ã‚’è¿½åŠ ", | 93 | "menu.services.addNewService" : "ã‚µãƒ¼ãƒ“ã‚¹ã‚’è¿½åŠ ", |
78 | "menu.services.setNextServiceActive" : "次ã®ã‚µãƒ¼ãƒ“スを有効ã«ã™ã‚‹", | 94 | "menu.services.setNextServiceActive" : "次ã®ã‚µãƒ¼ãƒ“スを有効ã«ã™ã‚‹", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "表示", | 97 | "menu.view" : "表示", |
80 | "menu.view.enterFullScreen" : "全画é¢è¡¨ç¤º", | 98 | "menu.view.enterFullScreen" : "全画é¢è¡¨ç¤º", |
81 | "menu.view.exitFullScreen" : "全画é¢è¡¨ç¤ºã‚’終了ã™ã‚‹", | 99 | "menu.view.exitFullScreen" : "全画é¢è¡¨ç¤ºã‚’終了ã™ã‚‹", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "開発者ツールを切り替ãˆ", | 103 | "menu.view.toggleDevTools" : "開発者ツールを切り替ãˆ", |
86 | "menu.view.toggleFullScreen" : "全画é¢è¡¨ç¤ºã®åˆ‡ã‚Šæ›¿ãˆ", | 104 | "menu.view.toggleFullScreen" : "全画é¢è¡¨ç¤ºã®åˆ‡ã‚Šæ›¿ãˆ", |
87 | "menu.view.toggleServiceDevTools" : "サービス開発者ツールを切り替ãˆ", | 105 | "menu.view.toggleServiceDevTools" : "サービス開発者ツールを切り替ãˆ", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "表示を拡大ã™ã‚‹", | 107 | "menu.view.zoomIn" : "表示を拡大ã™ã‚‹", |
89 | "menu.view.zoomOut" : "表示を縮å°ã™ã‚‹", | 108 | "menu.view.zoomOut" : "表示を縮å°ã™ã‚‹", |
90 | "menu.window" : "ウィンドウ", | 109 | "menu.window" : "ウィンドウ", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "é€ä¿¡", | 122 | "password.submit.label" : "é€ä¿¡", |
104 | "password.successInfo" : "メールを確èªã—ã¦ä¸‹ã•ã„", | 123 | "password.successInfo" : "メールを確èªã—ã¦ä¸‹ã•ã„", |
105 | "premiumFeature.button.upgradeAccount" : "アカウントをアップグレード", | 124 | "premiumFeature.button.upgradeAccount" : "アカウントをアップグレード", |
106 | "pricing.headline" : "Franzを支æ´ã™ã‚‹", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Franzã®é–‹ç™ºã‚’支æ´ã—ãŸããªã„。", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Franzã®é–‹ç™ºã‚’支æ´ã—ãŸã„。", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "プランをé¸æŠžã—ã¦ãã ã•ã„", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "{name}ã‚’å†èªã¿è¾¼ã¿", | 152 | "service.crashHandler.action" : "{name}ã‚’å†èªã¿è¾¼ã¿", |
111 | "service.crashHandler.autoReload" : "{seconds}秒後ã€è‡ªå‹•çš„ã«{name}ã®å¾©æ—§ã‚’試ã¿ã¾ã™", | 153 | "service.crashHandler.autoReload" : "{seconds}秒後ã€è‡ªå‹•çš„ã«{name}ã®å¾©æ—§ã‚’試ã¿ã¾ã™", |
112 | "service.crashHandler.headline" : "ã—ã¾ã£ãŸï¼", | 154 | "service.crashHandler.headline" : "ã—ã¾ã£ãŸï¼", |
@@ -118,6 +160,11 @@ | |||
118 | "service.errorHandler.headline" : "ã—ã¾ã£ãŸï¼", | 160 | "service.errorHandler.headline" : "ã—ã¾ã£ãŸï¼", |
119 | "service.errorHandler.message" : "エラー", | 161 | "service.errorHandler.message" : "エラー", |
120 | "service.errorHandler.text" : "{name} ã¯ãƒãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸ", | 162 | "service.errorHandler.text" : "{name} ã¯ãƒãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸ", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Loading", | 168 | "service.webviewLoader.loading" : "Loading", |
122 | "services.getStarted" : "ã¯ã˜ã‚ã‚‹", | 169 | "services.getStarted" : "ã¯ã˜ã‚ã‚‹", |
123 | "services.welcome" : "Franzã«ã‚ˆã†ã“ã", | 170 | "services.welcome" : "Franzã«ã‚ˆã†ã“ã", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "パスワードã®å¤‰æ›´", | 182 | "settings.account.headlinePassword" : "パスワードã®å¤‰æ›´", |
136 | "settings.account.headlineProfile" : "プãƒãƒ•ã‚£ãƒ¼ãƒ«ã®æ›´æ–°", | 183 | "settings.account.headlineProfile" : "プãƒãƒ•ã‚£ãƒ¼ãƒ«ã®æ›´æ–°", |
137 | "settings.account.headlineSubscription" : "ã‚ãªãŸã®ç™»éŒ²å†…容", | 184 | "settings.account.headlineSubscription" : "ã‚ãªãŸã®ç™»éŒ²å†…容", |
138 | "settings.account.headlineUpgrade" : "アカウントをアップグレードã—ã€Franzを支æ´ã™ã‚‹", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "ダウンãƒãƒ¼ãƒ‰", | 187 | "settings.account.invoiceDownload" : "ダウンãƒãƒ¼ãƒ‰", |
140 | "settings.account.manageSubscription.label" : "サブスクリプションã®ç®¡ç†", | 188 | "settings.account.manageSubscription.label" : "サブスクリプションã®ç®¡ç†", |
141 | "settings.account.successInfo" : "変更内容ãŒä¿å˜ã•ã‚Œã¾ã—ãŸ", | 189 | "settings.account.successInfo" : "変更内容ãŒä¿å˜ã•ã‚Œã¾ã—ãŸ", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "ã‚‚ã†ä¸€åº¦è©¦ã™", | 193 | "settings.account.tryReloadServices" : "ã‚‚ã†ä¸€åº¦è©¦ã™", |
143 | "settings.account.tryReloadUserInfoRequest" : "ã‚‚ã†ä¸€åº¦è©¦ã™", | 194 | "settings.account.tryReloadUserInfoRequest" : "ã‚‚ã†ä¸€åº¦è©¦ã™", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "ãƒ¦ãƒ¼ã‚¶æƒ…å ±ã‚’èªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ", | 196 | "settings.account.userInfoRequestFailed" : "ãƒ¦ãƒ¼ã‚¶æƒ…å ±ã‚’èªã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "ã‚ャッシュを消去ã™ã‚‹", | 198 | "settings.app.buttonClearAllCache" : "ã‚ャッシュを消去ã™ã‚‹", |
146 | "settings.app.buttonInstallUpdate" : "å†èµ·å‹•ã—ã¦æ›´æ–°ã‚’インストールã™ã‚‹", | 199 | "settings.app.buttonInstallUpdate" : "å†èµ·å‹•ã—ã¦æ›´æ–°ã‚’インストールã™ã‚‹", |
147 | "settings.app.buttonSearchForUpdate" : "æ›´æ–°ã®ç¢ºèª", | 200 | "settings.app.buttonSearchForUpdate" : "æ›´æ–°ã®ç¢ºèª", |
@@ -154,6 +207,8 @@ | |||
154 | "settings.app.form.enableGPUAcceleration" : "GPUアクセラレーションを有効ã«ã™ã‚‹", | 207 | "settings.app.form.enableGPUAcceleration" : "GPUアクセラレーションを有効ã«ã™ã‚‹", |
155 | "settings.app.form.enableSpellchecking" : "スペルãƒã‚§ãƒƒã‚¯ã‚’有効ã«ã™ã‚‹", | 208 | "settings.app.form.enableSpellchecking" : "スペルãƒã‚§ãƒƒã‚¯ã‚’有効ã«ã™ã‚‹", |
156 | "settings.app.form.enableSystemTray" : "Franzをシステムトレイã«è¡¨ç¤ºã™ã‚‹", | 209 | "settings.app.form.enableSystemTray" : "Franzをシステムトレイã«è¡¨ç¤ºã™ã‚‹", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "言語", | 212 | "settings.app.form.language" : "言語", |
158 | "settings.app.form.minimizeToSystemTray" : "Franzをシステムトレイã«æœ€å°åŒ–ã™ã‚‹", | 213 | "settings.app.form.minimizeToSystemTray" : "Franzをシステムトレイã«æœ€å°åŒ–ã™ã‚‹", |
159 | "settings.app.form.runInBackground" : "ウインドウを閉ã˜ãŸéš›ã«Franzã‚’ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å®Ÿè¡Œã•ã›ã¦ãŠã", | 214 | "settings.app.form.runInBackground" : "ウインドウを閉ã˜ãŸéš›ã«Franzã‚’ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å®Ÿè¡Œã•ã›ã¦ãŠã", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "利用ä¸ã®ã‚µãƒ¼ãƒ“ス", | 237 | "settings.navigation.yourServices" : "利用ä¸ã®ã‚µãƒ¼ãƒ“ス", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Your workspaces", |
184 | "settings.recipes.all" : "ã™ã¹ã¦ã®ã‚µãƒ¼ãƒ“ス", | 239 | "settings.recipes.all" : "ã™ã¹ã¦ã®ã‚µãƒ¼ãƒ“ス", |
185 | "settings.recipes.dev" : "開発版", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "利用å¯èƒ½ãªã‚µãƒ¼ãƒ“ス", | 247 | "settings.recipes.headline" : "利用å¯èƒ½ãªã‚µãƒ¼ãƒ“ス", |
187 | "settings.recipes.missingService" : "使ã„ãŸã„サービスãŒä¸€è¦§ã«ã‚ã‚Šã¾ã›ã‚“ã‹?", | 248 | "settings.recipes.missingService" : "使ã„ãŸã„サービスãŒä¸€è¦§ã«ã‚ã‚Šã¾ã›ã‚“ã‹?", |
188 | "settings.recipes.mostPopular" : "最も人気", | 249 | "settings.recipes.mostPopular" : "最も人気", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "ã‚µãƒ¼ãƒ“ã‚¹ã‚’è¿½åŠ ", | 332 | "sidebar.addNewService" : "ã‚µãƒ¼ãƒ“ã‚¹ã‚’è¿½åŠ ", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 334 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", |
273 | "sidebar.muteApp" : "通知ã¨ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’無効化", | 335 | "sidebar.muteApp" : "通知ã¨ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’無効化", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "è¨å®š", | 338 | "sidebar.settings" : "è¨å®š", |
276 | "sidebar.unmuteApp" : "通知ã¨ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’有効化", | 339 | "sidebar.unmuteApp" : "通知ã¨ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’有効化", |
277 | "signup.company.label" : "法人", | ||
278 | "signup.email.label" : "メールアドレス", | 340 | "signup.email.label" : "メールアドレス", |
279 | "signup.emailDuplicate" : "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯æ—¢ã«ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™", | 341 | "signup.emailDuplicate" : "ã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯æ—¢ã«ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã™", |
280 | "signup.firstname.label" : "å", | 342 | "signup.firstname.label" : "å", |
@@ -300,6 +362,12 @@ | |||
300 | "subscription.type.free" : "ç„¡æ–™", | 362 | "subscription.type.free" : "ç„¡æ–™", |
301 | "subscription.type.month" : "月間", | 363 | "subscription.type.month" : "月間", |
302 | "subscription.type.year" : "å¹´é–“", | 364 | "subscription.type.year" : "å¹´é–“", |
365 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", | ||
366 | "subscription.cta.allOptions" : "See all options", | ||
367 | "subscription.cta.choosePlan" : "Choose your plan", | ||
368 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", | ||
369 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", | ||
370 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | ||
303 | "subscriptionPopup.buttonCancel" : "ã‚ャンセル", | 371 | "subscriptionPopup.buttonCancel" : "ã‚ャンセル", |
304 | "subscriptionPopup.buttonDone" : "完了", | 372 | "subscriptionPopup.buttonDone" : "完了", |
305 | "tabs.item.deleteService" : "サービスを削除ã™ã‚‹", | 373 | "tabs.item.deleteService" : "サービスを削除ã™ã‚‹", |
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index b35e273b6..3d5c8d29a 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "ჩáƒáƒ¢áƒ•áƒ˜áƒ თვáƒ", | 2 | "app.errorHandler.action" : "ჩáƒáƒ¢áƒ•áƒ˜áƒ თვáƒ", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Something went wrong", |
4 | "feature.announcements.changelog.headline" : "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", |
5 | "feature.delayApp.action" : "Get a Ferdi Supporter License", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.headline" : "Please purchase a Ferdi Supporter License to skip waiting", | 6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", |
7 | "feature.delayApp.text" : "Ferdi will continue in {seconds} seconds.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Get a Franz Supporter License", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Upgrade account", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Send as email", | 13 | "feature.shareFranz.action.email" : "Send as email", |
9 | "feature.shareFranz.action.facebook" : "Share on Facebook", | 14 | "feature.shareFranz.action.facebook" : "Share on Facebook", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 15 | "feature.shareFranz.action.twitter" : "Share on Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi is better together!", | 16 | "feature.shareFranz.headline" : "Ferdi is better together!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", | ||
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
15 | "global.api.unhealthy" : "Franz-ის áƒáƒœáƒšáƒáƒ˜áƒœ სერვისთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ ებრვერმáƒáƒ®áƒ”რხდáƒ", | 23 | "global.api.unhealthy" : "Franz-ის áƒáƒœáƒšáƒáƒ˜áƒœ სერვისთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ ებრვერმáƒáƒ®áƒ”რხდáƒ", |
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "თქვენ áƒáƒ ხáƒáƒ თ ინტერნეტთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ ებული.", | 25 | "global.notConnectedToTheInternet" : "თქვენ áƒáƒ ხáƒáƒ თ ინტერნეტთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ ებული.", |
17 | "global.spellchecker.useDefault" : "Use System Default ({default})", | 26 | "global.spellchecker.useDefault" : "Use System Default ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 27 | "global.spellchecking.autodetect" : "Detect language automatically", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 28 | "global.spellchecking.autodetect.short" : "Automatic", |
20 | "global.spellchecking.language" : "Spell checking language", | 29 | "global.spellchecking.language" : "Spell checking language", |
21 | "import.headline" : "შემáƒáƒ˜áƒ¢áƒáƒœáƒ” Ferdi 4-ის სერვისები", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "სერვისები ჯერáƒáƒ áƒáƒ ის მხáƒáƒ დáƒáƒáƒ”რილი Ferdi 5-ში", | 31 | "import.headline" : "შემáƒáƒ˜áƒ¢áƒáƒœáƒ” Franz 4-ის სერვისები", |
32 | "import.notSupportedHeadline" : "სერვისები ჯერáƒáƒ áƒáƒ ის მხáƒáƒ დáƒáƒáƒ”რილი Franz 5-ში", | ||
23 | "import.skip.label" : "I want to add services manually", | 33 | "import.skip.label" : "I want to add services manually", |
24 | "import.submit.label" : "მáƒáƒ¬áƒ•áƒ”ვის გáƒáƒ’ზáƒáƒ•áƒœáƒ", | 34 | "import.submit.label" : "მáƒáƒ¬áƒ•áƒ”ვის გáƒáƒ’ზáƒáƒ•áƒœáƒ", |
25 | "infobar.buttonChangelog" : "What is new?", | 35 | "infobar.buttonChangelog" : "What is new?", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "სერვისების გáƒáƒ“áƒáƒ¢áƒ•áƒ˜áƒ თვრ", | 37 | "infobar.buttonReloadServices" : "სერვისების გáƒáƒ“áƒáƒ¢áƒ•áƒ˜áƒ თვრ", |
28 | "infobar.requiredRequestsFailed" : "სერვისებისრდრმáƒáƒ›áƒ®áƒ›áƒáƒ ებლის ინფáƒáƒ მáƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ თვრვერმáƒáƒ®áƒ”რხდáƒ", | 38 | "infobar.requiredRequestsFailed" : "სერვისებისრდრმáƒáƒ›áƒ®áƒ›áƒáƒ ებლის ინფáƒáƒ მáƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ თვრვერმáƒáƒ®áƒ”რხდáƒ", |
29 | "infobar.servicesUpdated" : "თქვენი სერვისები გáƒáƒœáƒáƒ®áƒšáƒ”ბულიáƒ.", | 39 | "infobar.servicesUpdated" : "თქვენი სერვისები გáƒáƒœáƒáƒ®áƒšáƒ”ბულიáƒ.", |
40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", | ||
30 | "infobar.updateAvailable" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბრFranz-ისთვის ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜áƒ.", | 41 | "infobar.updateAvailable" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბრFranz-ისთვის ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜áƒ.", |
31 | "invite.email.label" : "მეილი", | 42 | "invite.email.label" : "მეილი", |
32 | "invite.headline.friends" : "მáƒáƒ˜áƒ¬áƒ•áƒ˜áƒ”თ 3 თქვენი მეგáƒáƒ‘áƒáƒ ი áƒáƒœ კáƒáƒšáƒ”გáƒ", | 43 | "invite.headline.friends" : "მáƒáƒ˜áƒ¬áƒ•áƒ˜áƒ”თ 3 თქვენი მეგáƒáƒ‘áƒáƒ ი áƒáƒœ კáƒáƒšáƒ”გáƒ", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "თქვენს სესიáƒáƒ¡ ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ, შედით áƒáƒœáƒ’áƒáƒ იშში ხელáƒáƒ®áƒšáƒ.", | 54 | "login.serverLogout" : "თქვენს სესიáƒáƒ¡ ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ, შედით áƒáƒœáƒ’áƒáƒ იშში ხელáƒáƒ®áƒšáƒ.", |
44 | "login.submit.label" : "შესვლáƒ", | 55 | "login.submit.label" : "შესვლáƒ", |
45 | "login.tokenExpired" : "თქვენს სესიáƒáƒ¡ ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ, შედით áƒáƒœáƒ’áƒáƒ იშში ხელáƒáƒ®áƒšáƒ.", | 56 | "login.tokenExpired" : "თქვენს სესიáƒáƒ¡ ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ, შედით áƒáƒœáƒ’áƒáƒ იშში ხელáƒáƒ®áƒšáƒ.", |
57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", | ||
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
46 | "menu.app.about" : "Franz-ის შესáƒáƒ®áƒ”ბ", | 59 | "menu.app.about" : "Franz-ის შესáƒáƒ®áƒ”ბ", |
47 | "menu.app.announcement" : "What's new?", | 60 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბების შემáƒáƒ¬áƒ›áƒ”ბáƒ", | 61 | "menu.app.checkForUpdates" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბების შემáƒáƒ¬áƒ›áƒ”ბáƒ", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "File", | 81 | "menu.file" : "File", |
69 | "menu.help" : "Help", | 82 | "menu.help" : "Help", |
70 | "menu.help.changelog" : "Changelog", | 83 | "menu.help.changelog" : "Changelog", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Learn More", | 87 | "menu.help.learnMore" : "Learn More", |
72 | "menu.help.privacy" : "კáƒáƒœáƒ¤áƒ˜áƒ“ენციáƒáƒšáƒ£áƒ áƒáƒ‘ის შესáƒáƒ®áƒ”ბ", | 88 | "menu.help.privacy" : "კáƒáƒœáƒ¤áƒ˜áƒ“ენციáƒáƒšáƒ£áƒ áƒáƒ‘ის შესáƒáƒ®áƒ”ბ", |
73 | "menu.help.support" : "Support", | 89 | "menu.help.support" : "Support", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Activate previous service", | 92 | "menu.services.activatePreviousService" : "Activate previous service", |
77 | "menu.services.addNewService" : "Add New Service...", | 93 | "menu.services.addNewService" : "Add New Service...", |
78 | "menu.services.setNextServiceActive" : "Activate next service", | 94 | "menu.services.setNextServiceActive" : "Activate next service", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "View", | 97 | "menu.view" : "View", |
80 | "menu.view.enterFullScreen" : "Enter Full Screen", | 98 | "menu.view.enterFullScreen" : "Enter Full Screen", |
81 | "menu.view.exitFullScreen" : "Exit Full Screen", | 99 | "menu.view.exitFullScreen" : "Exit Full Screen", |
82 | "menu.view.reloadFranz" : "Reload Franz", | 100 | "menu.view.reloadFranz" : "Reload Ferdi", |
83 | "menu.view.reloadService" : "Reload Service", | 101 | "menu.view.reloadService" : "Reload Service", |
84 | "menu.view.resetZoom" : "Actual Size", | 102 | "menu.view.resetZoom" : "Actual Size", |
85 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | 103 | "menu.view.toggleDevTools" : "Toggle Developer Tools", |
86 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | 104 | "menu.view.toggleFullScreen" : "Toggle Full Screen", |
87 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | 105 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Zoom In", | 107 | "menu.view.zoomIn" : "Zoom In", |
89 | "menu.view.zoomOut" : "Zoom Out", | 108 | "menu.view.zoomOut" : "Zoom Out", |
90 | "menu.window" : "Window", | 109 | "menu.window" : "Window", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ ებáƒ", | 122 | "password.submit.label" : "დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ ებáƒ", |
104 | "password.successInfo" : "გთხáƒáƒ•áƒ— შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ მეილი", | 123 | "password.successInfo" : "გთხáƒáƒ•áƒ— შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ მეილი", |
105 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 124 | "premiumFeature.button.upgradeAccount" : "Upgrade account", |
106 | "pricing.headline" : "Franz-ის მხáƒáƒ დáƒáƒáƒ”რáƒ", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "áƒáƒ მინდრხელი შევუწყრFranz-ის გáƒáƒœáƒ•áƒ˜áƒ—áƒáƒ ებáƒáƒ¡.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "მინდრხელი შევუწყრFranz-ის გáƒáƒœáƒ•áƒ˜áƒ—áƒáƒ ებáƒáƒ¡", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "áƒáƒ˜áƒ ჩიეთ თქვენი მხáƒáƒ დáƒáƒáƒ”რის გეგმáƒ", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Reload {name}", | 152 | "service.crashHandler.action" : "Reload {name}", |
111 | "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", | 153 | "service.crashHandler.autoReload" : "Trying to automatically restore {name} in {seconds} seconds", |
112 | "service.crashHandler.headline" : "Oh no!", | 154 | "service.crashHandler.headline" : "Oh no!", |
@@ -118,6 +160,11 @@ | |||
118 | "service.errorHandler.headline" : "Oh no!", | 160 | "service.errorHandler.headline" : "Oh no!", |
119 | "service.errorHandler.message" : "შეცდáƒáƒ›áƒ", | 161 | "service.errorHandler.message" : "შეცდáƒáƒ›áƒ", |
120 | "service.errorHandler.text" : "{name} has failed to load.", | 162 | "service.errorHandler.text" : "{name} has failed to load.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Loading", | 168 | "service.webviewLoader.loading" : "Loading", |
122 | "services.getStarted" : "დáƒáƒ¬áƒ§áƒ”ბáƒ", | 169 | "services.getStarted" : "დáƒáƒ¬áƒ§áƒ”ბáƒ", |
123 | "services.welcome" : "მáƒáƒ’ესáƒáƒšáƒ›áƒ”ბით Franz-ზე", | 170 | "services.welcome" : "მáƒáƒ’ესáƒáƒšáƒ›áƒ”ბით Franz-ზე", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლáƒ", | 182 | "settings.account.headlinePassword" : "პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლáƒ", |
136 | "settings.account.headlineProfile" : "პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ", | 183 | "settings.account.headlineProfile" : "პრáƒáƒ¤áƒ˜áƒšáƒ˜áƒ¡ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ", |
137 | "settings.account.headlineSubscription" : "თქვენი გáƒáƒ›áƒáƒ¬áƒ”რáƒ", | 184 | "settings.account.headlineSubscription" : "თქვენი გáƒáƒ›áƒáƒ¬áƒ”რáƒ", |
138 | "settings.account.headlineUpgrade" : "გáƒáƒœáƒáƒáƒ®áƒšáƒ”თ თქვენი áƒáƒœáƒ’áƒáƒ იში დრმხáƒáƒ ი დáƒáƒ£áƒáƒ˜áƒ ეთ Franz-ს", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "გáƒáƒ“მáƒáƒ¬áƒ”რáƒ", | 187 | "settings.account.invoiceDownload" : "გáƒáƒ“მáƒáƒ¬áƒ”რáƒ", |
140 | "settings.account.manageSubscription.label" : "თქვენი გáƒáƒ›áƒáƒ¬áƒ”რის მáƒáƒ თვáƒ", | 188 | "settings.account.manageSubscription.label" : "თქვენი გáƒáƒ›áƒáƒ¬áƒ”რის მáƒáƒ თვáƒ", |
141 | "settings.account.successInfo" : "თქვენი ცვლილებები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ", | 189 | "settings.account.successInfo" : "თქვენი ცვლილებები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "სცáƒáƒ“ეთ ხელáƒáƒ®áƒšáƒ", | 193 | "settings.account.tryReloadServices" : "სცáƒáƒ“ეთ ხელáƒáƒ®áƒšáƒ", |
143 | "settings.account.tryReloadUserInfoRequest" : "სცáƒáƒ“ეთ ხელáƒáƒ®áƒšáƒ", | 194 | "settings.account.tryReloadUserInfoRequest" : "სცáƒáƒ“ეთ ხელáƒáƒ®áƒšáƒ", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "მáƒáƒ›áƒ®áƒ›áƒáƒ ებლის ინფáƒáƒ მáƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ თვრვერმáƒáƒ®áƒ”რხდáƒ", | 196 | "settings.account.userInfoRequestFailed" : "მáƒáƒ›áƒ®áƒ›áƒáƒ ებლის ინფáƒáƒ მáƒáƒªáƒ˜áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•áƒ˜áƒ თვრვერმáƒáƒ®áƒ”რხდáƒ", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Clear cache", | 198 | "settings.app.buttonClearAllCache" : "Clear cache", |
146 | "settings.app.buttonInstallUpdate" : "გáƒáƒ“áƒáƒ¢áƒ•áƒ˜áƒ თეთ დრდáƒáƒáƒ§áƒ”ნეთ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ", | 199 | "settings.app.buttonInstallUpdate" : "გáƒáƒ“áƒáƒ¢áƒ•áƒ˜áƒ თეთ დრდáƒáƒáƒ§áƒ”ნეთ გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ", |
147 | "settings.app.buttonSearchForUpdate" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბების შემáƒáƒ¬áƒ›áƒ”ბáƒ", | 200 | "settings.app.buttonSearchForUpdate" : "გáƒáƒœáƒáƒ®áƒšáƒ”ბების შემáƒáƒ¬áƒ›áƒ”ბáƒ", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Join the Dark Side", | 206 | "settings.app.form.darkMode" : "Join the Dark Side", |
154 | "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration", | 207 | "settings.app.form.enableGPUAcceleration" : "Enable GPU Acceleration", |
155 | "settings.app.form.enableSpellchecking" : "Enable spell checking", | 208 | "settings.app.form.enableSpellchecking" : "Enable spell checking", |
156 | "settings.app.form.enableSystemTray" : "áƒáƒ©áƒ•áƒ”ნეთ Ferdi სისტემის უჯრáƒáƒ¨áƒ˜", | 209 | "settings.app.form.enableSystemTray" : "áƒáƒ©áƒ•áƒ”ნეთ Franz სისტემის უჯრáƒáƒ¨áƒ˜", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "ენáƒ", | 212 | "settings.app.form.language" : "ენáƒ", |
158 | "settings.app.form.minimizeToSystemTray" : "ჩáƒáƒ™áƒ”ცეთ Ferdi სისტემის უჯრáƒáƒ¨áƒ˜", | 213 | "settings.app.form.minimizeToSystemTray" : "ჩáƒáƒ™áƒ”ცეთ Ferdi სისტემის უჯრáƒáƒ¨áƒ˜", |
159 | "settings.app.form.runInBackground" : "დáƒáƒ¢áƒáƒ•áƒ”თ Ferdi გáƒáƒ¨áƒ•áƒ”ბული რáƒáƒ“ესáƒáƒª ფáƒáƒœáƒ¯áƒáƒ რდáƒáƒ˜áƒ®áƒ£áƒ ებáƒ", | 214 | "settings.app.form.runInBackground" : "დáƒáƒ¢áƒáƒ•áƒ”თ Ferdi გáƒáƒ¨áƒ•áƒ”ბული რáƒáƒ“ესáƒáƒª ფáƒáƒœáƒ¯áƒáƒ რდáƒáƒ˜áƒ®áƒ£áƒ ებáƒ", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "თქვენი სერვისები", | 237 | "settings.navigation.yourServices" : "თქვენი სერვისები", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Your workspaces", |
184 | "settings.recipes.all" : "ყველრსერვისი", | 239 | "settings.recipes.all" : "ყველრსერვისი", |
185 | "settings.recipes.dev" : "გáƒáƒœáƒ•áƒ˜áƒ—áƒáƒ ებáƒ", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜ სერვისები", | 247 | "settings.recipes.headline" : "ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜ სერვისები", |
187 | "settings.recipes.missingService" : "Missing a service?", | 248 | "settings.recipes.missingService" : "Missing a service?", |
188 | "settings.recipes.mostPopular" : "ყველáƒáƒ–ე პáƒáƒžáƒ£áƒšáƒáƒ ული", | 249 | "settings.recipes.mostPopular" : "ყველáƒáƒ–ე პáƒáƒžáƒ£áƒšáƒáƒ ული", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Add new service", | 332 | "sidebar.addNewService" : "Add new service", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 334 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", |
273 | "sidebar.muteApp" : "Disable notifications & audio", | 335 | "sidebar.muteApp" : "Disable notifications & audio", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "პáƒáƒ áƒáƒ›áƒ”ტრები", | 338 | "sidebar.settings" : "პáƒáƒ áƒáƒ›áƒ”ტრები", |
276 | "sidebar.unmuteApp" : "Enable notifications & audio", | 339 | "sidebar.unmuteApp" : "Enable notifications & audio", |
277 | "signup.company.label" : "კáƒáƒ›áƒžáƒáƒœáƒ˜áƒ", | ||
278 | "signup.email.label" : "მეილი", | 340 | "signup.email.label" : "მეილი", |
279 | "signup.emailDuplicate" : "მáƒáƒ›áƒ®áƒ›áƒáƒ ებელი áƒáƒ› მეილით უკვე áƒáƒ სებáƒáƒ‘ს", | 341 | "signup.emailDuplicate" : "მáƒáƒ›áƒ®áƒ›áƒáƒ ებელი áƒáƒ› მეილით უკვე áƒáƒ სებáƒáƒ‘ს", |
280 | "signup.firstname.label" : "First Name", | 342 | "signup.firstname.label" : "First Name", |
@@ -286,20 +348,12 @@ | |||
286 | "signup.link.login" : "უკვე გáƒáƒ¥áƒ•áƒ— áƒáƒœáƒ’áƒáƒ იში?", | 348 | "signup.link.login" : "უკვე გáƒáƒ¥áƒ•áƒ— áƒáƒœáƒ’áƒáƒ იში?", |
287 | "signup.password.label" : "პáƒáƒ áƒáƒšáƒ˜", | 349 | "signup.password.label" : "პáƒáƒ áƒáƒšáƒ˜", |
288 | "signup.submit.label" : "áƒáƒœáƒ’áƒáƒ იშის შექმნáƒ", | 350 | "signup.submit.label" : "áƒáƒœáƒ’áƒáƒ იშის შექმნáƒ", |
289 | "subscription.euTaxInfo" : "EU residents: local sales tax may apply", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "áƒáƒ áƒáƒœáƒáƒ˜áƒ ი რეკლáƒáƒ›áƒ”ბი, áƒáƒ áƒáƒ¡áƒ“რáƒáƒ¡!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "მáƒáƒšáƒ”", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Proxy support for services", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Support for spellchecker", | ||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | ||
297 | "subscription.includedFeatures" : "ფáƒáƒ¡áƒ˜áƒáƒœáƒ˜ Franz-ის პრემიუმ მხáƒáƒ მდáƒáƒ›áƒáƒ”რი áƒáƒœáƒ’áƒáƒ იში", | ||
298 | "subscription.paymentSessionError" : "გáƒáƒ“áƒáƒ®áƒ“ის ფáƒáƒ მáƒáƒ¢áƒ˜áƒ¡ ინიციáƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ ვერმáƒáƒ®áƒ”რხდáƒ", | ||
299 | "subscription.submit.label" : "მინდრხელი შევუწყრFranz-ის გáƒáƒœáƒ•áƒ˜áƒ—áƒáƒ ებáƒáƒ¡", | ||
300 | "subscription.type.free" : "უფáƒáƒ¡áƒ", | ||
301 | "subscription.type.month" : "თვე", | ||
302 | "subscription.type.year" : "წელი", | ||
303 | "subscriptionPopup.buttonCancel" : "გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ", | 357 | "subscriptionPopup.buttonCancel" : "გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ", |
304 | "subscriptionPopup.buttonDone" : "შესრულებულიáƒ", | 358 | "subscriptionPopup.buttonDone" : "შესრულებულიáƒ", |
305 | "tabs.item.deleteService" : "სერვისის წáƒáƒ¨áƒšáƒ", | 359 | "tabs.item.deleteService" : "სერვისის წáƒáƒ¨áƒšáƒ", |
diff --git a/src/i18n/locales/nb-NO.json b/src/i18n/locales/nb-NO.json index 565df7d14..d15372755 100644 --- a/src/i18n/locales/nb-NO.json +++ b/src/i18n/locales/nb-NO.json | |||
@@ -1,5 +1,5 @@ | |||
1 | { | 1 | { |
2 | "global.api.unhealthy": "Kan ikke koble til Franz' tjenester", | 2 | "global.api.unhealthy": "Kan ikke koble til Ferdi' tjenester", |
3 | "global.notConnectedToTheInternet": "Du er ikke koblet til internett.", | 3 | "global.notConnectedToTheInternet": "Du er ikke koblet til internett.", |
4 | "welcome.signupButton": "Opprett en gratis konto", | 4 | "welcome.signupButton": "Opprett en gratis konto", |
5 | "welcome.loginButton": "Logg inn til din konto", | 5 | "welcome.loginButton": "Logg inn til din konto", |
@@ -32,9 +32,9 @@ | |||
32 | "signup.legal.info": "Ved å opprette en Ferdi konto aksepterer du", | 32 | "signup.legal.info": "Ved å opprette en Ferdi konto aksepterer du", |
33 | "signup.legal.terms": "Vilkår for bruk", | 33 | "signup.legal.terms": "Vilkår for bruk", |
34 | "signup.legal.privacy": "Personvern", | 34 | "signup.legal.privacy": "Personvern", |
35 | "pricing.headline": "Støtt Franz", | 35 | "pricing.headline": "Støtt Ferdi", |
36 | "pricing.support.label": "Velg din støtteplan", | 36 | "pricing.support.label": "Velg din støtteplan", |
37 | "pricing.submit.label": "Jeg vil støtte utviklingen av Franz", | 37 | "pricing.submit.label": "Jeg vil støtte utviklingen av Ferdi", |
38 | "pricing.link.skipPayment": "Jeg vil ikke støtte utviklingen av Franz.", | 38 | "pricing.link.skipPayment": "Jeg vil ikke støtte utviklingen av Franz.", |
39 | "import.headline": "Importer dine Ferdi 4 tjenester", | 39 | "import.headline": "Importer dine Ferdi 4 tjenester", |
40 | "import.notSupportedHeadline": "Tjenester ikke enda støttet i Ferdi 5", | 40 | "import.notSupportedHeadline": "Tjenester ikke enda støttet i Ferdi 5", |
@@ -45,7 +45,7 @@ | |||
45 | "invite.name.label": "Navn", | 45 | "invite.name.label": "Navn", |
46 | "invite.email.label": "Email adresse", | 46 | "invite.email.label": "Email adresse", |
47 | "invite.skip.label": "Jeg vil gjøre dette senere", | 47 | "invite.skip.label": "Jeg vil gjøre dette senere", |
48 | "subscription.submit.label": "Jeg vil ikke støtte utviklingen av Franz", | 48 | "subscription.submit.label": "Jeg vil ikke støtte utviklingen av Ferdi", |
49 | "subscription.paymentSessionError": "Kunne ikke laste betalingsskjemaet", | 49 | "subscription.paymentSessionError": "Kunne ikke laste betalingsskjemaet", |
50 | "subscription.includedFeatures": "Betalte Ferdi Premium konto inkluderer", | 50 | "subscription.includedFeatures": "Betalte Ferdi Premium konto inkluderer", |
51 | "subscription.features.onpremise": "Legg til on-premise/hosted tjenester som HipChat", | 51 | "subscription.features.onpremise": "Legg til on-premise/hosted tjenester som HipChat", |
@@ -61,11 +61,11 @@ | |||
61 | "infobar.requiredRequestsFailed": "Kunne ikke laste tjenester og brukerinformasjon", | 61 | "infobar.requiredRequestsFailed": "Kunne ikke laste tjenester og brukerinformasjon", |
62 | "sidebar.settings": "Innstillinger", | 62 | "sidebar.settings": "Innstillinger", |
63 | "sidebar.addNewService": "Legg til ny tjeneste", | 63 | "sidebar.addNewService": "Legg til ny tjeneste", |
64 | "services.welcome": "Velkommen til Franz", | 64 | "services.welcome": "Velkommen til Ferdi", |
65 | "services.getStarted": "Kom i gang", | 65 | "services.getStarted": "Kom i gang", |
66 | "settings.account.headline": "Konto", | 66 | "settings.account.headline": "Konto", |
67 | "settings.account.headlineSubscription": "Ditt abonnement", | 67 | "settings.account.headlineSubscription": "Ditt abonnement", |
68 | "settings.account.headlineUpgrade": "Oppgrader din konto og støtt Franz", | 68 | "settings.account.headlineUpgrade": "Oppgrader din konto og støtt Ferdi", |
69 | "settings.account.headlineInvoices": "Fakturaer", | 69 | "settings.account.headlineInvoices": "Fakturaer", |
70 | "settings.account.manageSubscription.label": "Administrer dine abonnement", | 70 | "settings.account.manageSubscription.label": "Administrer dine abonnement", |
71 | "settings.account.accountType.basic": "Enkel Konto", | 71 | "settings.account.accountType.basic": "Enkel Konto", |
@@ -124,7 +124,7 @@ | |||
124 | "settings.app.buttonInstallUpdate": "Restart & installer oppdatering", | 124 | "settings.app.buttonInstallUpdate": "Restart & installer oppdatering", |
125 | "settings.app.updateStatusSearching": "Søker etter en oppdatering", | 125 | "settings.app.updateStatusSearching": "Søker etter en oppdatering", |
126 | "settings.app.updateStatusAvailable": "Oppdatering tilgjengelig, laster ned...", | 126 | "settings.app.updateStatusAvailable": "Oppdatering tilgjengelig, laster ned...", |
127 | "settings.app.updateStatusUpToDate": "Du bruker siste versjon av Franz", | 127 | "settings.app.updateStatusUpToDate": "Du bruker siste versjon av Ferdi", |
128 | "settings.app.form.autoLaunchOnStart": "Start Ferdi ved oppstart", | 128 | "settings.app.form.autoLaunchOnStart": "Start Ferdi ved oppstart", |
129 | "settings.app.form.autoLaunchInBackground": "Ã…pne i bakgrunnen", | 129 | "settings.app.form.autoLaunchInBackground": "Ã…pne i bakgrunnen", |
130 | "settings.app.form.enableSystemTray": "Vis Ferdi i systemfeltet", | 130 | "settings.app.form.enableSystemTray": "Vis Ferdi i systemfeltet", |
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index 90d566585..c17439ea5 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Herladen", | 2 | "app.errorHandler.action" : "Herladen", |
3 | "app.errorHandler.headline" : "Er ging iets mis", | 3 | "app.errorHandler.headline" : "Er ging iets mis", |
4 | "feature.announcements.changelog.headline" : "Wijzigingen in Ferdi {versie}", | 4 | "feature.announcements.changelog.headline" : "Wijzigingen in Franz {versie}", |
5 | "feature.delayApp.action" : "Neem een Ferdi Supporter Licentie ", | 5 | "feature.delayApp.headline" : "Neem een Franz Supporter Licentie om niet meer te hoeven wachten", |
6 | "feature.delayApp.headline" : "Neem een Ferdi Supporter Licentie om niet meer te hoeven wachten", | 6 | "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.", |
7 | "feature.delayApp.text" : "Ferdi gaat over {seconds} seconden verder.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Neem een Franz Supporter Licentie ", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Upgrade account", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Verstuur als e-mail", | 13 | "feature.shareFranz.action.email" : "Verstuur als e-mail", |
9 | "feature.shareFranz.action.facebook" : "Deel op Facebook", | 14 | "feature.shareFranz.action.facebook" : "Deel op Facebook", |
10 | "feature.shareFranz.action.twitter" : "Deel op Twitter", | 15 | "feature.shareFranz.action.twitter" : "Deel op Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi is beter samen!", | 16 | "feature.shareFranz.headline" : "Ferdi is beter samen!", |
12 | "feature.shareFranz.shareText.email" : "Ik heb {telling} diensten toegevoegd aan Franz! Download de gratis app voor WhatsApp, Messenger, Slack, Skype, en anderen op www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "Ik heb {telling} diensten toegevoegd aan Franz! Download de gratis app voor WhatsApp, Messenger, Slack, Skype, en anderen op www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "Ik heb {tel} diensten toegevoegd aan Franz! Download de gratis app voor WhatsApp, Messenger, Slack, Skype, en anderen op www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "Ik heb {tel} diensten toegevoegd aan Franz! Download de gratis app voor WhatsApp, Messenger, Slack, Skype, en anderen op www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Vertel je vrienden en collega's hoe geweldig Ferdi is en help ons het woord te verspreiden.", | 19 | "feature.shareFranz.text" : "Vertel je vrienden en collega's hoe geweldig Franz is en help ons het woord te verspreiden.", |
15 | "global.api.unhealthy" : "Kan geen verbinding maken met de Ferdi services", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz services", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.", | 25 | "global.notConnectedToTheInternet" : "Je hebt geen internet verbinding.", |
17 | "global.spellchecker.useDefault" : "Gebruik Systeemstandaard ({default})", | 26 | "global.spellchecker.useDefault" : "Gebruik Systeemstandaard ({default})", |
18 | "global.spellchecking.autodetect" : "Taal automatisch herkennen", | 27 | "global.spellchecking.autodetect" : "Taal automatisch herkennen", |
19 | "global.spellchecking.autodetect.short" : "Automatisch", | 28 | "global.spellchecking.autodetect.short" : "Automatisch", |
20 | "global.spellchecking.language" : "Taal spellingscontrole", | 29 | "global.spellchecking.language" : "Taal spellingscontrole", |
21 | "import.headline" : "Importeer je Ferdi 4 services", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Ferdi 5", | 31 | "import.headline" : "Importeer je Franz 4 services", |
32 | "import.notSupportedHeadline" : "De volgende services worden nog niet ondersteund in Franz 5", | ||
23 | "import.skip.label" : "Ik wil services handmatig toevoegen", | 33 | "import.skip.label" : "Ik wil services handmatig toevoegen", |
24 | "import.submit.label" : "Importeer services", | 34 | "import.submit.label" : "Importeer services", |
25 | "infobar.buttonChangelog" : "Wat is er nieuw?", | 35 | "infobar.buttonChangelog" : "Wat is er nieuw?", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Services opnieuw laden", | 37 | "infobar.buttonReloadServices" : "Services opnieuw laden", |
28 | "infobar.requiredRequestsFailed" : "Kan de services en gebruikersinformatie niet laden", | 38 | "infobar.requiredRequestsFailed" : "Kan de services en gebruikersinformatie niet laden", |
29 | "infobar.servicesUpdated" : "Je services zijn bijgewerkt.", | 39 | "infobar.servicesUpdated" : "Je services zijn bijgewerkt.", |
30 | "infobar.updateAvailable" : "Er is een nieuwe update voor Ferdi beschikbaar.", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Er is een nieuwe update voor Franz beschikbaar.", | ||
31 | "invite.email.label" : "E-mailadres", | 42 | "invite.email.label" : "E-mailadres", |
32 | "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit", | 43 | "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit", |
33 | "invite.name.label" : "Naam", | 44 | "invite.name.label" : "Naam", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "De sessie is verlopen, log opnieuw in alsjeblieft.", | 54 | "login.serverLogout" : "De sessie is verlopen, log opnieuw in alsjeblieft.", |
44 | "login.submit.label" : "Inloggen", | 55 | "login.submit.label" : "Inloggen", |
45 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", | 56 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", |
46 | "menu.app.about" : "Over Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
59 | "menu.app.about" : "Over Ferdi", | ||
47 | "menu.app.announcement" : "Wat is er nieuw?", | 60 | "menu.app.announcement" : "Wat is er nieuw?", |
48 | "menu.app.checkForUpdates" : "Controleer op updates", | 61 | "menu.app.checkForUpdates" : "Controleer op updates", |
49 | "menu.app.hide" : "Verbergen", | 62 | "menu.app.hide" : "Verbergen", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Bestand", | 81 | "menu.file" : "Bestand", |
69 | "menu.help" : "Help", | 82 | "menu.help" : "Help", |
70 | "menu.help.changelog" : "Logboek", | 83 | "menu.help.changelog" : "Logboek", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Meer Weten", | 87 | "menu.help.learnMore" : "Meer Weten", |
72 | "menu.help.privacy" : "Privacyverklaring", | 88 | "menu.help.privacy" : "Privacyverklaring", |
73 | "menu.help.support" : "Ondersteuning", | 89 | "menu.help.support" : "Ondersteuning", |
@@ -76,6 +92,8 @@ | |||
76 | "menu.services.activatePreviousService" : "Vorige dienst activeren", | 92 | "menu.services.activatePreviousService" : "Vorige dienst activeren", |
77 | "menu.services.addNewService" : "Nieuwe service toevoegen...", | 93 | "menu.services.addNewService" : "Nieuwe service toevoegen...", |
78 | "menu.services.setNextServiceActive" : "Volgende dienst activeren", | 94 | "menu.services.setNextServiceActive" : "Volgende dienst activeren", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Weergave", | 97 | "menu.view" : "Weergave", |
80 | "menu.view.enterFullScreen" : "Volledig scherm openen", | 98 | "menu.view.enterFullScreen" : "Volledig scherm openen", |
81 | "menu.view.exitFullScreen" : "Volledig scherm verlaten", | 99 | "menu.view.exitFullScreen" : "Volledig scherm verlaten", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "Ontwikkelaarstools Aan\/Uit", | 103 | "menu.view.toggleDevTools" : "Ontwikkelaarstools Aan\/Uit", |
86 | "menu.view.toggleFullScreen" : "Volledig Scherm Aan\/Uit", | 104 | "menu.view.toggleFullScreen" : "Volledig Scherm Aan\/Uit", |
87 | "menu.view.toggleServiceDevTools" : "Service Ontwikkelaarstools Aan\/Uit", | 105 | "menu.view.toggleServiceDevTools" : "Service Ontwikkelaarstools Aan\/Uit", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Inzoomen", | 107 | "menu.view.zoomIn" : "Inzoomen", |
89 | "menu.view.zoomOut" : "Uitzoomen", | 108 | "menu.view.zoomOut" : "Uitzoomen", |
90 | "menu.window" : "Venster", | 109 | "menu.window" : "Venster", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Verzenden", | 122 | "password.submit.label" : "Verzenden", |
104 | "password.successInfo" : "Controleer alsjeblieft je e-mail", | 123 | "password.successInfo" : "Controleer alsjeblieft je e-mail", |
105 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 124 | "premiumFeature.button.upgradeAccount" : "Upgrade account", |
106 | "pricing.headline" : "Steun Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Ik wil de ontwikkeling van Ferdi niet ondersteunen.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Ik wil de ontwikkeling van Ferdi ondersteunen", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Selecteer je ondersteuningsplan", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "{naam} herladen", | 152 | "service.crashHandler.action" : "{naam} herladen", |
111 | "service.crashHandler.autoReload" : "Ga proberen om {name} te herstellen over {seconds} seconden", | 153 | "service.crashHandler.autoReload" : "Ga proberen om {name} te herstellen over {seconds} seconden", |
112 | "service.crashHandler.headline" : "Oh nee!", | 154 | "service.crashHandler.headline" : "Oh nee!", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "Oh nee!", | 160 | "service.errorHandler.headline" : "Oh nee!", |
119 | "service.errorHandler.message" : "Fout", | 161 | "service.errorHandler.message" : "Fout", |
120 | "service.errorHandler.text" : "{name} kon niet geladen worden.", | 162 | "service.errorHandler.text" : "{name} kon niet geladen worden.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Aan het laden", | 168 | "service.webviewLoader.loading" : "Aan het laden", |
122 | "services.getStarted" : "Beginnen", | 169 | "services.getStarted" : "Beginnen", |
123 | "services.welcome" : "Welkom bij Franz", | 170 | "services.welcome" : "Welkom bij Ferdi", |
124 | "settings.account.account.editButton" : "Account bewerken", | 171 | "settings.account.account.editButton" : "Account bewerken", |
125 | "settings.account.accountType.basic" : "Basis Account", | 172 | "settings.account.accountType.basic" : "Basis Account", |
126 | "settings.account.accountType.premium" : "Premium Supporter Account", | 173 | "settings.account.accountType.premium" : "Premium Supporter Account", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Wijzig wachtwoord", | 182 | "settings.account.headlinePassword" : "Wijzig wachtwoord", |
136 | "settings.account.headlineProfile" : "Profiel bijwerken", | 183 | "settings.account.headlineProfile" : "Profiel bijwerken", |
137 | "settings.account.headlineSubscription" : "Je abonnement", | 184 | "settings.account.headlineSubscription" : "Je abonnement", |
138 | "settings.account.headlineUpgrade" : "Upgrade je account & ondersteun Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Download", | 187 | "settings.account.invoiceDownload" : "Download", |
140 | "settings.account.manageSubscription.label" : "Beheer je abonnement", | 188 | "settings.account.manageSubscription.label" : "Beheer je abonnement", |
141 | "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen", | 189 | "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Probeer opnieuw", | 193 | "settings.account.tryReloadServices" : "Probeer opnieuw", |
143 | "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", | 194 | "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Kon gebruikersinformatie niet laden", | 196 | "settings.account.userInfoRequestFailed" : "Kon gebruikersinformatie niet laden", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Cache wissen", | 198 | "settings.app.buttonClearAllCache" : "Cache wissen", |
146 | "settings.app.buttonInstallUpdate" : "Herstart & installeer update", | 199 | "settings.app.buttonInstallUpdate" : "Herstart & installeer update", |
147 | "settings.app.buttonSearchForUpdate" : "Controleer op updates", | 200 | "settings.app.buttonSearchForUpdate" : "Controleer op updates", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Word lid van de Dark Side", | 206 | "settings.app.form.darkMode" : "Word lid van de Dark Side", |
154 | "settings.app.form.enableGPUAcceleration" : "GPU Acceleratie Activeren", | 207 | "settings.app.form.enableGPUAcceleration" : "GPU Acceleratie Activeren", |
155 | "settings.app.form.enableSpellchecking" : "Spellingcontrole inschakelen", | 208 | "settings.app.form.enableSpellchecking" : "Spellingcontrole inschakelen", |
156 | "settings.app.form.enableSystemTray" : "Toon Ferdi in de systeembalk", | 209 | "settings.app.form.enableSystemTray" : "Toon Franz in de systeembalk", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Taal", | 212 | "settings.app.form.language" : "Taal", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimaliseer Ferdi naar de systeembalk", | 213 | "settings.app.form.minimizeToSystemTray" : "Minimaliseer Ferdi naar de systeembalk", |
159 | "settings.app.form.runInBackground" : "Houd Ferdi op de achtergrond wanneer het venster gesloten wordt", | 214 | "settings.app.form.runInBackground" : "Houd Ferdi op de achtergrond wanneer het venster gesloten wordt", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Help ons om Ferdi te vertalen naar uw taal.", | 226 | "settings.app.translationHelp" : "Help ons om Ferdi te vertalen naar uw taal.", |
172 | "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", | 227 | "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", |
173 | "settings.app.updateStatusSearching" : "Zoekt naar updates", | 228 | "settings.app.updateStatusSearching" : "Zoekt naar updates", |
174 | "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz", | 229 | "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Ferdi", |
175 | "settings.invite.headline" : "Nodig vrienden uit", | 230 | "settings.invite.headline" : "Nodig vrienden uit", |
176 | "settings.navigation.account" : "Account", | 231 | "settings.navigation.account" : "Account", |
177 | "settings.navigation.availableServices" : "Beschikbare services", | 232 | "settings.navigation.availableServices" : "Beschikbare services", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Jouw services", | 237 | "settings.navigation.yourServices" : "Jouw services", |
183 | "settings.navigation.yourWorkspaces" : "Jouw werkruimtes", | 238 | "settings.navigation.yourWorkspaces" : "Jouw werkruimtes", |
184 | "settings.recipes.all" : "Alle diensten", | 239 | "settings.recipes.all" : "Alle diensten", |
185 | "settings.recipes.dev" : "Ontwikkeling", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Beschikbare services", | 247 | "settings.recipes.headline" : "Beschikbare services", |
187 | "settings.recipes.missingService" : "Mist er een service?", | 248 | "settings.recipes.missingService" : "Mist er een service?", |
188 | "settings.recipes.mostPopular" : "Meest populair", | 249 | "settings.recipes.mostPopular" : "Meest populair", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Kan je werkruimtes niet laden", | 331 | "settings.workspaces.workspacesRequestFailed" : "Kan je werkruimtes niet laden", |
271 | "sidebar.addNewService" : "Nieuw service toevoegen", | 332 | "sidebar.addNewService" : "Nieuw service toevoegen", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Werkruimtelade sluiten", | 334 | "sidebar.closeWorkspaceDrawer" : "Werkruimtelade sluiten", |
273 | "sidebar.muteApp" : "Berichten & geluid uitschakelen", | 335 | "sidebar.muteApp" : "Berichten & geluid uitschakelen", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Werkruimtelade openen", | 337 | "sidebar.openWorkspaceDrawer" : "Werkruimtelade openen", |
275 | "sidebar.settings" : "Instellingen", | 338 | "sidebar.settings" : "Instellingen", |
276 | "sidebar.unmuteApp" : "Berichten & geluid inschakelen", | 339 | "sidebar.unmuteApp" : "Berichten & geluid inschakelen", |
277 | "signup.company.label" : "Bedrijf", | ||
278 | "signup.email.label" : "E-mailadres", | 340 | "signup.email.label" : "E-mailadres", |
279 | "signup.emailDuplicate" : "Er bestaat al een gebruiker met dat e-mailadres", | 341 | "signup.emailDuplicate" : "Er bestaat al een gebruiker met dat e-mailadres", |
280 | "signup.firstname.label" : "Voornaam", | 342 | "signup.firstname.label" : "Voornaam", |
@@ -300,6 +362,12 @@ | |||
300 | "subscription.type.free" : "gratis", | 362 | "subscription.type.free" : "gratis", |
301 | "subscription.type.month" : "maand", | 363 | "subscription.type.month" : "maand", |
302 | "subscription.type.year" : "jaar", | 364 | "subscription.type.year" : "jaar", |
365 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", | ||
366 | "subscription.cta.allOptions" : "See all options", | ||
367 | "subscription.cta.choosePlan" : "Choose your plan", | ||
368 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", | ||
369 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", | ||
370 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | ||
303 | "subscriptionPopup.buttonCancel" : "Annuleren", | 371 | "subscriptionPopup.buttonCancel" : "Annuleren", |
304 | "subscriptionPopup.buttonDone" : "Klaar", | 372 | "subscriptionPopup.buttonDone" : "Klaar", |
305 | "tabs.item.deleteService" : "Service verwijderen", | 373 | "tabs.item.deleteService" : "Service verwijderen", |
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index f42524280..236a688ba 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json | |||
@@ -1,35 +1,46 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Herladen", | 2 | "app.errorHandler.action" : "Herladen", |
3 | "app.errorHandler.headline" : "Er ging iets mis", | 3 | "app.errorHandler.headline" : "Er is iets mis gegaan", |
4 | "feature.announcements.changelog.headline" : "Wijzigingen in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Wijzigingen in Franz {version}", |
5 | "feature.delayApp.action" : "Sponsor Franz", | 5 | "feature.delayApp.headline" : "Sponsor Franz om wachten over te slaan", |
6 | "feature.delayApp.headline" : "Sponsor Ferdi om wachten over te slaan", | 6 | "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.", |
7 | "feature.delayApp.text" : "Ferdi gaat over {seconds} seconden verder.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Sponsor Ferdi", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Upgrade Account", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Verstuur als e-mail", | 13 | "feature.shareFranz.action.email" : "Verstuur als e-mail", |
9 | "feature.shareFranz.action.facebook" : "Deel op Facebook", | 14 | "feature.shareFranz.action.facebook" : "Deel op Facebook", |
10 | "feature.shareFranz.action.twitter" : "Deel op Twitter", | 15 | "feature.shareFranz.action.twitter" : "Deel op Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi is leuker samen!", | 16 | "feature.shareFranz.headline" : "Franz is leuker samen!", |
12 | "feature.shareFranz.shareText.email" : "Ik heb {count} diensten toegevoegd aan Franz! Download de gratis app voor Whatsapp, Messenger, Slack, Skype en co op www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "Ik heb {count} services toegevoegd aan Franz! Download de gratis app voor Whatsapp, Messenger, Slack, Skype en co op www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "Ik heb {count} diensten toegevoegd aan Franz! Download de gratis app voor Whatsapp, Messenger, Slack, Skype en co op www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "Ik heb {count} services toegevoegd aan Franz! Download de gratis app voor Whatsapp, Messenger, Slack, Skype en co op www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Vertel je vrienden en collega's hoe geweldig Ferdi is en help ons om bekender te worden", | 19 | "feature.shareFranz.text" : "Vertel je vrienden en collega's hoe geweldig Franz is en help ons om bekender te worden.", |
15 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz-services", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz-services.", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.", | 25 | "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.", |
17 | "global.spellchecker.useDefault" : "Gebruik systeemstandaard ({default})", | 26 | "global.spellchecker.useDefault" : "Gebruik systeemstandaard ({default})", |
18 | "global.spellchecking.autodetect" : "Taal automatisch herkennen", | 27 | "global.spellchecking.autodetect" : "Taal automatisch herkennen", |
19 | "global.spellchecking.autodetect.short" : "Automatisch", | 28 | "global.spellchecking.autodetect.short" : "Automatisch", |
20 | "global.spellchecking.language" : "Spelling checken", | 29 | "global.spellchecking.language" : "Taal voor spellingcontrole", |
21 | "import.headline" : "Importeer uw Ferdi 4-services", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Services die nog niet ondersteund worden in Ferdi 5", | 31 | "import.headline" : "Importeer uw Franz 4-services", |
23 | "import.skip.label" : "Ik wil services handmatig toevoegen", | 32 | "import.notSupportedHeadline" : "Services die (nog) niet ondersteund worden in Franz 5", |
33 | "import.skip.label" : "Ik wil diensten handmatig toevoegen", | ||
24 | "import.submit.label" : "Importeer services", | 34 | "import.submit.label" : "Importeer services", |
25 | "infobar.buttonChangelog" : "Wat is er nieuw?", | 35 | "infobar.buttonChangelog" : "Wat is er nieuw?", |
26 | "infobar.buttonInstallUpdate" : "Opnieuw opstarten & update installeren", | 36 | "infobar.buttonInstallUpdate" : "Opnieuw opstarten & update installeren", |
27 | "infobar.buttonReloadServices" : "Services opnieuw laden", | 37 | "infobar.buttonReloadServices" : "Services opnieuw laden", |
28 | "infobar.requiredRequestsFailed" : "Kan de services en gebruikersinformatie niet laden", | 38 | "infobar.requiredRequestsFailed" : "Kan de services en gebruikersinformatie niet laden", |
29 | "infobar.servicesUpdated" : "Je services zijn bijgewerkt.", | 39 | "infobar.servicesUpdated" : "Je services zijn bijgewerkt.", |
30 | "infobar.updateAvailable" : "Er is een nieuwe update voor Ferdi beschikbaar.", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Een nieuwe update voor Franz is beschikbaar.", | ||
31 | "invite.email.label" : "E-mailadres", | 42 | "invite.email.label" : "E-mailadres", |
32 | "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit", | 43 | "invite.headline.friends" : "Nodig 3 vrienden of collega's uit", |
33 | "invite.name.label" : "Naam", | 44 | "invite.name.label" : "Naam", |
34 | "invite.skip.label" : "Ik wil dit later doen", | 45 | "invite.skip.label" : "Ik wil dit later doen", |
35 | "invite.submit.label" : "Uitnodigingen verzenden", | 46 | "invite.submit.label" : "Uitnodigingen verzenden", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "De sessie is verlopen, log alsjeblieft opnieuw in.", | 54 | "login.serverLogout" : "De sessie is verlopen, log alsjeblieft opnieuw in.", |
44 | "login.submit.label" : "Inloggen", | 55 | "login.submit.label" : "Inloggen", |
45 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", | 56 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", |
46 | "menu.app.about" : "Over Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
59 | "menu.app.about" : "Over Ferdi", | ||
47 | "menu.app.announcement" : "Wat is nieuw?", | 60 | "menu.app.announcement" : "Wat is nieuw?", |
48 | "menu.app.checkForUpdates" : "Controleer op updates", | 61 | "menu.app.checkForUpdates" : "Controleer op updates", |
49 | "menu.app.hide" : "Verbergen", | 62 | "menu.app.hide" : "Verbergen", |
@@ -62,29 +75,35 @@ | |||
62 | "menu.edit.selectAll" : "Selecteer alles", | 75 | "menu.edit.selectAll" : "Selecteer alles", |
63 | "menu.edit.speech" : "Spraak", | 76 | "menu.edit.speech" : "Spraak", |
64 | "menu.edit.startDictation" : "Beginnen met dicteren", | 77 | "menu.edit.startDictation" : "Beginnen met dicteren", |
65 | "menu.edit.startSpeaking" : "Beginnen met praten", | 78 | "menu.edit.startSpeaking" : "Begin met spreken", |
66 | "menu.edit.stopSpeaking" : "Stoppen met spreken", | 79 | "menu.edit.stopSpeaking" : "Stop met spreken", |
67 | "menu.edit.undo" : "Ongedaan maken", | 80 | "menu.edit.undo" : "Ongedaan maken", |
68 | "menu.file" : "Bestand", | 81 | "menu.file" : "Bestand", |
69 | "menu.help" : "Hulp", | 82 | "menu.help" : "Hulp", |
70 | "menu.help.changelog" : "Wijzigingenlogboek", | 83 | "menu.help.changelog" : "Wijzigingenlogboek", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Meer informatie", | 87 | "menu.help.learnMore" : "Meer informatie", |
72 | "menu.help.privacy" : "Privacy Voorwaarden", | 88 | "menu.help.privacy" : "Privacyvoorwaarden", |
73 | "menu.help.support" : "Ondersteuning", | 89 | "menu.help.support" : "Ondersteuning", |
74 | "menu.help.tos" : "Servicevoorwaarden", | 90 | "menu.help.tos" : "Servicevoorwaarden", |
75 | "menu.services" : "Diensten", | 91 | "menu.services" : "Services", |
76 | "menu.services.activatePreviousService" : "Activeer vorige dienst", | 92 | "menu.services.activatePreviousService" : "Activeer vorige service", |
77 | "menu.services.addNewService" : "Nieuwe dienst toevoegen", | 93 | "menu.services.addNewService" : "Nieuwe service toevoegen...", |
78 | "menu.services.setNextServiceActive" : "Activeer volgende dienst", | 94 | "menu.services.setNextServiceActive" : "Activeer volgende service", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Weergave", | 97 | "menu.view" : "Weergave", |
80 | "menu.view.enterFullScreen" : "Gebruik volledig scherm", | 98 | "menu.view.enterFullScreen" : "Gebruik volledig scherm", |
81 | "menu.view.exitFullScreen" : "Volledig scherm verlaten", | 99 | "menu.view.exitFullScreen" : "Volledig scherm verlaten", |
82 | "menu.view.reloadFranz" : "Herlaad Franz", | 100 | "menu.view.reloadFranz" : "Herlaad Ferdi", |
83 | "menu.view.reloadService" : "Een service opnieuw laden", | 101 | "menu.view.reloadService" : "Een service opnieuw laden", |
84 | "menu.view.resetZoom" : "Werkelijke grootte", | 102 | "menu.view.resetZoom" : "Werkelijke grootte", |
85 | "menu.view.toggleDevTools" : "Ontwikkelaarstools aan\/uit", | 103 | "menu.view.toggleDevTools" : "Ontwikkelaarstools aan\/uit", |
86 | "menu.view.toggleFullScreen" : "Volledig scherm aan\/uit", | 104 | "menu.view.toggleFullScreen" : "Volledig scherm aan\/uit", |
87 | "menu.view.toggleServiceDevTools" : "Service ontwikkelaarstools aan\/uit", | 105 | "menu.view.toggleServiceDevTools" : "Service ontwikkelaarstools aan\/uit", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Inzoomen", | 107 | "menu.view.zoomIn" : "Inzoomen", |
89 | "menu.view.zoomOut" : "Uitzoomen", | 108 | "menu.view.zoomOut" : "Uitzoomen", |
90 | "menu.window" : "Venster", | 109 | "menu.window" : "Venster", |
@@ -101,14 +120,37 @@ | |||
101 | "password.link.signup" : "Maak een gratis account", | 120 | "password.link.signup" : "Maak een gratis account", |
102 | "password.noUser" : "Geen gebruiker bekend met dat e-mailadres", | 121 | "password.noUser" : "Geen gebruiker bekend met dat e-mailadres", |
103 | "password.submit.label" : "Verzenden", | 122 | "password.submit.label" : "Verzenden", |
104 | "password.successInfo" : "Controleer alsjeblieft je e-mail", | 123 | "password.successInfo" : "Controleer je e-mail", |
105 | "premiumFeature.button.upgradeAccount" : "Upgrade Account", | 124 | "premiumFeature.button.upgradeAccount" : "Upgrade Account", |
106 | "pricing.headline" : "Steun Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Ik wil de ontwikkeling van Ferdi niet ondersteunen.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Ik wil de ontwikkeling van Ferdi steunen", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Selecteer je ondersteuningsplan", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Werkruimtes", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Laad {name} opnieuw", | 152 | "service.crashHandler.action" : "Laad {name} opnieuw", |
111 | "service.crashHandler.autoReload" : "Ga proberen om {name} te herstellen over {seconds} seconden", | 153 | "service.crashHandler.autoReload" : "Bezig om {name} te herstellen over {seconds} seconden", |
112 | "service.crashHandler.headline" : "Oh nee!", | 154 | "service.crashHandler.headline" : "Oh nee!", |
113 | "service.crashHandler.text" : "{name} heeft een fout veroorzaakt.", | 155 | "service.crashHandler.text" : "{name} heeft een fout veroorzaakt.", |
114 | "service.disabledHandler.action" : "Activeer {name}", | 156 | "service.disabledHandler.action" : "Activeer {name}", |
@@ -118,16 +160,21 @@ | |||
118 | "service.errorHandler.headline" : "Oh nee!", | 160 | "service.errorHandler.headline" : "Oh nee!", |
119 | "service.errorHandler.message" : "Fout", | 161 | "service.errorHandler.message" : "Fout", |
120 | "service.errorHandler.text" : "{name} kon niet geladen worden.", | 162 | "service.errorHandler.text" : "{name} kon niet geladen worden.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Aan het laden", | 168 | "service.webviewLoader.loading" : "Aan het laden", |
122 | "services.getStarted" : "Begin", | 169 | "services.getStarted" : "Begin", |
123 | "services.welcome" : "Welkom bij Franz", | 170 | "services.welcome" : "Welkom bij Ferdi", |
124 | "settings.account.account.editButton" : "Bewerk account", | 171 | "settings.account.account.editButton" : "Bewerk account", |
125 | "settings.account.accountType.basic" : "Basisaccount", | 172 | "settings.account.accountType.basic" : "Basisaccount", |
126 | "settings.account.accountType.premium" : "Premium Supporter Account", | 173 | "settings.account.accountType.premium" : "Premium Supporter Account", |
127 | "settings.account.buttonSave" : "Update profiel", | 174 | "settings.account.buttonSave" : "Update profiel", |
128 | "settings.account.deleteAccount" : "Verwijder account", | 175 | "settings.account.deleteAccount" : "Verwijder account", |
129 | "settings.account.deleteEmailSent" : "Je hebt een e-mail ontvangen met een link om de aanvraag tot verwijderen van het account te bevestigen. Je accountgegevens en -data kunnen niet worden teruggehaald!", | 176 | "settings.account.deleteEmailSent" : "Je hebt een e-mail ontvangen met een link om het verwijderen van je account te bevestigen. Je accountgegevens en -data kunnen na verwijderen niet meer worden teruggehaald!", |
130 | "settings.account.deleteInfo" : "Wanneer je je Franz-account niet langer wilt gebruiken, kan je je account en alle gerelateerde data hier verwijderen.", | 177 | "settings.account.deleteInfo" : "Wanneer je je Franz-account niet langer wilt gebruiken, kun je je account en alle gerelateerde data verwijderen.", |
131 | "settings.account.headline" : "Account", | 178 | "settings.account.headline" : "Account", |
132 | "settings.account.headlineAccount" : "Accountinformatie", | 179 | "settings.account.headlineAccount" : "Accountinformatie", |
133 | "settings.account.headlineDangerZone" : "Gevarenzone", | 180 | "settings.account.headlineDangerZone" : "Gevarenzone", |
@@ -135,28 +182,36 @@ | |||
135 | "settings.account.headlinePassword" : "Wijzig wachtwoord", | 182 | "settings.account.headlinePassword" : "Wijzig wachtwoord", |
136 | "settings.account.headlineProfile" : "Profiel bijwerken", | 183 | "settings.account.headlineProfile" : "Profiel bijwerken", |
137 | "settings.account.headlineSubscription" : "Je abonnement", | 184 | "settings.account.headlineSubscription" : "Je abonnement", |
138 | "settings.account.headlineUpgrade" : "Upgrade je account & steun Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Download", | 187 | "settings.account.invoiceDownload" : "Download", |
140 | "settings.account.manageSubscription.label" : "Beheer je abonnement", | 188 | "settings.account.manageSubscription.label" : "Beheer je abonnement", |
141 | "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen", | 189 | "settings.account.successInfo" : "Je wijzigingen zijn opgeslagen", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Probeer opnieuw", | 193 | "settings.account.tryReloadServices" : "Probeer opnieuw", |
143 | "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", | 194 | "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Kon gebruikersinformatie niet laden", | 196 | "settings.account.userInfoRequestFailed" : "Kon gebruikersinformatie niet laden", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Cache legen", | 198 | "settings.app.buttonClearAllCache" : "Cache legen", |
146 | "settings.app.buttonInstallUpdate" : "Herstart & installeer update", | 199 | "settings.app.buttonInstallUpdate" : "Opnieuw opstarten en updates installeren", |
147 | "settings.app.buttonSearchForUpdate" : "Controleer op updates", | 200 | "settings.app.buttonSearchForUpdate" : "Controleer op updates", |
148 | "settings.app.cacheInfo" : "De Franz-cache gebruikt op dit moment {size} schijfruimte.", | 201 | "settings.app.cacheInfo" : "Franz gebruikt op dit moment {size} schijfruimte aan tijdelijke bestanden.", |
149 | "settings.app.currentVersion" : "Huidige versie:", | 202 | "settings.app.currentVersion" : "Huidige versie:", |
150 | "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", | 203 | "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", |
151 | "settings.app.form.autoLaunchOnStart" : "Open Ferdi bij opstarten", | 204 | "settings.app.form.autoLaunchOnStart" : "Open Ferdi bij opstarten", |
152 | "settings.app.form.beta" : "Inclusief bètaversies", | 205 | "settings.app.form.beta" : "Inclusief bètaversies", |
153 | "settings.app.form.darkMode" : "Stap over naar de donkere kant", | 206 | "settings.app.form.darkMode" : "Stap over naar de donkere kant", |
154 | "settings.app.form.enableGPUAcceleration" : "Schakel videokaart acceleratie in ", | 207 | "settings.app.form.enableGPUAcceleration" : "Schakel videokaart-acceleratie in ", |
155 | "settings.app.form.enableSpellchecking" : "Zet spellingcontrole aan", | 208 | "settings.app.form.enableSpellchecking" : "Zet spellingcontrole aan", |
156 | "settings.app.form.enableSystemTray" : "Toon Ferdi in de systeembalk", | 209 | "settings.app.form.enableSystemTray" : "Pictogram voor Franz in systeemvak tonen", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Taal", | 212 | "settings.app.form.language" : "Taal", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimaliseer Ferdi naar de systeembalk", | 213 | "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar systeemvak", |
159 | "settings.app.form.runInBackground" : "Houd Ferdi op de achtergrond wanneer het venster gesloten wordt", | 214 | "settings.app.form.runInBackground" : "Houd Franz open op de achtergrond wanneer het venster gesloten wordt", |
160 | "settings.app.form.showDisabledServices" : "Toon uitgeschakelde services", | 215 | "settings.app.form.showDisabledServices" : "Toon uitgeschakelde services", |
161 | "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld", | 216 | "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld", |
162 | "settings.app.headline" : "Instellingen", | 217 | "settings.app.headline" : "Instellingen", |
@@ -165,13 +220,13 @@ | |||
165 | "settings.app.headlineGeneral" : "Algemeen", | 220 | "settings.app.headlineGeneral" : "Algemeen", |
166 | "settings.app.headlineLanguage" : "Taal", | 221 | "settings.app.headlineLanguage" : "Taal", |
167 | "settings.app.headlineUpdates" : "Updates", | 222 | "settings.app.headlineUpdates" : "Updates", |
168 | "settings.app.languageDisclaimer" : "Officiële vertalingen zijn in het Engels en Duits. Alle andere talen zijn beheerd door de community.", | 223 | "settings.app.languageDisclaimer" : "Franz spreekt officieel Engels en Duits. Alle andere talen worden beheerd door de community.", |
169 | "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig", | 224 | "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig", |
170 | "settings.app.subheadlineCache" : "Cache", | 225 | "settings.app.subheadlineCache" : "Cache", |
171 | "settings.app.translationHelp" : "Help ons om Ferdi te vertalen naar uw taal.", | 226 | "settings.app.translationHelp" : "Help ons om Franz uw taal te laten spreken.", |
172 | "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", | 227 | "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", |
173 | "settings.app.updateStatusSearching" : "Zoekt naar updates", | 228 | "settings.app.updateStatusSearching" : "Zoekt naar updates", |
174 | "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz", | 229 | "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Ferdi", |
175 | "settings.invite.headline" : "Nodig vrienden uit", | 230 | "settings.invite.headline" : "Nodig vrienden uit", |
176 | "settings.navigation.account" : "Account", | 231 | "settings.navigation.account" : "Account", |
177 | "settings.navigation.availableServices" : "Beschikbare services", | 232 | "settings.navigation.availableServices" : "Beschikbare services", |
@@ -182,9 +237,15 @@ | |||
182 | "settings.navigation.yourServices" : "Jouw services", | 237 | "settings.navigation.yourServices" : "Jouw services", |
183 | "settings.navigation.yourWorkspaces" : "Jouw werkruimtes", | 238 | "settings.navigation.yourWorkspaces" : "Jouw werkruimtes", |
184 | "settings.recipes.all" : "Alle services", | 239 | "settings.recipes.all" : "Alle services", |
185 | "settings.recipes.dev" : "Ontwikkeling", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Beschikbare services", | 247 | "settings.recipes.headline" : "Beschikbare services", |
187 | "settings.recipes.missingService" : "Mist er een dienst?", | 248 | "settings.recipes.missingService" : "Mis je een service?", |
188 | "settings.recipes.mostPopular" : "Meest populair", | 249 | "settings.recipes.mostPopular" : "Meest populair", |
189 | "settings.recipes.nothingFound" : "Sorry, geen service gevonden met deze zoekterm.", | 250 | "settings.recipes.nothingFound" : "Sorry, geen service gevonden met deze zoekterm.", |
190 | "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd", | 251 | "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd", |
@@ -213,7 +274,7 @@ | |||
213 | "settings.service.form.iconUpload" : "Sleep en drop je afbeelding, of klik hier", | 274 | "settings.service.form.iconUpload" : "Sleep en drop je afbeelding, of klik hier", |
214 | "settings.service.form.indirectMessageInfo" : "Je ontvangt meldingen van alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", | 275 | "settings.service.form.indirectMessageInfo" : "Je ontvangt meldingen van alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", |
215 | "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten", | 276 | "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten", |
216 | "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldinggeluiden en afgespeelde audio uitgeschakeld zijn", | 277 | "settings.service.form.isMutedInfo" : "Indien uitgeschakeld, worden meldingen en audio niet afgespeeld", |
217 | "settings.service.form.name" : "Naam", | 278 | "settings.service.form.name" : "Naam", |
218 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy instellingen", | 279 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy instellingen", |
219 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 280 | "settings.service.form.proxy.host" : "Proxy Host\/IP", |
@@ -233,15 +294,15 @@ | |||
233 | "settings.services.discoverServices" : "Ontdek services", | 294 | "settings.services.discoverServices" : "Ontdek services", |
234 | "settings.services.headline" : "Jouw services", | 295 | "settings.services.headline" : "Jouw services", |
235 | "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.", | 296 | "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.", |
236 | "settings.services.servicesRequestFailed" : "Kan jouw diensten niet laden", | 297 | "settings.services.servicesRequestFailed" : "Kan jouw services niet laden", |
237 | "settings.services.tooltip.isDisabled" : "Service is uitgeschakeld", | 298 | "settings.services.tooltip.isDisabled" : "Service is uitgeschakeld", |
238 | "settings.services.tooltip.isMuted" : "Alle geluiden zijn uitgeschakeld", | 299 | "settings.services.tooltip.isMuted" : "Geluid is uitgeschakeld", |
239 | "settings.services.tooltip.notificationsDisabled" : "Meldingen zijn uitgeschakeld", | 300 | "settings.services.tooltip.notificationsDisabled" : "Meldingen zijn uitgeschakeld", |
240 | "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen", | 301 | "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen", |
241 | "settings.team.contentHeadline" : "Ferdi voor groepen", | 302 | "settings.team.contentHeadline" : "Franz voor Teams", |
242 | "settings.team.copy" : "Ferdi voor Teams geeft je de mogelijkheid om collega's uit te nodigen voor je team door hen een e-mail te sturen en hun inschrijvingen te beheren in je accountvoorkeuren. Verspil geen tijd met het instellen van inschrijvingen voor elk teamlid apart, vergeet meerdere facturen en verschillende afrekeningsperiodes - één team regeert alles!", | 303 | "settings.team.copy" : "Franz voor Teams geeft je de mogelijkheid om collega's uit te nodigen voor je team door hen een e-mail te sturen en hun inschrijvingen te beheren in je accountvoorkeuren. Verspil geen tijd met het instellen van inschrijvingen voor elk individueel teamlid, vergeet meerdere facturen en verschillende afrekeningsperiodes - één team om alles te regelen!", |
243 | "settings.team.headline" : "Team", | 304 | "settings.team.headline" : "Team", |
244 | "settings.team.intro" : "Gebruiken jij en je team Franz? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt, allemaal vanaf één account.", | 305 | "settings.team.intro" : "Gebruiken jij en je team Franz? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt. En dat alles vanuit één account.", |
245 | "settings.team.manageAction" : "Beheer je Team op meetfranz.com", | 306 | "settings.team.manageAction" : "Beheer je Team op meetfranz.com", |
246 | "settings.team.upgradeAction" : "Jouw Account opwaarderen", | 307 | "settings.team.upgradeAction" : "Jouw Account opwaarderen", |
247 | "settings.user.form.accountType.company" : "Bedrijf", | 308 | "settings.user.form.accountType.company" : "Bedrijf", |
@@ -258,75 +319,68 @@ | |||
258 | "settings.workspace.form.buttonDelete" : "Verwijder werkruimte", | 319 | "settings.workspace.form.buttonDelete" : "Verwijder werkruimte", |
259 | "settings.workspace.form.buttonSave" : "Sla werkruimte op", | 320 | "settings.workspace.form.buttonSave" : "Sla werkruimte op", |
260 | "settings.workspace.form.name" : "Naam", | 321 | "settings.workspace.form.name" : "Naam", |
261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Diensten in deze werkruimte", | 322 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in deze werkruimte", |
262 | "settings.workspace.form.yourWorkspaces" : "Jouw werkruimtes", | 323 | "settings.workspace.form.yourWorkspaces" : "Jouw werkruimtes", |
263 | "settings.workspaces.deletedInfo" : "Werkruimte is verwijderd", | 324 | "settings.workspaces.deletedInfo" : "Werkruimte is verwijderd", |
264 | "settings.workspaces.headline" : "Jouw werkplaatsen", | 325 | "settings.workspaces.headline" : "Jouw werkplaatsen", |
265 | "settings.workspaces.noWorkspacesAdded" : "Je hebt nog geen werkruimtes toegevoegd.", | 326 | "settings.workspaces.noWorkspacesAdded" : "Je hebt nog geen werkruimtes toegevoegd.", |
266 | "settings.workspaces.tryReloadWorkspaces" : "Probeer opnieuw", | 327 | "settings.workspaces.tryReloadWorkspaces" : "Probeer opnieuw", |
267 | "settings.workspaces.updatedInfo" : "Je wijzigingen zijn opgeslagen", | 328 | "settings.workspaces.updatedInfo" : "Je wijzigingen zijn opgeslagen", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Zie hier Ferdi Werkruimtes", | 329 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Zie hier Franz Werkruimtes", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi werkruimtes laat je aandacht geven aan wat nu belangrijk is. Maak verschillende sets van diensten aan en schakel gelijk wanneer tussen de verschillende sets.Jij beslist welke diensten je wanneer en waar nodig hebt, enkel zo kunnen wij jou helpen je focus te behouden. Of net makkelijk de switch te maken van werk naar ontspanning.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Franz werkruimtes laat je aandacht geven aan wat nu belangrijk is. Maak verschillende sets van services aan en schakel wanneer je wilt tussen de verschillende sets. Jij beslist welke services je wanneer en waar nodig hebt. Zo helpen wij jou je focus te behouden - of net zo gemakkelijk te switchen van werk naar ontspanning.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Kan jouw werkruimtes niet laden", | 331 | "settings.workspaces.workspacesRequestFailed" : "Kan jouw werkruimtes niet laden", |
271 | "sidebar.addNewService" : "Voeg service toe", | 332 | "sidebar.addNewService" : "Voeg service toe", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Werkruimte pagina sluiten", | 334 | "sidebar.closeWorkspaceDrawer" : "Werkruimte pagina sluiten", |
273 | "sidebar.muteApp" : "Schakel berichten & geluid uit", | 335 | "sidebar.muteApp" : "Berichten & geluid uitschakelen", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Werkruimte pagina openen", | 337 | "sidebar.openWorkspaceDrawer" : "Werkruimte pagina openen", |
275 | "sidebar.settings" : "Instellingen", | 338 | "sidebar.settings" : "Instellingen", |
276 | "sidebar.unmuteApp" : "Berichten & geluid inschakelen", | 339 | "sidebar.unmuteApp" : "Berichten & geluid inschakelen", |
277 | "signup.company.label" : "Bedrijf", | ||
278 | "signup.email.label" : "E-mailadres", | 340 | "signup.email.label" : "E-mailadres", |
279 | "signup.emailDuplicate" : "Er bestaat al een gebruiker met dat e-mailadres", | 341 | "signup.emailDuplicate" : "Er bestaat al een gebruiker met dat e-mailadres", |
280 | "signup.firstname.label" : "Voornaam", | 342 | "signup.firstname.label" : "Voornaam", |
281 | "signup.headline" : "Aanmelden", | 343 | "signup.headline" : "Aanmelden", |
282 | "signup.lastname.label" : "Achternaam", | 344 | "signup.lastname.label" : "Achternaam", |
283 | "signup.legal.info" : "Door een Franz-account aan te maken ga je akkoord met de", | 345 | "signup.legal.info" : "Door een Franz-account aan te maken ga je akkoord met de", |
284 | "signup.legal.privacy" : "Privacy Voorwaarden", | 346 | "signup.legal.privacy" : "Privacyvoorwaarden", |
285 | "signup.legal.terms" : "Gebruiksvoorwaarden", | 347 | "signup.legal.terms" : "Gebruiksvoorwaarden", |
286 | "signup.link.login" : "Al een account? Log in!", | 348 | "signup.link.login" : "Heb je al een account? Log in!", |
287 | "signup.password.label" : "Wachtwoord", | 349 | "signup.password.label" : "Wachtwoord", |
288 | "signup.submit.label" : "Account aanmaken", | 350 | "signup.submit.label" : "Account aanmaken", |
289 | "subscription.euTaxInfo" : "Bewoners binnen EU: lokale belasting kan van toepassing zijn", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Geen advertenties, nooit!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "komt binnenkort", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "Geen haperingen & pop ups over upgrades", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Voeg op-locatie\/gehoste diensten zoals Mattermost toe", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Proxy understeuning voor diensten", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Ondersteuning voor spellingscheck", | ||
296 | "subscription.features.workspaces" : "Beheer je diensten in de werkruimtes", | ||
297 | "subscription.includedFeatures" : "Betaald Ferdi Premium Supporter Account bevat", | ||
298 | "subscription.paymentSessionError" : "Kan betaalformulier niet initialiseren", | ||
299 | "subscription.submit.label" : "Ik wil de ontwikkeling van Ferdi ondersteunen", | ||
300 | "subscription.type.free" : "gratis", | ||
301 | "subscription.type.month" : "maand", | ||
302 | "subscription.type.year" : "jaar", | ||
303 | "subscriptionPopup.buttonCancel" : "Annuleer", | 357 | "subscriptionPopup.buttonCancel" : "Annuleer", |
304 | "subscriptionPopup.buttonDone" : "Klaar", | 358 | "subscriptionPopup.buttonDone" : "Klaar", |
305 | "tabs.item.deleteService" : "Verwijder service", | 359 | "tabs.item.deleteService" : "Verwijder service", |
306 | "tabs.item.disableAudio" : "Schakel audio uit", | 360 | "tabs.item.disableAudio" : "Audio uitschakelen", |
307 | "tabs.item.disableNotifications" : "Schakel meldingen uit", | 361 | "tabs.item.disableNotifications" : "Meldingen uitschakelen", |
308 | "tabs.item.disableService" : "Schakel service uit", | 362 | "tabs.item.disableService" : "Service uitschakelen", |
309 | "tabs.item.edit" : "Bewerken", | 363 | "tabs.item.edit" : "Bewerken", |
310 | "tabs.item.enableAudio" : "Audio inschakelen", | 364 | "tabs.item.enableAudio" : "Audio inschakelen", |
311 | "tabs.item.enableNotification" : "Meldingen inschakelen", | 365 | "tabs.item.enableNotification" : "Meldingen inschakelen", |
312 | "tabs.item.enableService" : "Service inschakelen", | 366 | "tabs.item.enableService" : "Service inschakelen", |
313 | "tabs.item.reload" : "Herladen", | 367 | "tabs.item.reload" : "Herladen", |
314 | "validation.email" : "{field} is niet geldig", | 368 | "validation.email" : "{field} is niet geldig", |
315 | "validation.minLength" : "{field} moet minimaal {length} karakters lang zijn", | 369 | "validation.minLength" : "{field} dient minimaal {length} karakters lang te zijn", |
316 | "validation.oneRequired" : "Er is op zijn minst één vereist", | 370 | "validation.oneRequired" : "Minstens één vereist", |
317 | "validation.required" : "{field} is vereist", | 371 | "validation.required" : "{field} is vereist", |
318 | "validation.url" : "{field} is niet een geldige URL", | 372 | "validation.url" : "{field} is geen geldige URL", |
319 | "welcome.loginButton" : "Log in op je account", | 373 | "welcome.loginButton" : "Log in op je account", |
320 | "welcome.signupButton" : "Maak een gratis account", | 374 | "welcome.signupButton" : "Maak een gratis account", |
321 | "workspaceDrawer.addNewWorkspaceLabel" : "Voeg een nieuwe werkruimte toe", | 375 | "workspaceDrawer.addNewWorkspaceLabel" : "Voeg een nieuwe werkruimte toe", |
322 | "workspaceDrawer.allServices" : "Alle diensten", | 376 | "workspaceDrawer.allServices" : "Alle services", |
323 | "workspaceDrawer.headline" : "Werkruimtes", | 377 | "workspaceDrawer.headline" : "Werkruimtes", |
324 | "workspaceDrawer.item.contextMenuEdit" : "bewerken", | 378 | "workspaceDrawer.item.contextMenuEdit" : "bewerken", |
325 | "workspaceDrawer.item.noServicesAddedYet" : "Nog geen diensten toegevoegd", | 379 | "workspaceDrawer.item.noServicesAddedYet" : "Nog geen services toegevoegd", |
326 | "workspaceDrawer.premiumCtaButtonLabel" : "Maak je eerste werkruimte", | 380 | "workspaceDrawer.premiumCtaButtonLabel" : "Maak je eerste werkruimte", |
327 | "workspaceDrawer.proFeatureBadge" : "Premium feature", | 381 | "workspaceDrawer.proFeatureBadge" : "Premium feature", |
328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Heractiveer premium account", | 382 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Premium account heractiveren", |
329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Ferdi werkruimtes laat je aandacht geven aan wat nu belangrijk is. Maak verschillende sets van diensten aan en schakel gelijk wanneer tussen de verschillende sets.<\/p><p>Jij beslist welke diensten je wanneer en waar nodig hebt, enkel zo kunnen wij jou helpen je focus te behouden. Of net makkelijk de switch te maken van werk naar ontspanning.<\/p>", | 383 | "workspaceDrawer.workspaceFeatureInfo" : "Franz werkruimtes laat je aandacht geven aan wat nu belangrijk is. Maak verschillende sets van services aan en schakel wanneer je wilt tussen de verschillende sets. Jij beslist welke services je wanneer en waar nodig hebt. Zo helpen wij jou je focus te behouden - of net zo gemakkelijk te switchen van werk naar ontspanning.", |
330 | "workspaceDrawer.workspacesSettingsTooltip" : "Pas werkruimte instellingen aan", | 384 | "workspaceDrawer.workspacesSettingsTooltip" : "Werkruimte instellingen aanpassen", |
331 | "workspaces.switchingIndicator.switchingTo" : "Overschakelen naar" | 385 | "workspaces.switchingIndicator.switchingTo" : "Overschakelen naar" |
332 | } | 386 | } |
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index f94c6e10c..0c5eee9e6 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json | |||
@@ -2,24 +2,34 @@ | |||
2 | "app.errorHandler.action" : "Odśwież", | 2 | "app.errorHandler.action" : "Odśwież", |
3 | "app.errorHandler.headline" : "Coś poszło nie tak.", | 3 | "app.errorHandler.headline" : "Coś poszło nie tak.", |
4 | "feature.announcements.changelog.headline" : "Zmiany we Franzie {version}", | 4 | "feature.announcements.changelog.headline" : "Zmiany we Franzie {version}", |
5 | "feature.delayApp.action" : "Uzyskaj licencję Ferdi Supporter", | 5 | "feature.delayApp.headline" : "Aby nie czekać, kup licencję Franz Supporter", |
6 | "feature.delayApp.headline" : "Aby nie czekać, kup licencję Ferdi Supporter", | 6 | "feature.delayApp.text" : "Franz będzie kontynuował za {seconds} sekund.", |
7 | "feature.delayApp.text" : "Ferdi będzie kontynuował za {seconds} sekund.", | 7 | "feature.delayApp.trial.action" : "Tak, chcę darmową 14-dniową wersję próbną Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Aktywuj darmową wersję próbną Franz Professional", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Uzyskaj licencjÄ™ Franz Supporter", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Ulepsz swoje konto", | ||
12 | "feature.serviceLimit.limitReached" : "Dodałeś {amount} z {limit} usług, które oferuje twój plan. Ulepsz swoje konto, aby dodać więcej usług.", | ||
8 | "feature.shareFranz.action.email" : "Wyślij jako email", | 13 | "feature.shareFranz.action.email" : "Wyślij jako email", |
9 | "feature.shareFranz.action.facebook" : "Udostępnij na Facebooku", | 14 | "feature.shareFranz.action.facebook" : "Udostępnij na Facebooku", |
10 | "feature.shareFranz.action.twitter" : "Udostępnij na Twitterze", | 15 | "feature.shareFranz.action.twitter" : "Udostępnij na Twitterze", |
11 | "feature.shareFranz.headline" : "Ferdi jest lepszy, gdy tworzymy go razem!", | 16 | "feature.shareFranz.headline" : "Franz jest lepszy, gdy tworzymy go razem!", |
12 | "feature.shareFranz.shareText.email" : "Dodałem {count} serwisów do Franza! Pobierz darmową aplikację z WhatsApp, Messenger, Slack, Skype i innymi na www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "Dodałem {count} usług do Franza! Pobierz darmową aplikację z WhatsApp, Messenger, Slack, Skype i innymi na www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "Dodałem {count} serwisów do Franza! Pobierz darmową aplikację z WhatsApp, Messenger, Slack, Skype i innymi na www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "Dodałem {count} usług do Franza! Pobierz darmową aplikację z WhatsApp, Messenger, Slack, Skype i innymi na www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Powiedz znajomym i kolegom o tym, jak odlotowy jest Ferdi i pomóż nam go spopularyzować.", | 19 | "feature.shareFranz.text" : "Powiedz znajomym i kolegom o tym, jak odlotowy jest Franz i pomóż nam go spopularyzować.", |
15 | "global.api.unhealthy" : "Nie można połączyć się z usługami Ferdi online", | 20 | "feature.todos.premium.info" : "Listy zadań Franz są już dostępne dla użytkowników premium!", |
21 | "feature.todos.premium.rollout" : "Wszyscy inni będą musieli zaczekać nieco dłużej.", | ||
22 | "feature.todos.premium.upgrade" : "Ulepsz konto", | ||
23 | "global.api.unhealthy" : "Nie można połączyć się z usługami Franz online", | ||
24 | "global.franzProRequired" : "Wymagany Franz Professional", | ||
16 | "global.notConnectedToTheInternet" : "Nie masz połączenia z Internetem.", | 25 | "global.notConnectedToTheInternet" : "Nie masz połączenia z Internetem.", |
17 | "global.spellchecker.useDefault" : "Użyj domyślnego dla systemu ({default})", | 26 | "global.spellchecker.useDefault" : "Użyj domyślnego dla systemu ({default})", |
18 | "global.spellchecking.autodetect" : "Automatycznie wykryj język", | 27 | "global.spellchecking.autodetect" : "Automatycznie wykryj język", |
19 | "global.spellchecking.autodetect.short" : "Automatycznie", | 28 | "global.spellchecking.autodetect.short" : "Automatycznie", |
20 | "global.spellchecking.language" : "Język sprawdzania pisowni", | 29 | "global.spellchecking.language" : "Język sprawdzania pisowni", |
21 | "import.headline" : "Importuj usługi Ferdi 4", | 30 | "global.upgradeButton.upgradeToPro" : "Ulepsz konto do Franz Professional", |
22 | "import.notSupportedHeadline" : "Usługi, które nie są jeszcze obsługiwane w Ferdi 5", | 31 | "import.headline" : "Importuj usługi Franz 4", |
32 | "import.notSupportedHeadline" : "Usługi, które nie są jeszcze obsługiwane w Franz 5", | ||
23 | "import.skip.label" : "Chcę dodać usługi samodzielnie", | 33 | "import.skip.label" : "Chcę dodać usługi samodzielnie", |
24 | "import.submit.label" : "Zaimportuj usługi", | 34 | "import.submit.label" : "Zaimportuj usługi", |
25 | "infobar.buttonChangelog" : "Co nowego?", | 35 | "infobar.buttonChangelog" : "Co nowego?", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "Odśwież usługi", | 37 | "infobar.buttonReloadServices" : "Odśwież usługi", |
28 | "infobar.requiredRequestsFailed" : "Nie można załadować usług i informacji użytkownika", | 38 | "infobar.requiredRequestsFailed" : "Nie można załadować usług i informacji użytkownika", |
29 | "infobar.servicesUpdated" : "Usługi zostały zaktualizowane.", | 39 | "infobar.servicesUpdated" : "Usługi zostały zaktualizowane.", |
40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", | ||
30 | "infobar.updateAvailable" : "Dostępna jest nowa wersja Franza.", | 41 | "infobar.updateAvailable" : "Dostępna jest nowa wersja Franza.", |
31 | "invite.email.label" : "Adres email", | 42 | "invite.email.label" : "Adres email", |
32 | "invite.headline.friends" : "Zaproś 3 znajomych lub kolegów", | 43 | "invite.headline.friends" : "Zaproś 3 znajomych lub kolegów", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "Twoja sesja wygasła, zaloguj się ponownie.", | 54 | "login.serverLogout" : "Twoja sesja wygasła, zaloguj się ponownie.", |
44 | "login.submit.label" : "Zaloguj siÄ™", | 55 | "login.submit.label" : "Zaloguj siÄ™", |
45 | "login.tokenExpired" : "Twoja sesja wygasła, zaloguj się ponownie.", | 56 | "login.tokenExpired" : "Twoja sesja wygasła, zaloguj się ponownie.", |
57 | "menu.Todoss.closeTodosDrawer" : "Zamknij zakładkę Lista zadań", | ||
58 | "menu.Todoss.openTodosDrawer" : "Otwórz zakładkę Lista zadań", | ||
46 | "menu.app.about" : "O Franz", | 59 | "menu.app.about" : "O Franz", |
47 | "menu.app.announcement" : "Co słychać?", | 60 | "menu.app.announcement" : "Co słychać?", |
48 | "menu.app.checkForUpdates" : "Sprawdź aktualizacje", | 61 | "menu.app.checkForUpdates" : "Sprawdź aktualizacje", |
@@ -68,14 +81,19 @@ | |||
68 | "menu.file" : "Plik", | 81 | "menu.file" : "Plik", |
69 | "menu.help" : "Pomoc", | 82 | "menu.help" : "Pomoc", |
70 | "menu.help.changelog" : "Lista zmian", | 83 | "menu.help.changelog" : "Lista zmian", |
84 | "menu.help.debugInfo" : "Skopiuj informacje debugowania", | ||
85 | "menu.help.debugInfoCopiedBody" : "Informacje debugowania zostały skopiowane do schowka.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Informacje debugowania Franz", | ||
71 | "menu.help.learnMore" : "Dowiedz się więcej", | 87 | "menu.help.learnMore" : "Dowiedz się więcej", |
72 | "menu.help.privacy" : "Polityka prywatności", | 88 | "menu.help.privacy" : "Polityka prywatności", |
73 | "menu.help.support" : "Wsparcie", | 89 | "menu.help.support" : "Wsparcie", |
74 | "menu.help.tos" : "Warunki świadczenia usług", | 90 | "menu.help.tos" : "Warunki świadczenia usług", |
75 | "menu.services" : "Usługi", | 91 | "menu.services" : "Usługi", |
76 | "menu.services.activatePreviousService" : "Włącz poprzedni serwis", | 92 | "menu.services.activatePreviousService" : "Poprzednia usługa", |
77 | "menu.services.addNewService" : "Dodaj nową usługę...", | 93 | "menu.services.addNewService" : "Dodaj nową usługę...", |
78 | "menu.services.setNextServiceActive" : "Włącz kolejny serwis", | 94 | "menu.services.setNextServiceActive" : "Następna usługa", |
95 | "menu.todos" : "Lista zadań", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Widok", | 97 | "menu.view" : "Widok", |
80 | "menu.view.enterFullScreen" : "Włącz tryb pełnoekranowy", | 98 | "menu.view.enterFullScreen" : "Włącz tryb pełnoekranowy", |
81 | "menu.view.exitFullScreen" : "Zakończ tryb pełnoekranowy", | 99 | "menu.view.exitFullScreen" : "Zakończ tryb pełnoekranowy", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "Pokaż narzędzia developerskie", | 103 | "menu.view.toggleDevTools" : "Pokaż narzędzia developerskie", |
86 | "menu.view.toggleFullScreen" : "Przełącz tryb pełnoekranowy", | 104 | "menu.view.toggleFullScreen" : "Przełącz tryb pełnoekranowy", |
87 | "menu.view.toggleServiceDevTools" : "Włącz narzędzia developerskie usługi", | 105 | "menu.view.toggleServiceDevTools" : "Włącz narzędzia developerskie usługi", |
106 | "menu.view.toggleTodosDevTools" : "Przełącz narzędzia deweloperskie Listy zadań", | ||
88 | "menu.view.zoomIn" : "Powiększ", | 107 | "menu.view.zoomIn" : "Powiększ", |
89 | "menu.view.zoomOut" : "Pomniejsz", | 108 | "menu.view.zoomOut" : "Pomniejsz", |
90 | "menu.window" : "Okno", | 109 | "menu.window" : "Okno", |
@@ -102,11 +121,34 @@ | |||
102 | "password.noUser" : "Nie znaleziono użytkownika z takim adresem email", | 121 | "password.noUser" : "Nie znaleziono użytkownika z takim adresem email", |
103 | "password.submit.label" : "Wyślij", | 122 | "password.submit.label" : "Wyślij", |
104 | "password.successInfo" : "Proszę sprawdzić swój email", | 123 | "password.successInfo" : "Proszę sprawdzić swój email", |
105 | "premiumFeature.button.upgradeAccount" : "Ulepsz swoje konto", | 124 | "premiumFeature.button.upgradeAccount" : "Ulepsz konto", |
106 | "pricing.headline" : "Wspieraj Franz", | 125 | "pricing.features.adFree" : "Na zawsze bez reklam", |
107 | "pricing.link.skipPayment" : "Nie chcę wspierać rozwoju aplikacji Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Chcę wspierać rozwój aplikacji Franz", | 127 | "pricing.features.customWebsites" : "Dodawanie dowolnych stron internetowych", |
109 | "pricing.support.label" : "Wybierz swój plan wsparcia", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Obsługa sprawdzania pisowni", | ||
131 | "pricing.features.teamManagement" : "Zarządzanie zespołem", | ||
132 | "pricing.features.thirdPartyServices" : "Instalacja zewnętrznych usług", | ||
133 | "pricing.features.unlimitedServices" : "Dodawanie nielimitowanych usług", | ||
134 | "pricing.features.workspaces" : "Obszary robocze", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Franz", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Przeładuj {name}", | 152 | "service.crashHandler.action" : "Przeładuj {name}", |
111 | "service.crashHandler.autoReload" : "Próba automatycznego odnowienia {name} za {seconds} sekund\/y", | 153 | "service.crashHandler.autoReload" : "Próba automatycznego odnowienia {name} za {seconds} sekund\/y", |
112 | "service.crashHandler.headline" : "O nie!", | 154 | "service.crashHandler.headline" : "O nie!", |
@@ -118,6 +160,11 @@ | |||
118 | "service.errorHandler.headline" : "O nie!", | 160 | "service.errorHandler.headline" : "O nie!", |
119 | "service.errorHandler.message" : "BÅ‚Ä…d", | 161 | "service.errorHandler.message" : "BÅ‚Ä…d", |
120 | "service.errorHandler.text" : "Nie udało się załadować {name}.", | 162 | "service.errorHandler.text" : "Nie udało się załadować {name}.", |
163 | "service.restrictedHandler.action" : "Ulepsz konto", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Åadowanie", | 168 | "service.webviewLoader.loading" : "Åadowanie", |
122 | "services.getStarted" : "Zacznij", | 169 | "services.getStarted" : "Zacznij", |
123 | "services.welcome" : "Witaj w programie Franz", | 170 | "services.welcome" : "Witaj w programie Franz", |
@@ -135,28 +182,36 @@ | |||
135 | "settings.account.headlinePassword" : "Zmień hasło", | 182 | "settings.account.headlinePassword" : "Zmień hasło", |
136 | "settings.account.headlineProfile" : "Uaktualnij profil", | 183 | "settings.account.headlineProfile" : "Uaktualnij profil", |
137 | "settings.account.headlineSubscription" : "Twoja subskrypcja", | 184 | "settings.account.headlineSubscription" : "Twoja subskrypcja", |
138 | "settings.account.headlineUpgrade" : "Ulepsz swoje konto i wspieraj aplikacjÄ™ Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Pobierz", | 187 | "settings.account.invoiceDownload" : "Pobierz", |
140 | "settings.account.manageSubscription.label" : "ZarzÄ…dzaj swoimi subskrypcjami", | 188 | "settings.account.manageSubscription.label" : "ZarzÄ…dzaj swoimi subskrypcjami", |
141 | "settings.account.successInfo" : "Twoje zmiany zostały zapisane", | 189 | "settings.account.successInfo" : "Twoje zmiany zostały zapisane", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Spróbuj ponownie", | 193 | "settings.account.tryReloadServices" : "Spróbuj ponownie", |
143 | "settings.account.tryReloadUserInfoRequest" : "Spróbuj ponownie", | 194 | "settings.account.tryReloadUserInfoRequest" : "Spróbuj ponownie", |
195 | "settings.account.upgradeToPro.label" : "Ulepsz konto do Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Nie można wczytać informacji o użytkowniku", | 196 | "settings.account.userInfoRequestFailed" : "Nie można wczytać informacji o użytkowniku", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Wyczyść pamięć podręczną (cache)", | 198 | "settings.app.buttonClearAllCache" : "Wyczyść pamięć podręczną (cache)", |
146 | "settings.app.buttonInstallUpdate" : "Uruchom ponownie i zainstaluj aktualizacjÄ™", | 199 | "settings.app.buttonInstallUpdate" : "Uruchom ponownie i zainstaluj aktualizacjÄ™", |
147 | "settings.app.buttonSearchForUpdate" : "Sprawdź aktualizacje", | 200 | "settings.app.buttonSearchForUpdate" : "Sprawdź aktualizacje", |
148 | "settings.app.cacheInfo" : "Pamięć podręczna zajmuje obecnie {size} przestrzeni dyskowej", | 201 | "settings.app.cacheInfo" : "Pamięć podręczna zajmuje obecnie {size} przestrzeni dyskowej", |
149 | "settings.app.currentVersion" : "Aktualna wersja:", | 202 | "settings.app.currentVersion" : "Aktualna wersja:", |
150 | "settings.app.form.autoLaunchInBackground" : "Otwórz w tle", | 203 | "settings.app.form.autoLaunchInBackground" : "Otwórz w tle", |
151 | "settings.app.form.autoLaunchOnStart" : "Uruchom Ferdi na poczÄ…tku", | 204 | "settings.app.form.autoLaunchOnStart" : "Uruchom Franz na poczÄ…tku", |
152 | "settings.app.form.beta" : "Uwzględnij wersje beta", | 205 | "settings.app.form.beta" : "Uwzględnij wersje beta", |
153 | "settings.app.form.darkMode" : "Przejdź na Ciemną Stronę", | 206 | "settings.app.form.darkMode" : "Przejdź na Ciemną Stronę", |
154 | "settings.app.form.enableGPUAcceleration" : "WÅ‚Ä…cz akceleracjÄ™ GPU", | 207 | "settings.app.form.enableGPUAcceleration" : "WÅ‚Ä…cz akceleracjÄ™ GPU", |
155 | "settings.app.form.enableSpellchecking" : "WÅ‚Ä…cz sprawdzanie pisowni", | 208 | "settings.app.form.enableSpellchecking" : "WÅ‚Ä…cz sprawdzanie pisowni", |
156 | "settings.app.form.enableSystemTray" : "Pokaż Franza w obszarze powiadomień", | 209 | "settings.app.form.enableSystemTray" : "Pokaż Franza w obszarze powiadomień", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Język", | 212 | "settings.app.form.language" : "Język", |
158 | "settings.app.form.minimizeToSystemTray" : "Zminimalizuj aplikacjÄ™ Franz", | 213 | "settings.app.form.minimizeToSystemTray" : "Zminimalizuj aplikacjÄ™ Franz", |
159 | "settings.app.form.runInBackground" : "Zachowaj aplikację Ferdi w tle po zamknięciu okna", | 214 | "settings.app.form.runInBackground" : "Zachowaj aplikację Franz w tle po zamknięciu okna", |
160 | "settings.app.form.showDisabledServices" : "Wyłącz wyświetlanie zakładek z usługami", | 215 | "settings.app.form.showDisabledServices" : "Wyłącz wyświetlanie zakładek z usługami", |
161 | "settings.app.form.showMessagesBadgesWhenMuted" : "Pokaż licznik nieprzeczytanych wiadomości gdy powiadomienia są wyłączone", | 216 | "settings.app.form.showMessagesBadgesWhenMuted" : "Pokaż licznik nieprzeczytanych wiadomości gdy powiadomienia są wyłączone", |
162 | "settings.app.headline" : "Ustawienia", | 217 | "settings.app.headline" : "Ustawienia", |
@@ -166,9 +221,9 @@ | |||
166 | "settings.app.headlineLanguage" : "Język", | 221 | "settings.app.headlineLanguage" : "Język", |
167 | "settings.app.headlineUpdates" : "Aktualizacje", | 222 | "settings.app.headlineUpdates" : "Aktualizacje", |
168 | "settings.app.languageDisclaimer" : "Oficjalnymi językami są Angielski i Niemiecki. Inne języki są tłumaczone przez społeczność Franz.", | 223 | "settings.app.languageDisclaimer" : "Oficjalnymi językami są Angielski i Niemiecki. Inne języki są tłumaczone przez społeczność Franz.", |
169 | "settings.app.restartRequired" : "Zmiany. wymagajÄ… ponownego uruchomienia", | 224 | "settings.app.restartRequired" : "Zmiany wymagajÄ… ponownego uruchomienia", |
170 | "settings.app.subheadlineCache" : "Pamięć podręczna", | 225 | "settings.app.subheadlineCache" : "Pamięć podręczna", |
171 | "settings.app.translationHelp" : "Pomóż nam tłumaczyć Ferdi na Twój język.", | 226 | "settings.app.translationHelp" : "Pomóż nam tłumaczyć Franz na Twój język.", |
172 | "settings.app.updateStatusAvailable" : "Dostępna aktualizacja, pobieram...", | 227 | "settings.app.updateStatusAvailable" : "Dostępna aktualizacja, pobieram...", |
173 | "settings.app.updateStatusSearching" : "Szukam aktualizacji", | 228 | "settings.app.updateStatusSearching" : "Szukam aktualizacji", |
174 | "settings.app.updateStatusUpToDate" : "Używasz najnowszej wersji aplikacji Franz", | 229 | "settings.app.updateStatusUpToDate" : "Używasz najnowszej wersji aplikacji Franz", |
@@ -182,13 +237,19 @@ | |||
182 | "settings.navigation.yourServices" : "Twoje usługi", | 237 | "settings.navigation.yourServices" : "Twoje usługi", |
183 | "settings.navigation.yourWorkspaces" : "Twoje obszary robocze", | 238 | "settings.navigation.yourWorkspaces" : "Twoje obszary robocze", |
184 | "settings.recipes.all" : "Wszystkie usługi", | 239 | "settings.recipes.all" : "Wszystkie usługi", |
185 | "settings.recipes.dev" : "Rozwojowe", | 240 | "settings.recipes.custom" : "Własne usługi", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Dostępne usługi", | 247 | "settings.recipes.headline" : "Dostępne usługi", |
187 | "settings.recipes.missingService" : "Brak usługi?", | 248 | "settings.recipes.missingService" : "Brak usługi?", |
188 | "settings.recipes.mostPopular" : "Najpopularniejsze", | 249 | "settings.recipes.mostPopular" : "Najpopularniejsze", |
189 | "settings.recipes.nothingFound" : "Żadna usługa nie została znaleziona.", | 250 | "settings.recipes.nothingFound" : "Żadna usługa nie została znaleziona.", |
190 | "settings.recipes.servicesSuccessfulAddedInfo" : "Usługa została dodana pomyślnie", | 251 | "settings.recipes.servicesSuccessfulAddedInfo" : "Usługa została dodana pomyślnie", |
191 | "settings.searchService" : "Wyszukaj serwis", | 252 | "settings.searchService" : "Wyszukaj usługę", |
192 | "settings.service.error.goBack" : "Wróć do usług", | 253 | "settings.service.error.goBack" : "Wróć do usług", |
193 | "settings.service.error.headline" : "BÅ‚Ä…d", | 254 | "settings.service.error.headline" : "BÅ‚Ä…d", |
194 | "settings.service.error.message" : "Nie można wczytać przepisu usługi.", | 255 | "settings.service.error.message" : "Nie można wczytać przepisu usługi.", |
@@ -221,7 +282,7 @@ | |||
221 | "settings.service.form.proxy.isEnabled" : "Użyj Proxy", | 282 | "settings.service.form.proxy.isEnabled" : "Użyj Proxy", |
222 | "settings.service.form.proxy.password" : "Hasło (opcjonalnie)", | 283 | "settings.service.form.proxy.password" : "Hasło (opcjonalnie)", |
223 | "settings.service.form.proxy.port" : "Port", | 284 | "settings.service.form.proxy.port" : "Port", |
224 | "settings.service.form.proxy.restartInfo" : "Uruchom ponownie Ferdi po zmianie ustawień proxy.", | 285 | "settings.service.form.proxy.restartInfo" : "Uruchom ponownie Franz po zmianie ustawień proxy.", |
225 | "settings.service.form.proxy.user" : "Użytkownik (opcjonalnie)", | 286 | "settings.service.form.proxy.user" : "Użytkownik (opcjonalnie)", |
226 | "settings.service.form.saveButton" : "Zapisz usługę", | 287 | "settings.service.form.saveButton" : "Zapisz usługę", |
227 | "settings.service.form.tabHosted" : "Hostowane", | 288 | "settings.service.form.tabHosted" : "Hostowane", |
@@ -239,7 +300,7 @@ | |||
239 | "settings.services.tooltip.notificationsDisabled" : "Powiadomienia sÄ… nieaktywne", | 300 | "settings.services.tooltip.notificationsDisabled" : "Powiadomienia sÄ… nieaktywne", |
240 | "settings.services.updatedInfo" : "Zmiany zostały zapisane", | 301 | "settings.services.updatedInfo" : "Zmiany zostały zapisane", |
241 | "settings.team.contentHeadline" : "Zespoły Franz", | 302 | "settings.team.contentHeadline" : "Zespoły Franz", |
242 | "settings.team.copy" : "Ferdi umożliwia zespołom opcję zapraszania pracowników do zespołu wysyłając im maila z zaproszeniem i pozwala zarządzać ich subskrypcją w ustawieniach konta. Nie trać czasu na ustawianie subskrypcji dla każdego zespołu osobno, zapomnij o wielu fakturach i różnych cyklicznych opłatach - jeden zespół do zarządzania wszystkim!", | 303 | "settings.team.copy" : "Franz umożliwia zespołom opcję zapraszania pracowników do zespołu wysyłając im maila z zaproszeniem i pozwala zarządzać ich subskrypcją w ustawieniach konta. Nie trać czasu na ustawianie subskrypcji dla każdego zespołu osobno, zapomnij o wielu fakturach i różnych cyklicznych opłatach - jeden zespół do zarządzania wszystkim!", |
243 | "settings.team.headline" : "Zespół", | 304 | "settings.team.headline" : "Zespół", |
244 | "settings.team.intro" : "Czy Ty i zesół używacie programu Franz? Możesz teraz zarządzać subskrypcją Premium dla tylu kolegów, przyjaciół lub rodziny ilu chcesz, wszystko w obrębie jednego konta.", | 305 | "settings.team.intro" : "Czy Ty i zesół używacie programu Franz? Możesz teraz zarządzać subskrypcją Premium dla tylu kolegów, przyjaciół lub rodziny ilu chcesz, wszystko w obrębie jednego konta.", |
245 | "settings.team.manageAction" : "Zarządzaj zespołem na meetfranz.com", | 306 | "settings.team.manageAction" : "Zarządzaj zespołem na meetfranz.com", |
@@ -266,40 +327,33 @@ | |||
266 | "settings.workspaces.tryReloadWorkspaces" : "Spróbuj ponownie", | 327 | "settings.workspaces.tryReloadWorkspaces" : "Spróbuj ponownie", |
267 | "settings.workspaces.updatedInfo" : "Twoje zmiany zostały zapisane", | 328 | "settings.workspaces.updatedInfo" : "Twoje zmiany zostały zapisane", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Mniej znaczy więcej: Wprowadzenie do obszarów roboczych Franz", | 329 | "settings.workspaces.workspaceFeatureHeadline" : "Mniej znaczy więcej: Wprowadzenie do obszarów roboczych Franz", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Obszary robocze programu Ferdi pozawala Ci na skupieniu się na tym co ważne w danym momencie. Ustaw różne zestawy usług i przełączaj się między nimi w łatwiejszy sposób w dowolnym momencie. Decyduj, które usługi potrzebujesz , więc pomagamy Ci pozostawać na szczycie gry - lub łatwiej wyłączyć się z pracy kiedy tego potrzebujesz.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Obszary robocze programu Franz pozawala Ci na skupieniu się na tym co ważne w danym momencie. Ustaw różne zestawy usług i przełączaj się między nimi w łatwiejszy sposób w dowolnym momencie. Decyduj, które usługi potrzebujesz , więc pomagamy Ci pozostawać na szczycie gry - lub łatwiej wyłączyć się z pracy kiedy tego potrzebujesz.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Nie można załadować obszaru roboczego", | 331 | "settings.workspaces.workspacesRequestFailed" : "Nie można załadować obszaru roboczego", |
271 | "sidebar.addNewService" : "Dodaj kolejną usługę", | 332 | "sidebar.addNewService" : "Dodaj kolejną usługę", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Zamknij edycjÄ™ obszaru roboczego", | 334 | "sidebar.closeWorkspaceDrawer" : "Zamknij edycjÄ™ obszaru roboczego", |
273 | "sidebar.muteApp" : "Wyłącz powiadomienia i dźwięki", | 335 | "sidebar.muteApp" : "Wyłącz powiadomienia i dźwięki", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Otwórz edycję obszaru roboczego", | 337 | "sidebar.openWorkspaceDrawer" : "Otwórz edycję obszaru roboczego", |
275 | "sidebar.settings" : "Ustawienia", | 338 | "sidebar.settings" : "Ustawienia", |
276 | "sidebar.unmuteApp" : "Włącz powiadomienia i dźwięki", | 339 | "sidebar.unmuteApp" : "Włącz powiadomienia i dźwięki", |
277 | "signup.company.label" : "Firma", | ||
278 | "signup.email.label" : "Adres email", | 340 | "signup.email.label" : "Adres email", |
279 | "signup.emailDuplicate" : "Użytkownik z takim adresem email już istnieje", | 341 | "signup.emailDuplicate" : "Użytkownik z takim adresem email już istnieje", |
280 | "signup.firstname.label" : "ImiÄ™", | 342 | "signup.firstname.label" : "ImiÄ™", |
281 | "signup.headline" : "Zarejestruj siÄ™", | 343 | "signup.headline" : "Zarejestruj siÄ™", |
282 | "signup.lastname.label" : "Nazwisko", | 344 | "signup.lastname.label" : "Nazwisko", |
283 | "signup.legal.info" : "Poprzez utworzenie konta Ferdi akceptujesz", | 345 | "signup.legal.info" : "Poprzez utworzenie konta Franz akceptujesz", |
284 | "signup.legal.privacy" : "Polityka prywatności", | 346 | "signup.legal.privacy" : "Polityka prywatności", |
285 | "signup.legal.terms" : "Warunki świadczenia usług", | 347 | "signup.legal.terms" : "Warunki świadczenia usług", |
286 | "signup.link.login" : "Masz już konto, zalogować się?", | 348 | "signup.link.login" : "Masz już konto, zalogować się?", |
287 | "signup.password.label" : "Hasło", | 349 | "signup.password.label" : "Hasło", |
288 | "signup.submit.label" : "Stwórz konto", | 350 | "signup.submit.label" : "Stwórz konto", |
289 | "subscription.euTaxInfo" : "Rezydenci UE: lokalne stawki VAT mogą zostać zaaplikowane", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Brak reklam, na zawsze!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "wkrótce dostępne", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "Bez opóźnień i przypominania o ulepszeniu licencji", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Dodaj prywatnie hostowane usługi takie jak Mattermost", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Obsługa proxy dla usług", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Wsparcie dla sprawdzania pisowni", | ||
296 | "subscription.features.workspaces" : "Zarządzaj usługami w obszarach roboczych", | ||
297 | "subscription.includedFeatures" : "PÅ‚atne konto Ferdi Premium obejmuje", | ||
298 | "subscription.paymentSessionError" : "Nie można wczytać formularza płatności\"", | ||
299 | "subscription.submit.label" : "Chcę wspierać rozwój aplikacji Franz", | ||
300 | "subscription.type.free" : "za darmo", | ||
301 | "subscription.type.month" : "miesiÄ…c", | ||
302 | "subscription.type.year" : "rok", | ||
303 | "subscriptionPopup.buttonCancel" : "Anuluj", | 357 | "subscriptionPopup.buttonCancel" : "Anuluj", |
304 | "subscriptionPopup.buttonDone" : "Zrobione", | 358 | "subscriptionPopup.buttonDone" : "Zrobione", |
305 | "tabs.item.deleteService" : "Usuń usługę", | 359 | "tabs.item.deleteService" : "Usuń usługę", |
@@ -326,7 +380,7 @@ | |||
326 | "workspaceDrawer.premiumCtaButtonLabel" : "Stwórz pierwszy obszar roboczy", | 380 | "workspaceDrawer.premiumCtaButtonLabel" : "Stwórz pierwszy obszar roboczy", |
327 | "workspaceDrawer.proFeatureBadge" : "Funkcje Premium", | 381 | "workspaceDrawer.proFeatureBadge" : "Funkcje Premium", |
328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Aktywuj ponownie konto premium", | 382 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Aktywuj ponownie konto premium", |
329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Obszary robocze programu Ferdi pozawala Ci na skupieniu się na tym co ważne w danym momencie. Ustaw różne zestawy usług i przełączaj się między nimi w łatwiejszy sposób w dowolnym momencie. <\/p><p>Decyduj, które usługi potrzebujesz , więc pomagamy Ci pozostawać na szczycie gry - lub łatwiej wyłączyć się z pracy kiedy tego potrzebujesz.<\/p>", | 383 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Obszary robocze programu Franz pozawala Ci na skupieniu się na tym co ważne w danym momencie. Ustaw różne zestawy usług i przełączaj się między nimi w łatwiejszy sposób w dowolnym momencie. <\/p><p>Decyduj, które usługi potrzebujesz , więc pomagamy Ci pozostawać na szczycie gry - lub łatwiej wyłączyć się z pracy kiedy tego potrzebujesz.<\/p>", |
330 | "workspaceDrawer.workspacesSettingsTooltip" : "Edytuj ustawienia obszaru roboczego", | 384 | "workspaceDrawer.workspacesSettingsTooltip" : "Edytuj ustawienia obszaru roboczego", |
331 | "workspaces.switchingIndicator.switchingTo" : "Przełącz do" | 385 | "workspaces.switchingIndicator.switchingTo" : "Przełącz do" |
332 | } | 386 | } |
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index 1a94c9179..11f32c067 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recarregar", | 2 | "app.errorHandler.action" : "Recarregar", |
3 | "app.errorHandler.headline" : "Opa! Algo deu errado.", | 3 | "app.errorHandler.headline" : "Opa! Algo deu errado.", |
4 | "feature.announcements.changelog.headline" : "Mudanças no Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Mudanças no Franz {version}", |
5 | "feature.delayApp.action" : "Adquira uma licença de suporte Franz", | ||
6 | "feature.delayApp.headline" : "Por favor, adquira uma licença para pular o tempo de espera", | 5 | "feature.delayApp.headline" : "Por favor, adquira uma licença para pular o tempo de espera", |
7 | "feature.delayApp.text" : "Ferdi continuará em {seconds} segundos.", | 6 | "feature.delayApp.text" : "Franz continuará em {seconds} segundos.", |
7 | "feature.delayApp.trial.action" : "Sim, eu quero o perÃodo de testes gratuito de 14 dias do Franz Professional", | ||
8 | "feature.delayApp.trial.actionShort" : "Ativar perÃodo de testes gratuito do Franz Professional", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Adquira uma licença de suporte Franz", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Atualizar conta", | ||
12 | "feature.serviceLimit.limitReached" : "Você adicionou {amount} serviços de um total de {limit} que estão inclusos no seu plano. Por favor, atualize sua conta para adicionar mais serviços.", | ||
8 | "feature.shareFranz.action.email" : "Enviar por e-mail", | 13 | "feature.shareFranz.action.email" : "Enviar por e-mail", |
9 | "feature.shareFranz.action.facebook" : "Compartilhar no Facebook", | 14 | "feature.shareFranz.action.facebook" : "Compartilhar no Facebook", |
10 | "feature.shareFranz.action.twitter" : "Compartilhar no Twitter", | 15 | "feature.shareFranz.action.twitter" : "Compartilhar no Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi é melhor em grupo!", | 16 | "feature.shareFranz.headline" : "Franz é melhor em grupo!", |
12 | "feature.shareFranz.shareText.email" : "Eu adicionei {count} serviços ao Franz! Adquira o aplicativo gratuito para WhatsApp, Messenger, Slack, Skype e mais em www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "Eu adicionei {count} serviços ao Franz! Adquira o aplicativo gratuito para WhatsApp, Messenger, Slack, Skype e mais em www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "Eu adicionei uma contagem de serviços para o Franz! Baixe gratuitamente o aplicativo para WhatsApp, Messenger, Slack, Skype e outros em www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "Eu adicionei uma contagem de serviços para o Franz! Baixe gratuitamente o aplicativo para WhatsApp, Messenger, Slack, Skype e outros em www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Conte aos seus amigos e colegas o quanto incrÃvel o Ferdi é e nos ajude a espalhar a mensagem. ", | 19 | "feature.shareFranz.text" : "Conte aos seus amigos e colegas o quanto incrÃvel o Franz é e nos ajude a espalhar a mensagem. ", |
20 | "feature.todos.premium.info" : "As Listas de Tarefa do Franz estão disponÃveis para usuários premium!", | ||
21 | "feature.todos.premium.rollout" : "As outras pessoas terão que esperar um pouquinho mais.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
15 | "global.api.unhealthy" : "Não foi possÃvel conectar-se aos serviços on-line do Franz.", | 23 | "global.api.unhealthy" : "Não foi possÃvel conectar-se aos serviços on-line do Franz.", |
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Você não está conectado à internet", | 25 | "global.notConnectedToTheInternet" : "Você não está conectado à internet", |
17 | "global.spellchecker.useDefault" : "Use o padrão do sistema ({default})", | 26 | "global.spellchecker.useDefault" : "Use o padrão do sistema ({default})", |
18 | "global.spellchecking.autodetect" : "Detectar idioma automaticamente.", | 27 | "global.spellchecking.autodetect" : "Detectar idioma automaticamente.", |
19 | "global.spellchecking.autodetect.short" : "Automático", | 28 | "global.spellchecking.autodetect.short" : "Automático", |
20 | "global.spellchecking.language" : "Idioma para verificação ortográfica", | 29 | "global.spellchecking.language" : "Idioma para verificação ortográfica", |
21 | "import.headline" : "Importe seus serviços do Ferdi 4 ", | 30 | "global.upgradeButton.upgradeToPro" : "Atualizar para o Franz Profissional", |
22 | "import.notSupportedHeadline" : "Serviços ainda não suportados pelo Ferdi 5 ", | 31 | "import.headline" : "Importe seus serviços do Franz 4 ", |
32 | "import.notSupportedHeadline" : "Serviços ainda não suportados pelo Franz 5 ", | ||
23 | "import.skip.label" : "Quero adicionar serviços manualmente", | 33 | "import.skip.label" : "Quero adicionar serviços manualmente", |
24 | "import.submit.label" : "Importar serviços", | 34 | "import.submit.label" : "Importar serviços", |
25 | "infobar.buttonChangelog" : "O que há de novo?", | 35 | "infobar.buttonChangelog" : "O que há de novo?", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Recarregar serviços", | 37 | "infobar.buttonReloadServices" : "Recarregar serviços", |
28 | "infobar.requiredRequestsFailed" : "Não foi possÃvel carregar os serviços e informações de usuário", | 38 | "infobar.requiredRequestsFailed" : "Não foi possÃvel carregar os serviços e informações de usuário", |
29 | "infobar.servicesUpdated" : "Seus serviços foram atualizados.", | 39 | "infobar.servicesUpdated" : "Seus serviços foram atualizados.", |
30 | "infobar.updateAvailable" : "Uma nova atualização do Ferdi está disponÃvel.", | 40 | "infobar.trialActivated" : "O seu perÃodo de testes foi ativado com sucesso! Boas mensagens!", |
41 | "infobar.updateAvailable" : "Uma nova atualização do Franz está disponÃvel.", | ||
31 | "invite.email.label" : "Endereço de E-mail", | 42 | "invite.email.label" : "Endereço de E-mail", |
32 | "invite.headline.friends" : "Convide 3 amigos ou colegas", | 43 | "invite.headline.friends" : "Convide 3 amigos ou colegas", |
33 | "invite.name.label" : "Nome", | 44 | "invite.name.label" : "Nome", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "Sua sessão expirou, faça o login novamente.", | 54 | "login.serverLogout" : "Sua sessão expirou, faça o login novamente.", |
44 | "login.submit.label" : "Entrar", | 55 | "login.submit.label" : "Entrar", |
45 | "login.tokenExpired" : "Sua sessão expirou, faça o login novamente.", | 56 | "login.tokenExpired" : "Sua sessão expirou, faça o login novamente.", |
57 | "menu.Todoss.closeTodosDrawer" : "Fechar a gaveta de Listas de Tarefa", | ||
58 | "menu.Todoss.openTodosDrawer" : "Abrir a gaveta de Listas de Tarefa", | ||
46 | "menu.app.about" : "Sobre Franz", | 59 | "menu.app.about" : "Sobre Franz", |
47 | "menu.app.announcement" : "Quais as novidades?", | 60 | "menu.app.announcement" : "Quais as novidades?", |
48 | "menu.app.checkForUpdates" : "Verificar se há atualizações", | 61 | "menu.app.checkForUpdates" : "Verificar se há atualizações", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Arquivo", | 81 | "menu.file" : "Arquivo", |
69 | "menu.help" : "Ajuda", | 82 | "menu.help" : "Ajuda", |
70 | "menu.help.changelog" : "Registro de Alterações ", | 83 | "menu.help.changelog" : "Registro de Alterações ", |
84 | "menu.help.debugInfo" : "Copiar Informações de Depuração", | ||
85 | "menu.help.debugInfoCopiedBody" : "As Informações de Depuração foram copiadas para a área de transferência.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Informações de Depuração do Franz", | ||
71 | "menu.help.learnMore" : "Saiba Mais ", | 87 | "menu.help.learnMore" : "Saiba Mais ", |
72 | "menu.help.privacy" : "Declaração de Privacidade ", | 88 | "menu.help.privacy" : "Declaração de Privacidade ", |
73 | "menu.help.support" : "Suporte", | 89 | "menu.help.support" : "Suporte", |
@@ -76,6 +92,8 @@ | |||
76 | "menu.services.activatePreviousService" : "Pular para serviço anterior", | 92 | "menu.services.activatePreviousService" : "Pular para serviço anterior", |
77 | "menu.services.addNewService" : "Adicionar Novo Serviço", | 93 | "menu.services.addNewService" : "Adicionar Novo Serviço", |
78 | "menu.services.setNextServiceActive" : "Pular para próximo serviço", | 94 | "menu.services.setNextServiceActive" : "Pular para próximo serviço", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Visualizar ", | 97 | "menu.view" : "Visualizar ", |
80 | "menu.view.enterFullScreen" : "Modo Tela Cheia", | 98 | "menu.view.enterFullScreen" : "Modo Tela Cheia", |
81 | "menu.view.exitFullScreen" : "Sair da Tela Cheia", | 99 | "menu.view.exitFullScreen" : "Sair da Tela Cheia", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "Ferramentas de Desenvolvedor", | 103 | "menu.view.toggleDevTools" : "Ferramentas de Desenvolvedor", |
86 | "menu.view.toggleFullScreen" : "Modo Tela Cheia", | 104 | "menu.view.toggleFullScreen" : "Modo Tela Cheia", |
87 | "menu.view.toggleServiceDevTools" : "Ferramentas de Serviços de Desenvolvedor", | 105 | "menu.view.toggleServiceDevTools" : "Ferramentas de Serviços de Desenvolvedor", |
106 | "menu.view.toggleTodosDevTools" : "Ativar as Ferramentas de Desenvolvedor das Listas de Tarefas ", | ||
88 | "menu.view.zoomIn" : "Ampliar", | 107 | "menu.view.zoomIn" : "Ampliar", |
89 | "menu.view.zoomOut" : "Reduzir", | 108 | "menu.view.zoomOut" : "Reduzir", |
90 | "menu.window" : "Modo Janela", | 109 | "menu.window" : "Modo Janela", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Enviar", | 122 | "password.submit.label" : "Enviar", |
104 | "password.successInfo" : "Por favor, verifique o seu e-mail", | 123 | "password.successInfo" : "Por favor, verifique o seu e-mail", |
105 | "premiumFeature.button.upgradeAccount" : "Atualizar conta", | 124 | "premiumFeature.button.upgradeAccount" : "Atualizar conta", |
106 | "pricing.headline" : "Apoie o Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Eu não quero apoiar o desenvolvimento do Franz.", | 126 | "pricing.features.appDelays" : "Sem Telas de Espera", |
108 | "pricing.submit.label" : "Eu quero apoiar o desenvolvimento do Franz", | 127 | "pricing.features.customWebsites" : "Adicionar Websites Personalizados", |
109 | "pricing.support.label" : "Selecione uma opção de plano", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Gestão de Time", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Ãreas de Trabalho", | ||
135 | "pricing.plan.free" : "Franz Gratuito", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Pessoal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Pessoal Mensal", | ||
139 | "pricing.plan.personal-yearly" : "Franz Pessoal Anual", | ||
140 | "pricing.plan.pro" : "Franz Profissional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Profissional Mensal", | ||
142 | "pricing.plan.pro-yearly" : "Franz Profissional Anual", | ||
143 | "pricing.trial.cta.accept" : "Sim, atualizar minha conta para o Franz Profissional", | ||
144 | "pricing.trial.cta.skip" : "Continuar para o Franz", | ||
145 | "pricing.trial.error" : "Desculpe, não conseguimos ativar o seu perÃodo de testes", | ||
146 | "pricing.trial.features.headline" : "Incluso no Franz Profissional:", | ||
147 | "pricing.trial.headline" : "Franz Profissional", | ||
148 | "pricing.trial.subheadline" : "Sua oferta pessoal de boas-vindas:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Seu perÃodo de testes encerra automaticamente em 14 dias", | ||
150 | "pricing.trial.terms.headline" : "Sem vÃnculos", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Recarregar {name}", | 152 | "service.crashHandler.action" : "Recarregar {name}", |
111 | "service.crashHandler.autoReload" : "Tentando reestabelecer {name} automaticamente em {seconds} segundos", | 153 | "service.crashHandler.autoReload" : "Tentando reestabelecer {name} automaticamente em {seconds} segundos", |
112 | "service.crashHandler.headline" : "Ah, não!", | 154 | "service.crashHandler.headline" : "Ah, não!", |
@@ -118,6 +160,11 @@ | |||
118 | "service.errorHandler.headline" : "Ah, não!", | 160 | "service.errorHandler.headline" : "Ah, não!", |
119 | "service.errorHandler.message" : "Erro", | 161 | "service.errorHandler.message" : "Erro", |
120 | "service.errorHandler.text" : "{name} não pôde ser carregado.", | 162 | "service.errorHandler.text" : "{name} não pôde ser carregado.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Carregando", | 168 | "service.webviewLoader.loading" : "Carregando", |
122 | "services.getStarted" : "Iniciar", | 169 | "services.getStarted" : "Iniciar", |
123 | "services.welcome" : "Bem-vindo ao Franz!", | 170 | "services.welcome" : "Bem-vindo ao Franz!", |
@@ -135,28 +182,36 @@ | |||
135 | "settings.account.headlinePassword" : "Mudar senha", | 182 | "settings.account.headlinePassword" : "Mudar senha", |
136 | "settings.account.headlineProfile" : "Atualizar perfil", | 183 | "settings.account.headlineProfile" : "Atualizar perfil", |
137 | "settings.account.headlineSubscription" : "Sua assinatura", | 184 | "settings.account.headlineSubscription" : "Sua assinatura", |
138 | "settings.account.headlineUpgrade" : "Atualize a sua conta e ajude o Franz!", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Baixar", | 187 | "settings.account.invoiceDownload" : "Baixar", |
140 | "settings.account.manageSubscription.label" : "Gerencie a sua assinatura", | 188 | "settings.account.manageSubscription.label" : "Gerencie a sua assinatura", |
141 | "settings.account.successInfo" : "Suas alterações foram gravadas", | 189 | "settings.account.successInfo" : "Suas alterações foram gravadas", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Tente novamente", | 193 | "settings.account.tryReloadServices" : "Tente novamente", |
143 | "settings.account.tryReloadUserInfoRequest" : "Tentar novamente", | 194 | "settings.account.tryReloadUserInfoRequest" : "Tentar novamente", |
195 | "settings.account.upgradeToPro.label" : "Atualizar para o Franz Profissional", | ||
144 | "settings.account.userInfoRequestFailed" : "Não foi possÃvel carregar as informações do usuário", | 196 | "settings.account.userInfoRequestFailed" : "Não foi possÃvel carregar as informações do usuário", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Limpar cache", | 198 | "settings.app.buttonClearAllCache" : "Limpar cache", |
146 | "settings.app.buttonInstallUpdate" : "Reiniciar e instalar atualização", | 199 | "settings.app.buttonInstallUpdate" : "Reiniciar e instalar atualização", |
147 | "settings.app.buttonSearchForUpdate" : "Verificar por atualizações", | 200 | "settings.app.buttonSearchForUpdate" : "Verificar por atualizações", |
148 | "settings.app.cacheInfo" : "O cache do Ferdi está usando {size} de espaço em disco atualmente.", | 201 | "settings.app.cacheInfo" : "O cache do Franz está usando {size} de espaço em disco atualmente.", |
149 | "settings.app.currentVersion" : "Versão atual:", | 202 | "settings.app.currentVersion" : "Versão atual:", |
150 | "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano", | 203 | "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano", |
151 | "settings.app.form.autoLaunchOnStart" : "Abrir o Ferdi ao iniciar o sistema", | 204 | "settings.app.form.autoLaunchOnStart" : "Abrir o Franz ao iniciar o sistema", |
152 | "settings.app.form.beta" : "Incluir versões beta", | 205 | "settings.app.form.beta" : "Incluir versões beta", |
153 | "settings.app.form.darkMode" : "Venha para o Lado Negro da força", | 206 | "settings.app.form.darkMode" : "Venha para o Lado Negro da força", |
154 | "settings.app.form.enableGPUAcceleration" : "Ativar Aceleração de GPU", | 207 | "settings.app.form.enableGPUAcceleration" : "Ativar Aceleração de GPU", |
155 | "settings.app.form.enableSpellchecking" : "Ativar correção ortográfica", | 208 | "settings.app.form.enableSpellchecking" : "Ativar correção ortográfica", |
156 | "settings.app.form.enableSystemTray" : "Exibir o Ferdi na barra de sistema", | 209 | "settings.app.form.enableSystemTray" : "Exibir o Franz na barra de sistema", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Idioma", | 212 | "settings.app.form.language" : "Idioma", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimizar o Ferdi para a área de sistema", | 213 | "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a área de sistema", |
159 | "settings.app.form.runInBackground" : "Manter o Ferdi no fundo quando fechar a janela", | 214 | "settings.app.form.runInBackground" : "Manter o Franz no fundo quando fechar a janela", |
160 | "settings.app.form.showDisabledServices" : "Mostrar abas de serviços desativados", | 215 | "settings.app.form.showDisabledServices" : "Mostrar abas de serviços desativados", |
161 | "settings.app.form.showMessagesBadgesWhenMuted" : "Mostrar Ãcone de mensagem não lida quando as notificações estiverem desativadas", | 216 | "settings.app.form.showMessagesBadgesWhenMuted" : "Mostrar Ãcone de mensagem não lida quando as notificações estiverem desativadas", |
162 | "settings.app.headline" : "Configurações", | 217 | "settings.app.headline" : "Configurações", |
@@ -168,7 +223,7 @@ | |||
168 | "settings.app.languageDisclaimer" : "As traduções oficiais são em inglês e alemão. As demais traduções são baseadas na ajuda da comunidade.", | 223 | "settings.app.languageDisclaimer" : "As traduções oficiais são em inglês e alemão. As demais traduções são baseadas na ajuda da comunidade.", |
169 | "settings.app.restartRequired" : "As mudanças exigem reiniciar o sistema", | 224 | "settings.app.restartRequired" : "As mudanças exigem reiniciar o sistema", |
170 | "settings.app.subheadlineCache" : "memória cache", | 225 | "settings.app.subheadlineCache" : "memória cache", |
171 | "settings.app.translationHelp" : "Ajude-nos a traduzir o Ferdi para seu idioma.", | 226 | "settings.app.translationHelp" : "Ajude-nos a traduzir o Franz para seu idioma.", |
172 | "settings.app.updateStatusAvailable" : "Atualização disponÃvel, baixando...", | 227 | "settings.app.updateStatusAvailable" : "Atualização disponÃvel, baixando...", |
173 | "settings.app.updateStatusSearching" : "Buscando atualizações", | 228 | "settings.app.updateStatusSearching" : "Buscando atualizações", |
174 | "settings.app.updateStatusUpToDate" : "Você está usando a última versão do Franz", | 229 | "settings.app.updateStatusUpToDate" : "Você está usando a última versão do Franz", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Seus serviços", | 237 | "settings.navigation.yourServices" : "Seus serviços", |
183 | "settings.navigation.yourWorkspaces" : "Suas áreas de trabalho", | 238 | "settings.navigation.yourWorkspaces" : "Suas áreas de trabalho", |
184 | "settings.recipes.all" : "Todos os serviços", | 239 | "settings.recipes.all" : "Todos os serviços", |
185 | "settings.recipes.dev" : "Desenvolvimento", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Serviços disponÃveis", | 247 | "settings.recipes.headline" : "Serviços disponÃveis", |
187 | "settings.recipes.missingService" : "Sentiu falta de algum serviço?", | 248 | "settings.recipes.missingService" : "Sentiu falta de algum serviço?", |
188 | "settings.recipes.mostPopular" : "Mais populares", | 249 | "settings.recipes.mostPopular" : "Mais populares", |
@@ -195,7 +256,7 @@ | |||
195 | "settings.service.form.addServiceHeadline" : "Adicionar {name}", | 256 | "settings.service.form.addServiceHeadline" : "Adicionar {name}", |
196 | "settings.service.form.availableServices" : "Serviços disponÃveis", | 257 | "settings.service.form.availableServices" : "Serviços disponÃveis", |
197 | "settings.service.form.customUrl" : "Servidor personalizado", | 258 | "settings.service.form.customUrl" : "Servidor personalizado", |
198 | "settings.service.form.customUrlPremiumInfo" : "Para adicionar serviços auto-hospedados, você precisa de uma conta Apoiador Ferdi Premium.", | 259 | "settings.service.form.customUrlPremiumInfo" : "Para adicionar serviços auto-hospedados, você precisa de uma conta Apoiador Franz Premium.", |
199 | "settings.service.form.customUrlUpgradeAccount" : "Atualize a sua conta", | 260 | "settings.service.form.customUrlUpgradeAccount" : "Atualize a sua conta", |
200 | "settings.service.form.customUrlValidationError" : "Não foi possÃvel validar o servidor personalizado {name}.", | 261 | "settings.service.form.customUrlValidationError" : "Não foi possÃvel validar o servidor personalizado {name}.", |
201 | "settings.service.form.deleteButton" : "Apagar serviço", | 262 | "settings.service.form.deleteButton" : "Apagar serviço", |
@@ -221,7 +282,7 @@ | |||
221 | "settings.service.form.proxy.isEnabled" : "Usar o Proxy", | 282 | "settings.service.form.proxy.isEnabled" : "Usar o Proxy", |
222 | "settings.service.form.proxy.password" : "Senha (opcional)", | 283 | "settings.service.form.proxy.password" : "Senha (opcional)", |
223 | "settings.service.form.proxy.port" : "Porta", | 284 | "settings.service.form.proxy.port" : "Porta", |
224 | "settings.service.form.proxy.restartInfo" : "Por favor, reinicie o Ferdi após alterar as configurações de proxy.", | 285 | "settings.service.form.proxy.restartInfo" : "Por favor, reinicie o Franz após alterar as configurações de proxy.", |
225 | "settings.service.form.proxy.user" : "Usuário (opcional)", | 286 | "settings.service.form.proxy.user" : "Usuário (opcional)", |
226 | "settings.service.form.saveButton" : "Salvar serviço", | 287 | "settings.service.form.saveButton" : "Salvar serviço", |
227 | "settings.service.form.tabHosted" : "Hospedado", | 288 | "settings.service.form.tabHosted" : "Hospedado", |
@@ -238,8 +299,8 @@ | |||
238 | "settings.services.tooltip.isMuted" : "Sem som", | 299 | "settings.services.tooltip.isMuted" : "Sem som", |
239 | "settings.services.tooltip.notificationsDisabled" : "Notificações desativadas", | 300 | "settings.services.tooltip.notificationsDisabled" : "Notificações desativadas", |
240 | "settings.services.updatedInfo" : "Suas mudanças foram gravadas", | 301 | "settings.services.updatedInfo" : "Suas mudanças foram gravadas", |
241 | "settings.team.contentHeadline" : "Ferdi para Equipes", | 302 | "settings.team.contentHeadline" : "Franz para Equipes", |
242 | "settings.team.copy" : "\"Ferdi para Equipes\" possui a opção de convidar ajudantes para a sua equipe através de mensagens por e-mail e gerenciar as inscrições deles em suas preferências de conta. Não perca tempo configurando as inscrições para membro da equipe individualmente, esqueça as múltiplas faturas e tempos de pagamento. Uma regra universal para todos os membros da equipe.", | 303 | "settings.team.copy" : "\"Franz para Equipes\" possui a opção de convidar ajudantes para a sua equipe através de mensagens por e-mail e gerenciar as inscrições deles em suas preferências de conta. Não perca tempo configurando as inscrições para membro da equipe individualmente, esqueça as múltiplas faturas e tempos de pagamento. Uma regra universal para todos os membros da equipe.", |
243 | "settings.team.headline" : "Equipe", | 304 | "settings.team.headline" : "Equipe", |
244 | "settings.team.intro" : "Você e sua equipe usam Franz? Você pode agora administrar as inscrições pagas de todos os seus colegas, amigos e membros da famÃlia que você quiser, tudo isso em uma única conta.", | 305 | "settings.team.intro" : "Você e sua equipe usam Franz? Você pode agora administrar as inscrições pagas de todos os seus colegas, amigos e membros da famÃlia que você quiser, tudo isso em uma única conta.", |
245 | "settings.team.manageAction" : "Gerencie sua Equipe no meetfranz.com", | 306 | "settings.team.manageAction" : "Gerencie sua Equipe no meetfranz.com", |
@@ -266,15 +327,16 @@ | |||
266 | "settings.workspaces.tryReloadWorkspaces" : "Tente de novo", | 327 | "settings.workspaces.tryReloadWorkspaces" : "Tente de novo", |
267 | "settings.workspaces.updatedInfo" : "Suas mudanças foram salvas", | 328 | "settings.workspaces.updatedInfo" : "Suas mudanças foram salvas", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Menos é Mais: Introduzindo Workspaces do Franz", | 329 | "settings.workspaces.workspaceFeatureHeadline" : "Menos é Mais: Introduzindo Workspaces do Franz", |
269 | "settings.workspaces.workspaceFeatureInfo" : "As áreas de trabalho do Ferdi permite você focar no que realmente é importante agora. Configure diferentes conjuntos de serviços e alterne entre eles facilmente em qualquer momento. Você decide quais serviços você precisa e onde deseja colocá-los, então nós podemos te ajudar a aumentar a produtividade de suas tarefas. Ou facilmente deletar os aplicativos que você nunca irá precisar.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "As áreas de trabalho do Franz permite você focar no que realmente é importante agora. Configure diferentes conjuntos de serviços e alterne entre eles facilmente em qualquer momento. Você decide quais serviços você precisa e onde deseja colocá-los, então nós podemos te ajudar a aumentar a produtividade de suas tarefas. Ou facilmente deletar os aplicativos que você nunca irá precisar.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Não foi possÃvel carregar suas áreas de trabalho", | 331 | "settings.workspaces.workspacesRequestFailed" : "Não foi possÃvel carregar suas áreas de trabalho", |
271 | "sidebar.addNewService" : "Adicionar novo serviço", | 332 | "sidebar.addNewService" : "Adicionar novo serviço", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Fechar o menu da área de trabalho", | 334 | "sidebar.closeWorkspaceDrawer" : "Fechar o menu da área de trabalho", |
273 | "sidebar.muteApp" : "Desativar notificações e áudio", | 335 | "sidebar.muteApp" : "Desativar notificações e áudio", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Abrir menu da área de trabalho", | 337 | "sidebar.openWorkspaceDrawer" : "Abrir menu da área de trabalho", |
275 | "sidebar.settings" : "Ajustes", | 338 | "sidebar.settings" : "Ajustes", |
276 | "sidebar.unmuteApp" : "Ativar notificações e áudio", | 339 | "sidebar.unmuteApp" : "Ativar notificações e áudio", |
277 | "signup.company.label" : "Empresa", | ||
278 | "signup.email.label" : "Endereço de e-mail", | 340 | "signup.email.label" : "Endereço de e-mail", |
279 | "signup.emailDuplicate" : "Já existe um usuário com este endereço de e-mail", | 341 | "signup.emailDuplicate" : "Já existe um usuário com este endereço de e-mail", |
280 | "signup.firstname.label" : "Nome", | 342 | "signup.firstname.label" : "Nome", |
@@ -286,20 +348,12 @@ | |||
286 | "signup.link.login" : "Já tem uma conta?", | 348 | "signup.link.login" : "Já tem uma conta?", |
287 | "signup.password.label" : "Senha", | 349 | "signup.password.label" : "Senha", |
288 | "signup.submit.label" : "Criar uma conta", | 350 | "signup.submit.label" : "Criar uma conta", |
289 | "subscription.euTaxInfo" : "Residentes na União Europeia: taxas locais serão aplicadas", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Sem anúncios, pra sempre!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "em breve", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "Sem demora e sem chateação para comprar uma licença. ", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Adicionar serviços locais\/hospedados como o Mattermost", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Suporte de proxy para serviços", | 356 | "subscription.teaser.intro" : "O Franz 5 vem com uma variedade de novas funcionalidades para melhorar a sua comunicação diária - pilhas inclusas. Confira os nossos novos planos e encontre aquele que melhor serve para você!", |
295 | "subscription.features.spellchecker" : "Suporte para corretor ortográfico", | ||
296 | "subscription.features.workspaces" : "Organize seus serviços em áreas de trabalho", | ||
297 | "subscription.includedFeatures" : "A conta Apoiador Ferdi Premium inclui", | ||
298 | "subscription.paymentSessionError" : "Não foi possÃvel abrir o formulário de pagamento", | ||
299 | "subscription.submit.label" : "Eu quero apoiar o desenvolvimento do Franz", | ||
300 | "subscription.type.free" : "grátis", | ||
301 | "subscription.type.month" : "mês", | ||
302 | "subscription.type.year" : "ano", | ||
303 | "subscriptionPopup.buttonCancel" : "Cancelar", | 357 | "subscriptionPopup.buttonCancel" : "Cancelar", |
304 | "subscriptionPopup.buttonDone" : "Feito", | 358 | "subscriptionPopup.buttonDone" : "Feito", |
305 | "tabs.item.deleteService" : "Excluir serviço", | 359 | "tabs.item.deleteService" : "Excluir serviço", |
@@ -326,7 +380,7 @@ | |||
326 | "workspaceDrawer.premiumCtaButtonLabel" : "Crie sua primeira área de trabalho", | 380 | "workspaceDrawer.premiumCtaButtonLabel" : "Crie sua primeira área de trabalho", |
327 | "workspaceDrawer.proFeatureBadge" : "Vantagem paga oferecida aos assinantes", | 381 | "workspaceDrawer.proFeatureBadge" : "Vantagem paga oferecida aos assinantes", |
328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reative sua conta paga", | 382 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reative sua conta paga", |
329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>As áreas de trabalho do Ferdi te ajuda a focar no que realmente é importante agora. Configure diferente cenários para serviços e mude entre eles facilmente em qualquer momento. <\/p><p>Você decide quais serviços precisa e onde deseja posicioná-los, e então nós iremos te ajudar em aumentar a sua produtividade. Você pode desligar os serviços que não são úteis para você.<\/p>", | 383 | "workspaceDrawer.workspaceFeatureInfo" : "<p>As áreas de trabalho do Franz te ajuda a focar no que realmente é importante agora. Configure diferente cenários para serviços e mude entre eles facilmente em qualquer momento. <\/p><p>Você decide quais serviços precisa e onde deseja posicioná-los, e então nós iremos te ajudar em aumentar a sua produtividade. Você pode desligar os serviços que não são úteis para você.<\/p>", |
330 | "workspaceDrawer.workspacesSettingsTooltip" : "Editar configurações das áreas de trabalho", | 384 | "workspaceDrawer.workspacesSettingsTooltip" : "Editar configurações das áreas de trabalho", |
331 | "workspaces.switchingIndicator.switchingTo" : "Mudando para" | 385 | "workspaces.switchingIndicator.switchingTo" : "Mudando para" |
332 | } | 386 | } |
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index ced5c9183..d76a07165 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json | |||
@@ -1,24 +1,34 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recarregar", | 2 | "app.errorHandler.action" : "Recarregar", |
3 | "app.errorHandler.headline" : "Alguma coisa correu mal", | 3 | "app.errorHandler.headline" : "Alguma coisa correu mal", |
4 | "feature.announcements.changelog.headline" : "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", |
5 | "feature.delayApp.action" : "Faz parte do grupo de apoio do Franz", | 5 | "feature.delayApp.headline" : "Por favor compre uma licença Franz Supporter para saltar a fila de espera", |
6 | "feature.delayApp.headline" : "Por favor compre uma licença Ferdi Supporter para saltar a fila de espera", | 6 | "feature.delayApp.text" : "Franz irá continuar em {seconds} segundos.", |
7 | "feature.delayApp.text" : "Ferdi irá continuar em {seconds} segundos.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Faz parte do grupo de apoio do Ferdi", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Atualiza a tua conta", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Enviar por e-mail", | 13 | "feature.shareFranz.action.email" : "Enviar por e-mail", |
9 | "feature.shareFranz.action.facebook" : "Compartilahr no Facebook", | 14 | "feature.shareFranz.action.facebook" : "Compartilahr no Facebook", |
10 | "feature.shareFranz.action.twitter" : "Compartilhar no Twitter", | 15 | "feature.shareFranz.action.twitter" : "Compartilhar no Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi is better together!", | 16 | "feature.shareFranz.headline" : "Ferdi is better together!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
15 | "global.api.unhealthy" : "Não foi possÃvel estabelecer ligação aos serviços do Franz", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Não foi possÃvel estabelecer ligação aos serviços do Ferdi", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Não estás ligado à Internet", | 25 | "global.notConnectedToTheInternet" : "Não estás ligado à Internet", |
17 | "global.spellchecker.useDefault" : "Utilizar o Sistema por Omissão ({default})", | 26 | "global.spellchecker.useDefault" : "Utilizar o Sistema por Omissão ({default})", |
18 | "global.spellchecking.autodetect" : "Detectar a lingua automaticamente", | 27 | "global.spellchecking.autodetect" : "Detectar a lingua automaticamente", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 28 | "global.spellchecking.autodetect.short" : "Automatic", |
20 | "global.spellchecking.language" : "Linguagem para correção ortográfica", | 29 | "global.spellchecking.language" : "Linguagem para correção ortográfica", |
21 | "import.headline" : "Importa os teus serviços do Franz", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
31 | "import.headline" : "Importa os teus serviços do Ferdi", | ||
22 | "import.notSupportedHeadline" : "Estes serviços ainda não são suportados pelo Ferdi 5", | 32 | "import.notSupportedHeadline" : "Estes serviços ainda não são suportados pelo Ferdi 5", |
23 | "import.skip.label" : "Eu quero adicionar serviços manualmente", | 33 | "import.skip.label" : "Eu quero adicionar serviços manualmente", |
24 | "import.submit.label" : "Importar serviços", | 34 | "import.submit.label" : "Importar serviços", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Recarregar serviços", | 37 | "infobar.buttonReloadServices" : "Recarregar serviços", |
28 | "infobar.requiredRequestsFailed" : "Não foi possÃvel carregar os serviços e informações do utilizador", | 38 | "infobar.requiredRequestsFailed" : "Não foi possÃvel carregar os serviços e informações do utilizador", |
29 | "infobar.servicesUpdated" : "Os seus serviços foram atualizados.", | 39 | "infobar.servicesUpdated" : "Os seus serviços foram atualizados.", |
30 | "infobar.updateAvailable" : "Está disponÃvel uma nova atualização para o Franz", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Está disponÃvel uma nova atualização para o Ferdi", | ||
31 | "invite.email.label" : "Endereço de e-mail", | 42 | "invite.email.label" : "Endereço de e-mail", |
32 | "invite.headline.friends" : "Convide 3 amigos ou colegas", | 43 | "invite.headline.friends" : "Convide 3 amigos ou colegas", |
33 | "invite.name.label" : "Nome", | 44 | "invite.name.label" : "Nome", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "A sua sessão expirou, inicie sessão novamente.", | 54 | "login.serverLogout" : "A sua sessão expirou, inicie sessão novamente.", |
44 | "login.submit.label" : "Iniciar sessão", | 55 | "login.submit.label" : "Iniciar sessão", |
45 | "login.tokenExpired" : "A sua sessão expirou, inicie sessão novamente.", | 56 | "login.tokenExpired" : "A sua sessão expirou, inicie sessão novamente.", |
46 | "menu.app.about" : "Sobre o Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
59 | "menu.app.about" : "Sobre o Ferdi", | ||
47 | "menu.app.announcement" : "O que há de novo?", | 60 | "menu.app.announcement" : "O que há de novo?", |
48 | "menu.app.checkForUpdates" : "Procurar atualizações", | 61 | "menu.app.checkForUpdates" : "Procurar atualizações", |
49 | "menu.app.hide" : "Ocultar", | 62 | "menu.app.hide" : "Ocultar", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Ficheiro", | 81 | "menu.file" : "Ficheiro", |
69 | "menu.help" : "Ajuda", | 82 | "menu.help" : "Ajuda", |
70 | "menu.help.changelog" : "Registo de alterações", | 83 | "menu.help.changelog" : "Registo de alterações", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Saber mais", | 87 | "menu.help.learnMore" : "Saber mais", |
72 | "menu.help.privacy" : "Declaração de privacidade", | 88 | "menu.help.privacy" : "Declaração de privacidade", |
73 | "menu.help.support" : "Suporte", | 89 | "menu.help.support" : "Suporte", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Activar o serviço anterior", | 92 | "menu.services.activatePreviousService" : "Activar o serviço anterior", |
77 | "menu.services.addNewService" : "Adicionar Novo Serviço...", | 93 | "menu.services.addNewService" : "Adicionar Novo Serviço...", |
78 | "menu.services.setNextServiceActive" : "Activar o próximo serviço", | 94 | "menu.services.setNextServiceActive" : "Activar o próximo serviço", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Ver", | 97 | "menu.view" : "Ver", |
80 | "menu.view.enterFullScreen" : "Ativar Modo de Ecrã Completo", | 98 | "menu.view.enterFullScreen" : "Ativar Modo de Ecrã Completo", |
81 | "menu.view.exitFullScreen" : "Sair do Modo de Ecrã Completo", | 99 | "menu.view.exitFullScreen" : "Sair do Modo de Ecrã Completo", |
82 | "menu.view.reloadFranz" : "Recarregar Franz", | 100 | "menu.view.reloadFranz" : "Recarregar Ferdi", |
83 | "menu.view.reloadService" : "Recarregar serviço", | 101 | "menu.view.reloadService" : "Recarregar serviço", |
84 | "menu.view.resetZoom" : "Tamanho Real", | 102 | "menu.view.resetZoom" : "Tamanho Real", |
85 | "menu.view.toggleDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento", | 103 | "menu.view.toggleDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento", |
86 | "menu.view.toggleFullScreen" : "Ativar\/Desativar Ecrã Completo", | 104 | "menu.view.toggleFullScreen" : "Ativar\/Desativar Ecrã Completo", |
87 | "menu.view.toggleServiceDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento de Serviços", | 105 | "menu.view.toggleServiceDevTools" : "Ativar\/Desativar Ferramentas de Desenvolvimento de Serviços", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Aumentar", | 107 | "menu.view.zoomIn" : "Aumentar", |
89 | "menu.view.zoomOut" : "Reduzir", | 108 | "menu.view.zoomOut" : "Reduzir", |
90 | "menu.window" : "Janela", | 109 | "menu.window" : "Janela", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Submeter", | 122 | "password.submit.label" : "Submeter", |
104 | "password.successInfo" : "Por favor verifique o seu endereço de e-mail", | 123 | "password.successInfo" : "Por favor verifique o seu endereço de e-mail", |
105 | "premiumFeature.button.upgradeAccount" : "Atualiza a tua conta", | 124 | "premiumFeature.button.upgradeAccount" : "Atualiza a tua conta", |
106 | "pricing.headline" : "Apoie o Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Não pretendo patrocinar o desenvolvimento do Franz", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Pretendo patrocinar o desenvolvimento do Franz", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Selecione o seu plano", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Espaços de trabalho", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Recarregar {name}", | 152 | "service.crashHandler.action" : "Recarregar {name}", |
111 | "service.crashHandler.autoReload" : "A tentar restaurar automaticamente {name} em {seconds} segundos", | 153 | "service.crashHandler.autoReload" : "A tentar restaurar automaticamente {name} em {seconds} segundos", |
112 | "service.crashHandler.headline" : "Oh não!", | 154 | "service.crashHandler.headline" : "Oh não!", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "Oh não!", | 160 | "service.errorHandler.headline" : "Oh não!", |
119 | "service.errorHandler.message" : "Erro", | 161 | "service.errorHandler.message" : "Erro", |
120 | "service.errorHandler.text" : "{name} falhou o carregamento", | 162 | "service.errorHandler.text" : "{name} falhou o carregamento", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "A ler", | 168 | "service.webviewLoader.loading" : "A ler", |
122 | "services.getStarted" : "Vamos começar", | 169 | "services.getStarted" : "Vamos começar", |
123 | "services.welcome" : "Bem-vindo ao Franz", | 170 | "services.welcome" : "Bem-vindo ao Ferdi", |
124 | "settings.account.account.editButton" : "Editar conta", | 171 | "settings.account.account.editButton" : "Editar conta", |
125 | "settings.account.accountType.basic" : "Conta Básica", | 172 | "settings.account.accountType.basic" : "Conta Básica", |
126 | "settings.account.accountType.premium" : "Conta Premium", | 173 | "settings.account.accountType.premium" : "Conta Premium", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Alterar palavra-passe", | 182 | "settings.account.headlinePassword" : "Alterar palavra-passe", |
136 | "settings.account.headlineProfile" : "Atualizar perfil", | 183 | "settings.account.headlineProfile" : "Atualizar perfil", |
137 | "settings.account.headlineSubscription" : "A sua subscrição", | 184 | "settings.account.headlineSubscription" : "A sua subscrição", |
138 | "settings.account.headlineUpgrade" : "Atualize a sua conta e ajude o Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Transferir", | 187 | "settings.account.invoiceDownload" : "Transferir", |
140 | "settings.account.manageSubscription.label" : "Gerir as minhas subscrições", | 188 | "settings.account.manageSubscription.label" : "Gerir as minhas subscrições", |
141 | "settings.account.successInfo" : "As suas alterações foram efetuadas com sucesso", | 189 | "settings.account.successInfo" : "As suas alterações foram efetuadas com sucesso", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Tentar novamente", | 193 | "settings.account.tryReloadServices" : "Tentar novamente", |
143 | "settings.account.tryReloadUserInfoRequest" : "Tentar novamente", | 194 | "settings.account.tryReloadUserInfoRequest" : "Tentar novamente", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Não é possÃvel carregar a informação do utilizador", | 196 | "settings.account.userInfoRequestFailed" : "Não é possÃvel carregar a informação do utilizador", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Limpar cache", | 198 | "settings.app.buttonClearAllCache" : "Limpar cache", |
146 | "settings.app.buttonInstallUpdate" : "Reiniciar & instalar atualização", | 199 | "settings.app.buttonInstallUpdate" : "Reiniciar & instalar atualização", |
147 | "settings.app.buttonSearchForUpdate" : "Procurar atualizações", | 200 | "settings.app.buttonSearchForUpdate" : "Procurar atualizações", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Junta-te ao Lado Negro", | 206 | "settings.app.form.darkMode" : "Junta-te ao Lado Negro", |
154 | "settings.app.form.enableGPUAcceleration" : "Activar Aceleração de GPU", | 207 | "settings.app.form.enableGPUAcceleration" : "Activar Aceleração de GPU", |
155 | "settings.app.form.enableSpellchecking" : "Ativar verificação ortográfica", | 208 | "settings.app.form.enableSpellchecking" : "Ativar verificação ortográfica", |
156 | "settings.app.form.enableSystemTray" : "Mostrar o Ferdi na barra do sistema", | 209 | "settings.app.form.enableSystemTray" : "Mostrar o Franz na barra do sistema", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Idioma", | 212 | "settings.app.form.language" : "Idioma", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimizar o Ferdi para a barra do sistema", | 213 | "settings.app.form.minimizeToSystemTray" : "Minimizar o Ferdi para a barra do sistema", |
159 | "settings.app.form.runInBackground" : "Manter o Ferdi em segundo plano ao fechar a janela", | 214 | "settings.app.form.runInBackground" : "Manter o Ferdi em segundo plano ao fechar a janela", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Ajude-nos a traduzir a Ferdi para a sua lÃngua.", | 226 | "settings.app.translationHelp" : "Ajude-nos a traduzir a Ferdi para a sua lÃngua.", |
172 | "settings.app.updateStatusAvailable" : "Atualização disponivel, a transferir...", | 227 | "settings.app.updateStatusAvailable" : "Atualização disponivel, a transferir...", |
173 | "settings.app.updateStatusSearching" : "A procurar atualizações", | 228 | "settings.app.updateStatusSearching" : "A procurar atualizações", |
174 | "settings.app.updateStatusUpToDate" : "Está a usar a versão mais recente do Franz", | 229 | "settings.app.updateStatusUpToDate" : "Está a usar a versão mais recente do Ferdi", |
175 | "settings.invite.headline" : "Convide Amigos", | 230 | "settings.invite.headline" : "Convide Amigos", |
176 | "settings.navigation.account" : "Conta", | 231 | "settings.navigation.account" : "Conta", |
177 | "settings.navigation.availableServices" : "Serviços disponÃveis", | 232 | "settings.navigation.availableServices" : "Serviços disponÃveis", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Os seus serviços", | 237 | "settings.navigation.yourServices" : "Os seus serviços", |
183 | "settings.navigation.yourWorkspaces" : "Os teus Espaços de trabalho", | 238 | "settings.navigation.yourWorkspaces" : "Os teus Espaços de trabalho", |
184 | "settings.recipes.all" : "Todos os serviços", | 239 | "settings.recipes.all" : "Todos os serviços", |
185 | "settings.recipes.dev" : "Desenvolvimento", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Serviços disponÃveis", | 247 | "settings.recipes.headline" : "Serviços disponÃveis", |
187 | "settings.recipes.missingService" : "Falta um serviço?", | 248 | "settings.recipes.missingService" : "Falta um serviço?", |
188 | "settings.recipes.mostPopular" : "Os mais populares", | 249 | "settings.recipes.mostPopular" : "Os mais populares", |
@@ -221,7 +282,7 @@ | |||
221 | "settings.service.form.proxy.isEnabled" : "Usar Proxy", | 282 | "settings.service.form.proxy.isEnabled" : "Usar Proxy", |
222 | "settings.service.form.proxy.password" : "Palavra-chave (opcional)", | 283 | "settings.service.form.proxy.password" : "Palavra-chave (opcional)", |
223 | "settings.service.form.proxy.port" : "Porta", | 284 | "settings.service.form.proxy.port" : "Porta", |
224 | "settings.service.form.proxy.restartInfo" : "Reinicie, por favor, após atualizar as definições do Franz", | 285 | "settings.service.form.proxy.restartInfo" : "Reinicie, por favor, após atualizar as definições do Ferdi", |
225 | "settings.service.form.proxy.user" : "Utilizador (opcional)", | 286 | "settings.service.form.proxy.user" : "Utilizador (opcional)", |
226 | "settings.service.form.saveButton" : "Guardar serviço", | 287 | "settings.service.form.saveButton" : "Guardar serviço", |
227 | "settings.service.form.tabHosted" : "Com domÃnio", | 288 | "settings.service.form.tabHosted" : "Com domÃnio", |
@@ -265,16 +326,17 @@ | |||
265 | "settings.workspaces.noWorkspacesAdded" : "Ainda não adicionou nenhum Espaço de trabalho", | 326 | "settings.workspaces.noWorkspacesAdded" : "Ainda não adicionou nenhum Espaço de trabalho", |
266 | "settings.workspaces.tryReloadWorkspaces" : "Tentar novamente", | 327 | "settings.workspaces.tryReloadWorkspaces" : "Tentar novamente", |
267 | "settings.workspaces.updatedInfo" : "As suas alterações foram gravadas", | 328 | "settings.workspaces.updatedInfo" : "As suas alterações foram gravadas", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Menos é Mais: Introduzindo os Espaço de trabalho Franz", | 329 | "settings.workspaces.workspaceFeatureHeadline" : "Menos é Mais: Introduzindo os Espaço de trabalho Ferdi", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Adicionar um novo serviço", | 332 | "sidebar.addNewService" : "Adicionar um novo serviço", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Fechar a janela do Espaço de trabalho", | 334 | "sidebar.closeWorkspaceDrawer" : "Fechar a janela do Espaço de trabalho", |
273 | "sidebar.muteApp" : "Desativar notificações e áudio", | 335 | "sidebar.muteApp" : "Desativar notificações e áudio", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Abrir a janela do Espaço de trabalho", | 337 | "sidebar.openWorkspaceDrawer" : "Abrir a janela do Espaço de trabalho", |
275 | "sidebar.settings" : "Definições", | 338 | "sidebar.settings" : "Definições", |
276 | "sidebar.unmuteApp" : "Ativar notificações e áudio", | 339 | "sidebar.unmuteApp" : "Ativar notificações e áudio", |
277 | "signup.company.label" : "Empresa", | ||
278 | "signup.email.label" : "Endereço de email", | 340 | "signup.email.label" : "Endereço de email", |
279 | "signup.emailDuplicate" : "Já existe uma conta associada a este endereço de email", | 341 | "signup.emailDuplicate" : "Já existe uma conta associada a este endereço de email", |
280 | "signup.firstname.label" : "Primeiro Nome", | 342 | "signup.firstname.label" : "Primeiro Nome", |
@@ -286,20 +348,12 @@ | |||
286 | "signup.link.login" : "Já tem uma conta, iniciar sessão?", | 348 | "signup.link.login" : "Já tem uma conta, iniciar sessão?", |
287 | "signup.password.label" : "Palavra-passe", | 349 | "signup.password.label" : "Palavra-passe", |
288 | "signup.submit.label" : "Criar uma conta", | 350 | "signup.submit.label" : "Criar uma conta", |
289 | "subscription.euTaxInfo" : "Residentes EU: Taxas locais podem ser aplicadas", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Sem anúncios, para sempre!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "em breve", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "Sem atrasos na aplicação nem mensagens para comprar uma licença", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Adicione serviços como Mattermost no local ou online", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Suporte Proxy para os serviços", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Suporte para correção ortográfica", | ||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | ||
297 | "subscription.includedFeatures" : "Ao subscrever uma Conta Premium, tem acesso a", | ||
298 | "subscription.paymentSessionError" : "Erro no serviço de pagamento", | ||
299 | "subscription.submit.label" : "Pretendo ajudar o desenvolvimento do Franz", | ||
300 | "subscription.type.free" : "gratuito", | ||
301 | "subscription.type.month" : "mês", | ||
302 | "subscription.type.year" : "ano", | ||
303 | "subscriptionPopup.buttonCancel" : "Cancelar", | 357 | "subscriptionPopup.buttonCancel" : "Cancelar", |
304 | "subscriptionPopup.buttonDone" : "ConcluÃdo", | 358 | "subscriptionPopup.buttonDone" : "ConcluÃdo", |
305 | "tabs.item.deleteService" : "Apagar serviço", | 359 | "tabs.item.deleteService" : "Apagar serviço", |
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 369b95a41..691cb80e5 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Перезагрузить", | 2 | "app.errorHandler.action" : "Перезагрузить", |
3 | "app.errorHandler.headline" : "Что-то пошло не так", | 3 | "app.errorHandler.headline" : "Что-то пошло не так", |
4 | "feature.announcements.changelog.headline" : "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² верÑии Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² верÑии Franz {version}", |
5 | "feature.delayApp.action" : "Получите лицензию Ferdi Supporter", | 5 | "feature.delayApp.headline" : "ПожалуйÑта приобретите лицензию Franz Supporter чтобы убрать ожидание", |
6 | "feature.delayApp.headline" : "ПожалуйÑта приобретите лицензию Ferdi Supporter чтобы убрать ожидание", | 6 | "feature.delayApp.text" : "Franz продолжит работу через {seconds} Ñекунд.", |
7 | "feature.delayApp.text" : "Ferdi продолжит работу через {seconds} Ñекунд.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Получите лицензию Franz Supporter", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Перейти на платную подпиÑку", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Отправить email", | 13 | "feature.shareFranz.action.email" : "Отправить email", |
9 | "feature.shareFranz.action.facebook" : "ПоделитьÑÑ Ð½Ð° Facebook", | 14 | "feature.shareFranz.action.facebook" : "ПоделитьÑÑ Ð½Ð° Facebook", |
10 | "feature.shareFranz.action.twitter" : "ПоделитьÑÑ Ð² Twitter", | 15 | "feature.shareFranz.action.twitter" : "ПоделитьÑÑ Ð² Twitter", |
11 | "feature.shareFranz.headline" : "Сделаем Ferdi лучше вмеÑте!", | 16 | "feature.shareFranz.headline" : "Сделаем Ferdi лучше вмеÑте!", |
12 | "feature.shareFranz.shareText.email" : "Я добавил {count} ÑервиÑов во Franz! Теперь доÑтупны такие меÑÑенджеры как WhatsApp, Messenger, Slack, Skype и другие. Полый ÑпиÑок вы найдете на www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "Я добавил {count} ÑервиÑов во Franz! Теперь доÑтупны такие меÑÑенджеры как WhatsApp, Messenger, Slack, Skype и другие. Полый ÑпиÑок вы найдете на www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "Я добавил {count} ÑервиÑ(ов) в Franz! Скачай беÑплатную аппку Ð´Ð»Ñ WhatsApp, Messenger, Slack, Skype и иже на www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "Я добавил {count} ÑервиÑ(ов) в Franz! Скачай беÑплатную аппку Ð´Ð»Ñ WhatsApp, Messenger, Slack, Skype и иже на www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "РаÑÑкажи Ñвоим друзьÑм и коллегам наÑколько прелеÑтен Ferdi и помоги нам развитьÑÑ", | 19 | "feature.shareFranz.text" : "РаÑÑкажи Ñвоим друзьÑм и коллегам наÑколько прелеÑтен Franz и помоги нам развитьÑÑ", |
15 | "global.api.unhealthy" : "Ðевозможно подключитьÑÑ Ðº онлайн-ÑервиÑам Franz", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Ðевозможно подключитьÑÑ Ðº онлайн-ÑервиÑам Ferdi", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Ð’Ñ‹ не подключены к Ñети Интернет", | 25 | "global.notConnectedToTheInternet" : "Ð’Ñ‹ не подключены к Ñети Интернет", |
17 | "global.spellchecker.useDefault" : "ИÑпользовать ÑиÑтемные параметры по умолчанию ({default})", | 26 | "global.spellchecker.useDefault" : "ИÑпользовать ÑиÑтемные параметры по умолчанию ({default})", |
18 | "global.spellchecking.autodetect" : "Ðайти Ñзык автоматичеÑки", | 27 | "global.spellchecking.autodetect" : "Ðайти Ñзык автоматичеÑки", |
19 | "global.spellchecking.autodetect.short" : "Ðвто", | 28 | "global.spellchecking.autodetect.short" : "Ðвто", |
20 | "global.spellchecking.language" : "Проверка правопиÑаниÑ", | 29 | "global.spellchecking.language" : "Проверка правопиÑаниÑ", |
21 | "import.headline" : "Импортировать ваши ÑервиÑÑ‹ из Ferdi 4", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "СервиÑÑ‹ пока ещё не поддерживаютÑÑ Ð² Ferdi 5", | 31 | "import.headline" : "Импортировать ваши ÑервиÑÑ‹ из Franz 4", |
32 | "import.notSupportedHeadline" : "СервиÑÑ‹ пока ещё не поддерживаютÑÑ Ð² Franz 5", | ||
23 | "import.skip.label" : "Я хочу добавить ÑервиÑÑ‹ вручную", | 33 | "import.skip.label" : "Я хочу добавить ÑервиÑÑ‹ вручную", |
24 | "import.submit.label" : "Импортировать ÑервиÑÑ‹", | 34 | "import.submit.label" : "Импортировать ÑервиÑÑ‹", |
25 | "infobar.buttonChangelog" : "Что новенького?", | 35 | "infobar.buttonChangelog" : "Что новенького?", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "Перезагрузить ÑервиÑÑ‹", | 37 | "infobar.buttonReloadServices" : "Перезагрузить ÑервиÑÑ‹", |
28 | "infobar.requiredRequestsFailed" : "Ðевозможно загрузить ÑервиÑÑ‹ и информацию пользователÑ", | 38 | "infobar.requiredRequestsFailed" : "Ðевозможно загрузить ÑервиÑÑ‹ и информацию пользователÑ", |
29 | "infobar.servicesUpdated" : "Ваши ÑервиÑÑ‹ были обновлены.", | 39 | "infobar.servicesUpdated" : "Ваши ÑервиÑÑ‹ были обновлены.", |
40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", | ||
30 | "infobar.updateAvailable" : "ДоÑтупно обновление Franz.", | 41 | "infobar.updateAvailable" : "ДоÑтупно обновление Franz.", |
31 | "invite.email.label" : "ÐÐ´Ñ€ÐµÑ Ñлектронной почты", | 42 | "invite.email.label" : "ÐÐ´Ñ€ÐµÑ Ñлектронной почты", |
32 | "invite.headline.friends" : "ПриглаÑите 3-Ñ… друзей или коллег", | 43 | "invite.headline.friends" : "ПриглаÑите 3-Ñ… друзей или коллег", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.", | 54 | "login.serverLogout" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.", |
44 | "login.submit.label" : "Вход", | 55 | "login.submit.label" : "Вход", |
45 | "login.tokenExpired" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.", | 56 | "login.tokenExpired" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.", |
46 | "menu.app.about" : "О Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
59 | "menu.app.about" : "О Ferdi", | ||
47 | "menu.app.announcement" : "Что нового?", | 60 | "menu.app.announcement" : "Что нового?", |
48 | "menu.app.checkForUpdates" : "Проверить обновлениÑ", | 61 | "menu.app.checkForUpdates" : "Проверить обновлениÑ", |
49 | "menu.app.hide" : "Скрыть", | 62 | "menu.app.hide" : "Скрыть", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Файл", | 81 | "menu.file" : "Файл", |
69 | "menu.help" : "Справка", | 82 | "menu.help" : "Справка", |
70 | "menu.help.changelog" : "Журнал изменений", | 83 | "menu.help.changelog" : "Журнал изменений", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Подробнее", | 87 | "menu.help.learnMore" : "Подробнее", |
72 | "menu.help.privacy" : "Политика конфиденциальноÑти", | 88 | "menu.help.privacy" : "Политика конфиденциальноÑти", |
73 | "menu.help.support" : "Поддержка", | 89 | "menu.help.support" : "Поддержка", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Ðктивировать предыдущий Ñервич", | 92 | "menu.services.activatePreviousService" : "Ðктивировать предыдущий Ñервич", |
77 | "menu.services.addNewService" : "Добавить новый ÑервиÑ...", | 93 | "menu.services.addNewService" : "Добавить новый ÑервиÑ...", |
78 | "menu.services.setNextServiceActive" : "Ðктивировать Ñледующий ÑервиÑ", | 94 | "menu.services.setNextServiceActive" : "Ðктивировать Ñледующий ÑервиÑ", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Вид", | 97 | "menu.view" : "Вид", |
80 | "menu.view.enterFullScreen" : "Ðа веÑÑŒ Ñкран", | 98 | "menu.view.enterFullScreen" : "Ðа веÑÑŒ Ñкран", |
81 | "menu.view.exitFullScreen" : "В окне", | 99 | "menu.view.exitFullScreen" : "В окне", |
82 | "menu.view.reloadFranz" : "Перезагрузить Franz", | 100 | "menu.view.reloadFranz" : "Перезагрузить Ferdi", |
83 | "menu.view.reloadService" : "ПерезапуÑтить ÑервиÑ", | 101 | "menu.view.reloadService" : "ПерезапуÑтить ÑервиÑ", |
84 | "menu.view.resetZoom" : "ФактичеÑкий размер", | 102 | "menu.view.resetZoom" : "ФактичеÑкий размер", |
85 | "menu.view.toggleDevTools" : "Показать инÑтрументы разработчика", | 103 | "menu.view.toggleDevTools" : "Показать инÑтрументы разработчика", |
86 | "menu.view.toggleFullScreen" : "ПереключитьÑÑ Ð½Ð° полный Ñкран", | 104 | "menu.view.toggleFullScreen" : "ПереключитьÑÑ Ð½Ð° полный Ñкран", |
87 | "menu.view.toggleServiceDevTools" : "Показать инÑтрументы разработчика ÑервиÑа", | 105 | "menu.view.toggleServiceDevTools" : "Показать инÑтрументы разработчика ÑервиÑа", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Увеличить маÑштаб", | 107 | "menu.view.zoomIn" : "Увеличить маÑштаб", |
89 | "menu.view.zoomOut" : "Уменьшить маÑштаб", | 108 | "menu.view.zoomOut" : "Уменьшить маÑштаб", |
90 | "menu.window" : "Окно", | 109 | "menu.window" : "Окно", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "ПринÑÑ‚ÑŒ", | 122 | "password.submit.label" : "ПринÑÑ‚ÑŒ", |
104 | "password.successInfo" : "Проверьте вашу Ñлектронную почту", | 123 | "password.successInfo" : "Проверьте вашу Ñлектронную почту", |
105 | "premiumFeature.button.upgradeAccount" : "Перейти на платную подпиÑку", | 124 | "premiumFeature.button.upgradeAccount" : "Перейти на платную подпиÑку", |
106 | "pricing.headline" : "Поддержать Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Я не хочу поддерживать разработку Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Я хочу поддержать разработку Franz", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Выберите ваш план поддержки", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Окружение", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Перезагрузить {name}", | 152 | "service.crashHandler.action" : "Перезагрузить {name}", |
111 | "service.crashHandler.autoReload" : "ПытаюÑÑŒ автоматичеÑки воÑÑтановить {name} в течение {seconds} Ñекунд", | 153 | "service.crashHandler.autoReload" : "ПытаюÑÑŒ автоматичеÑки воÑÑтановить {name} в течение {seconds} Ñекунд", |
112 | "service.crashHandler.headline" : "О, нет!", | 154 | "service.crashHandler.headline" : "О, нет!", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "О, нет!", | 160 | "service.errorHandler.headline" : "О, нет!", |
119 | "service.errorHandler.message" : "Ошибка", | 161 | "service.errorHandler.message" : "Ошибка", |
120 | "service.errorHandler.text" : "{name} не Ñмог загрузитьÑÑ.", | 162 | "service.errorHandler.text" : "{name} не Ñмог загрузитьÑÑ.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Загрузка", | 168 | "service.webviewLoader.loading" : "Загрузка", |
122 | "services.getStarted" : "Ðачать работу", | 169 | "services.getStarted" : "Ðачать работу", |
123 | "services.welcome" : "Добро пожаловать во Franz", | 170 | "services.welcome" : "Добро пожаловать во Ferdi", |
124 | "settings.account.account.editButton" : "Редактировать аккаунт", | 171 | "settings.account.account.editButton" : "Редактировать аккаунт", |
125 | "settings.account.accountType.basic" : "Базовый аккаунт", | 172 | "settings.account.accountType.basic" : "Базовый аккаунт", |
126 | "settings.account.accountType.premium" : "Премиум аккаунт", | 173 | "settings.account.accountType.premium" : "Премиум аккаунт", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Сменить пароль", | 182 | "settings.account.headlinePassword" : "Сменить пароль", |
136 | "settings.account.headlineProfile" : "Обновить профиль", | 183 | "settings.account.headlineProfile" : "Обновить профиль", |
137 | "settings.account.headlineSubscription" : "Ваша подпиÑка", | 184 | "settings.account.headlineSubscription" : "Ваша подпиÑка", |
138 | "settings.account.headlineUpgrade" : "Улучшить аккаунт и поддержать Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Скачать", | 187 | "settings.account.invoiceDownload" : "Скачать", |
140 | "settings.account.manageSubscription.label" : "Управление вашей подпиÑкой", | 188 | "settings.account.manageSubscription.label" : "Управление вашей подпиÑкой", |
141 | "settings.account.successInfo" : "Ваши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ Ñохранены", | 189 | "settings.account.successInfo" : "Ваши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ Ñохранены", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Попробовать Ñнова", | 193 | "settings.account.tryReloadServices" : "Попробовать Ñнова", |
143 | "settings.account.tryReloadUserInfoRequest" : "Попробовать Ñнова", | 194 | "settings.account.tryReloadUserInfoRequest" : "Попробовать Ñнова", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Ðевозможно загрузить информацию пользователÑ", | 196 | "settings.account.userInfoRequestFailed" : "Ðевозможно загрузить информацию пользователÑ", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "ОчиÑтить кÑш", | 198 | "settings.app.buttonClearAllCache" : "ОчиÑтить кÑш", |
146 | "settings.app.buttonInstallUpdate" : "ПерезапуÑтить и обновить", | 199 | "settings.app.buttonInstallUpdate" : "ПерезапуÑтить и обновить", |
147 | "settings.app.buttonSearchForUpdate" : "Проверить обновлениÑ", | 200 | "settings.app.buttonSearchForUpdate" : "Проверить обновлениÑ", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Перейти на Тёмную Ñторону", | 206 | "settings.app.form.darkMode" : "Перейти на Тёмную Ñторону", |
154 | "settings.app.form.enableGPUAcceleration" : "Включить уÑкорение GPU", | 207 | "settings.app.form.enableGPUAcceleration" : "Включить уÑкорение GPU", |
155 | "settings.app.form.enableSpellchecking" : "Включить проверку правопиÑаниÑ", | 208 | "settings.app.form.enableSpellchecking" : "Включить проверку правопиÑаниÑ", |
156 | "settings.app.form.enableSystemTray" : "Показывать Ferdi в ÑиÑтемном трее", | 209 | "settings.app.form.enableSystemTray" : "Показывать Franz в ÑиÑтемном трее", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Язык", | 212 | "settings.app.form.language" : "Язык", |
158 | "settings.app.form.minimizeToSystemTray" : "Сворачивать Ferdi в ÑиÑтемный трей", | 213 | "settings.app.form.minimizeToSystemTray" : "Сворачивать Ferdi в ÑиÑтемный трей", |
159 | "settings.app.form.runInBackground" : "ОÑтавлÑÑ‚ÑŒ Ferdi в фоне при закрытии окна", | 214 | "settings.app.form.runInBackground" : "ОÑтавлÑÑ‚ÑŒ Ferdi в фоне при закрытии окна", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Помогите нам перевеÑти Ferdi на ваш Ñзык.", | 226 | "settings.app.translationHelp" : "Помогите нам перевеÑти Ferdi на ваш Ñзык.", |
172 | "settings.app.updateStatusAvailable" : "ДоÑтупно обновление, идёт загрузка...", | 227 | "settings.app.updateStatusAvailable" : "ДоÑтупно обновление, идёт загрузка...", |
173 | "settings.app.updateStatusSearching" : "ПоиÑк обновлений", | 228 | "settings.app.updateStatusSearching" : "ПоиÑк обновлений", |
174 | "settings.app.updateStatusUpToDate" : "Ð’Ñ‹ иÑпользуете актуальную верÑию Franz", | 229 | "settings.app.updateStatusUpToDate" : "Ð’Ñ‹ иÑпользуете актуальную верÑию Ferdi", |
175 | "settings.invite.headline" : "ПриглаÑить друзей", | 230 | "settings.invite.headline" : "ПриглаÑить друзей", |
176 | "settings.navigation.account" : "Ðккаунт", | 231 | "settings.navigation.account" : "Ðккаунт", |
177 | "settings.navigation.availableServices" : "ДоÑтупные ÑервиÑÑ‹", | 232 | "settings.navigation.availableServices" : "ДоÑтупные ÑервиÑÑ‹", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Ваши ÑервиÑÑ‹", | 237 | "settings.navigation.yourServices" : "Ваши ÑервиÑÑ‹", |
183 | "settings.navigation.yourWorkspaces" : "Ваши окружениÑ", | 238 | "settings.navigation.yourWorkspaces" : "Ваши окружениÑ", |
184 | "settings.recipes.all" : "Ð’Ñе ÑервиÑÑ‹", | 239 | "settings.recipes.all" : "Ð’Ñе ÑервиÑÑ‹", |
185 | "settings.recipes.dev" : "Разработка", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "ДоÑтупные ÑервиÑÑ‹", | 247 | "settings.recipes.headline" : "ДоÑтупные ÑервиÑÑ‹", |
187 | "settings.recipes.missingService" : "Ðе можете найти ÑервиÑ?", | 248 | "settings.recipes.missingService" : "Ðе можете найти ÑервиÑ?", |
188 | "settings.recipes.mostPopular" : "Самые популÑрные", | 249 | "settings.recipes.mostPopular" : "Самые популÑрные", |
@@ -217,7 +278,7 @@ | |||
217 | "settings.service.form.name" : "Ðазвание", | 278 | "settings.service.form.name" : "Ðазвание", |
218 | "settings.service.form.proxy.headline" : "ÐаÑтройки ПрокÑи HTTP\/HTTPS", | 279 | "settings.service.form.proxy.headline" : "ÐаÑтройки ПрокÑи HTTP\/HTTPS", |
219 | "settings.service.form.proxy.host" : "ПрокÑи Host\/IP", | 280 | "settings.service.form.proxy.host" : "ПрокÑи Host\/IP", |
220 | "settings.service.form.proxy.info" : "ÐаÑтройки прокÑи не будут Ñинхронизированны Ñ Ñерверами Franz", | 281 | "settings.service.form.proxy.info" : "ÐаÑтройки прокÑи не будут Ñинхронизированны Ñ Ñерверами Ferdi", |
221 | "settings.service.form.proxy.isEnabled" : "ИÑпользовать прокÑи", | 282 | "settings.service.form.proxy.isEnabled" : "ИÑпользовать прокÑи", |
222 | "settings.service.form.proxy.password" : "Пароль (опционально)", | 283 | "settings.service.form.proxy.password" : "Пароль (опционально)", |
223 | "settings.service.form.proxy.port" : "Порт", | 284 | "settings.service.form.proxy.port" : "Порт", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Добавить новый ÑервиÑ", | 332 | "sidebar.addNewService" : "Добавить новый ÑервиÑ", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Закрыть меню окружений", | 334 | "sidebar.closeWorkspaceDrawer" : "Закрыть меню окружений", |
273 | "sidebar.muteApp" : "Отключить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ звук", | 335 | "sidebar.muteApp" : "Отключить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ звук", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Открыть меню окружений", | 337 | "sidebar.openWorkspaceDrawer" : "Открыть меню окружений", |
275 | "sidebar.settings" : "ÐаÑтройки", | 338 | "sidebar.settings" : "ÐаÑтройки", |
276 | "sidebar.unmuteApp" : "Включить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ звук", | 339 | "sidebar.unmuteApp" : "Включить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ звук", |
277 | "signup.company.label" : "ОрганизациÑ", | ||
278 | "signup.email.label" : "ÐÐ´Ñ€ÐµÑ Ñлектронной почты", | 340 | "signup.email.label" : "ÐÐ´Ñ€ÐµÑ Ñлектронной почты", |
279 | "signup.emailDuplicate" : "Пользователь Ñ Ñ‚Ð°ÐºÐ¸Ð¼ адреÑом Ñлектронной почты уже ÑущеÑтвует", | 341 | "signup.emailDuplicate" : "Пользователь Ñ Ñ‚Ð°ÐºÐ¸Ð¼ адреÑом Ñлектронной почты уже ÑущеÑтвует", |
280 | "signup.firstname.label" : "ИмÑ", | 342 | "signup.firstname.label" : "ИмÑ", |
@@ -296,10 +358,16 @@ | |||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | 358 | "subscription.features.workspaces" : "Organize your services in workspaces", |
297 | "subscription.includedFeatures" : "Платный премиум аккаунт Ferdi включает", | 359 | "subscription.includedFeatures" : "Платный премиум аккаунт Ferdi включает", |
298 | "subscription.paymentSessionError" : "Ðевозможно загрузить форму оплаты", | 360 | "subscription.paymentSessionError" : "Ðевозможно загрузить форму оплаты", |
299 | "subscription.submit.label" : "Я хочу поддержать разработку Franz", | 361 | "subscription.submit.label" : "Я хочу поддержать разработку Ferdi", |
300 | "subscription.type.free" : "беÑплатно", | 362 | "subscription.type.free" : "беÑплатно", |
301 | "subscription.type.month" : "меÑÑц", | 363 | "subscription.type.month" : "меÑÑц", |
302 | "subscription.type.year" : "год", | 364 | "subscription.type.year" : "год", |
365 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", | ||
366 | "subscription.cta.allOptions" : "See all options", | ||
367 | "subscription.cta.choosePlan" : "Choose your plan", | ||
368 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", | ||
369 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", | ||
370 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", | ||
303 | "subscriptionPopup.buttonCancel" : "Отмена", | 371 | "subscriptionPopup.buttonCancel" : "Отмена", |
304 | "subscriptionPopup.buttonDone" : "Готово", | 372 | "subscriptionPopup.buttonDone" : "Готово", |
305 | "tabs.item.deleteService" : "Удалить ÑервиÑ", | 373 | "tabs.item.deleteService" : "Удалить ÑервиÑ", |
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index a9fd4e9f4..631613f73 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Obnoviť", | 2 | "app.errorHandler.action" : "Obnoviť", |
3 | "app.errorHandler.headline" : "NieÄo sa pokazilo", | 3 | "app.errorHandler.headline" : "NieÄo sa pokazilo", |
4 | "feature.announcements.changelog.headline" : "Zmeny vo Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Zmeny vo Franz {version}", |
5 | "feature.delayApp.action" : "ZÃskajte licenciu pre Ferdi podporu", | 5 | "feature.delayApp.headline" : "ProsÃm, kúp si licenciu Franz Supporter a nebudeÅ¡ musieÅ¥ ÄakaÅ¥", |
6 | "feature.delayApp.headline" : "Please purchase a Ferdi Supporter License to skip waiting", | 6 | "feature.delayApp.text" : "Franz bude pokraÄovaÅ¥ v {seconds} sekundách.", |
7 | "feature.delayApp.text" : "Ferdi bude pokraÄovaÅ¥ v {seconds} seundách.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "ZÃskajte licenciu pre Franz podporu", | ||
11 | "feature.delayApp.upgrade.actionShort" : "UpgradovaÅ¥ úÄet", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Odoslať ako e-mail", | 13 | "feature.shareFranz.action.email" : "Odoslať ako e-mail", |
9 | "feature.shareFranz.action.facebook" : "Zdielať na Facebook-u", | 14 | "feature.shareFranz.action.facebook" : "Zdielať na Facebook-u", |
10 | "feature.shareFranz.action.twitter" : "Zdieľať na Twitter-i", | 15 | "feature.shareFranz.action.twitter" : "Zdieľať na Twitter-i", |
11 | "feature.shareFranz.headline" : "Ferdi is better together!", | 16 | "feature.shareFranz.headline" : "Franz je lepšà spolu!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "Pridali sme {count} služieb do Franz! ZÃskajte zadarmo aplikáciu pre WhatsApp, Messenger, Slack, Skype a iné na www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "Pridal som {count} služieb do Franz! ZÃskajte zadarmo aplikáciu pre WhatsApp, Messenger, Slack, Skype a iné na www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "Povedzte vaÅ¡im priateľom a známym aký je Franz skvelý a pomôžte nám rozÅ¡ÃriÅ¥ sa do sveta.", |
15 | "global.api.unhealthy" : "Nedá sa pripojiť k online službám Franz", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Nedá sa pripojiť k online službám Ferdi", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Nie ste pripojenà k internetu.", | 25 | "global.notConnectedToTheInternet" : "Nie ste pripojenà k internetu.", |
17 | "global.spellchecker.useDefault" : "Použiť predvolené nastavenie systému ({default})", | 26 | "global.spellchecker.useDefault" : "Použiť predvolené nastavenie systému ({default})", |
18 | "global.spellchecking.autodetect" : "Automaticky rozpoznať jazyk", | 27 | "global.spellchecking.autodetect" : "Automaticky rozpoznať jazyk", |
19 | "global.spellchecking.autodetect.short" : "Automatický", | 28 | "global.spellchecking.autodetect.short" : "Automatický", |
20 | "global.spellchecking.language" : "Jazyk kontroly pravopisu", | 29 | "global.spellchecking.language" : "Jazyk kontroly pravopisu", |
21 | "import.headline" : "Importovať vaše služby z Ferdi 4", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Služby zatiaľ nie sú podporované vo verzii Ferdi 5", | 31 | "import.headline" : "Importovať vaše služby z Franz 4", |
32 | "import.notSupportedHeadline" : "Služby zatiaľ nie sú podporované vo verzii Franz 5", | ||
23 | "import.skip.label" : "Chcem pridaÅ¥ služby ruÄne", | 33 | "import.skip.label" : "Chcem pridaÅ¥ služby ruÄne", |
24 | "import.submit.label" : "Importovať služby", | 34 | "import.submit.label" : "Importovať služby", |
25 | "infobar.buttonChangelog" : "Čo je nového?", | 35 | "infobar.buttonChangelog" : "Čo je nového?", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "Obnoviť služby", | 37 | "infobar.buttonReloadServices" : "Obnoviť služby", |
28 | "infobar.requiredRequestsFailed" : "Nie je možné naÄÃtaÅ¥ služby a informácie o použÃvateľovi", | 38 | "infobar.requiredRequestsFailed" : "Nie je možné naÄÃtaÅ¥ služby a informácie o použÃvateľovi", |
29 | "infobar.servicesUpdated" : "Vaše služby boli aktualizované.", | 39 | "infobar.servicesUpdated" : "Vaše služby boli aktualizované.", |
40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", | ||
30 | "infobar.updateAvailable" : "Je k dispozÃcii nová aktualizácia Franz.", | 41 | "infobar.updateAvailable" : "Je k dispozÃcii nová aktualizácia Franz.", |
31 | "invite.email.label" : "E-mailová adresa", | 42 | "invite.email.label" : "E-mailová adresa", |
32 | "invite.headline.friends" : "Pozvite troch vašich priateľov alebo kolegov", | 43 | "invite.headline.friends" : "Pozvite troch vašich priateľov alebo kolegov", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "VaÅ¡a relácia vyprÅ¡ala, prihláste sa prosÃm znovu.", | 54 | "login.serverLogout" : "VaÅ¡a relácia vyprÅ¡ala, prihláste sa prosÃm znovu.", |
44 | "login.submit.label" : "Prihlásiť sa", | 55 | "login.submit.label" : "Prihlásiť sa", |
45 | "login.tokenExpired" : "VaÅ¡a relácia vyprÅ¡ala, prihláste sa prosÃm znovu.", | 56 | "login.tokenExpired" : "VaÅ¡a relácia vyprÅ¡ala, prihláste sa prosÃm znovu.", |
57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", | ||
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
46 | "menu.app.about" : "O aplikácii", | 59 | "menu.app.about" : "O aplikácii", |
47 | "menu.app.announcement" : "Čo je nové?", | 60 | "menu.app.announcement" : "Čo je nové?", |
48 | "menu.app.checkForUpdates" : "Skontrolovať aktualizácie", | 61 | "menu.app.checkForUpdates" : "Skontrolovať aktualizácie", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Súbor", | 81 | "menu.file" : "Súbor", |
69 | "menu.help" : "PomocnÃk", | 82 | "menu.help" : "PomocnÃk", |
70 | "menu.help.changelog" : "Záznam zmien", | 83 | "menu.help.changelog" : "Záznam zmien", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Zistiť viac", | 87 | "menu.help.learnMore" : "Zistiť viac", |
72 | "menu.help.privacy" : "Vyhlásenie o ochrane súkromia", | 88 | "menu.help.privacy" : "Vyhlásenie o ochrane súkromia", |
73 | "menu.help.support" : "Podpora", | 89 | "menu.help.support" : "Podpora", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Aktivovať predchádzajúcu službu", | 92 | "menu.services.activatePreviousService" : "Aktivovať predchádzajúcu službu", |
77 | "menu.services.addNewService" : "Pridať novú službu...", | 93 | "menu.services.addNewService" : "Pridať novú službu...", |
78 | "menu.services.setNextServiceActive" : "Aktivujte ÄalÅ¡iu službu", | 94 | "menu.services.setNextServiceActive" : "Aktivujte ÄalÅ¡iu službu", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Zobraziť", | 97 | "menu.view" : "Zobraziť", |
80 | "menu.view.enterFullScreen" : "Na celú obrazovku", | 98 | "menu.view.enterFullScreen" : "Na celú obrazovku", |
81 | "menu.view.exitFullScreen" : "UkonÄiÅ¥ režim na celú obrazovku", | 99 | "menu.view.exitFullScreen" : "UkonÄiÅ¥ režim na celú obrazovku", |
82 | "menu.view.reloadFranz" : "Obnoviť Franz", | 100 | "menu.view.reloadFranz" : "Obnoviť Ferdi", |
83 | "menu.view.reloadService" : "Obnoviť službu", | 101 | "menu.view.reloadService" : "Obnoviť službu", |
84 | "menu.view.resetZoom" : "Pôvodná veľkosť", | 102 | "menu.view.resetZoom" : "Pôvodná veľkosť", |
85 | "menu.view.toggleDevTools" : "Prepnúť vývojárske nástroje", | 103 | "menu.view.toggleDevTools" : "Prepnúť vývojárske nástroje", |
86 | "menu.view.toggleFullScreen" : "Prepnúť na celú obrazovku", | 104 | "menu.view.toggleFullScreen" : "Prepnúť na celú obrazovku", |
87 | "menu.view.toggleServiceDevTools" : "Prepnúť vývojárske nástroje služby", | 105 | "menu.view.toggleServiceDevTools" : "Prepnúť vývojárske nástroje služby", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "PriblÞiť", | 107 | "menu.view.zoomIn" : "PriblÞiť", |
89 | "menu.view.zoomOut" : "Oddialiť", | 108 | "menu.view.zoomOut" : "Oddialiť", |
90 | "menu.window" : "Okno", | 109 | "menu.window" : "Okno", |
@@ -92,9 +111,9 @@ | |||
92 | "menu.window.minimize" : "Minimalizovať", | 111 | "menu.window.minimize" : "Minimalizovať", |
93 | "menu.workspaces" : "Pracovný priestor", | 112 | "menu.workspaces" : "Pracovný priestor", |
94 | "menu.workspaces.addNewWorkspace" : "Pridať nový pracovný priestor ...", | 113 | "menu.workspaces.addNewWorkspace" : "Pridať nový pracovný priestor ...", |
95 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", | 114 | "menu.workspaces.closeWorkspaceDrawer" : "Zavrieť workspace záložku", |
96 | "menu.workspaces.defaultWorkspace" : "Všetky služby", | 115 | "menu.workspaces.defaultWorkspace" : "Všetky služby", |
97 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", | 116 | "menu.workspaces.openWorkspaceDrawer" : "Otvoriť workspace záložku", |
98 | "password.email.label" : "E-mailová adresa", | 117 | "password.email.label" : "E-mailová adresa", |
99 | "password.headline" : "Obnoviť heslo", | 118 | "password.headline" : "Obnoviť heslo", |
100 | "password.link.login" : "PrihlásiÅ¥ sa do vášho úÄtu", | 119 | "password.link.login" : "PrihlásiÅ¥ sa do vášho úÄtu", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Odoslať", | 122 | "password.submit.label" : "Odoslať", |
104 | "password.successInfo" : "Skontrolujte prosÃm váš e-mail", | 123 | "password.successInfo" : "Skontrolujte prosÃm váš e-mail", |
105 | "premiumFeature.button.upgradeAccount" : "UpgradovaÅ¥ úÄet", | 124 | "premiumFeature.button.upgradeAccount" : "UpgradovaÅ¥ úÄet", |
106 | "pricing.headline" : "Podporiť Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Nechcem podporiť vývoj aplikácie Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Chcem podporiť vývoj aplikácie Franz", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Vyberte si váš plán podpory", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Znovu naÄÃtaÅ¥ {name}", | 152 | "service.crashHandler.action" : "Znovu naÄÃtaÅ¥ {name}", |
111 | "service.crashHandler.autoReload" : "Najbližšà pokus o automatické obnovenie {name} o {seconds} sekúnd", | 153 | "service.crashHandler.autoReload" : "Najbližšà pokus o automatické obnovenie {name} o {seconds} sekúnd", |
112 | "service.crashHandler.headline" : "Ale nie!", | 154 | "service.crashHandler.headline" : "Ale nie!", |
@@ -117,10 +159,15 @@ | |||
117 | "service.errorHandler.editAction" : "Upraviť {name}", | 159 | "service.errorHandler.editAction" : "Upraviť {name}", |
118 | "service.errorHandler.headline" : "Ale nie!", | 160 | "service.errorHandler.headline" : "Ale nie!", |
119 | "service.errorHandler.message" : "Chyba", | 161 | "service.errorHandler.message" : "Chyba", |
120 | "service.errorHandler.text" : "{name} has failed to load.", | 162 | "service.errorHandler.text" : "{name} sa nepodarilo naÄÃtaÅ¥.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "NaÄÃtava", | 168 | "service.webviewLoader.loading" : "NaÄÃtava", |
122 | "services.getStarted" : "ZaÄÃname", | 169 | "services.getStarted" : "ZaÄÃname", |
123 | "services.welcome" : "VÃtajte v aplikácii Franz", | 170 | "services.welcome" : "VÃtajte v aplikácii Ferdi", |
124 | "settings.account.account.editButton" : "UpraviÅ¥ úÄet", | 171 | "settings.account.account.editButton" : "UpraviÅ¥ úÄet", |
125 | "settings.account.accountType.basic" : "Základný úÄet", | 172 | "settings.account.accountType.basic" : "Základný úÄet", |
126 | "settings.account.accountType.premium" : "Prémiový úÄet podporovateľa", | 173 | "settings.account.accountType.premium" : "Prémiový úÄet podporovateľa", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Zmeniť heslo", | 182 | "settings.account.headlinePassword" : "Zmeniť heslo", |
136 | "settings.account.headlineProfile" : "Aktualizovať profil", | 183 | "settings.account.headlineProfile" : "Aktualizovať profil", |
137 | "settings.account.headlineSubscription" : "Vaše odoberanie", | 184 | "settings.account.headlineSubscription" : "Vaše odoberanie", |
138 | "settings.account.headlineUpgrade" : "Povýšte svoj úÄet a podporte Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Prevziať", | 187 | "settings.account.invoiceDownload" : "Prevziať", |
140 | "settings.account.manageSubscription.label" : "Spravovať vaše odoberanie", | 188 | "settings.account.manageSubscription.label" : "Spravovať vaše odoberanie", |
141 | "settings.account.successInfo" : "Vaše zmeny boli uložené", | 189 | "settings.account.successInfo" : "Vaše zmeny boli uložené", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Skúsiť znova", | 193 | "settings.account.tryReloadServices" : "Skúsiť znova", |
143 | "settings.account.tryReloadUserInfoRequest" : "Skúsiť znova", | 194 | "settings.account.tryReloadUserInfoRequest" : "Skúsiť znova", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Nebolo možné naÄÃtaÅ¥ informácie o použÃvateľovi", | 196 | "settings.account.userInfoRequestFailed" : "Nebolo možné naÄÃtaÅ¥ informácie o použÃvateľovi", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "VyÄistiÅ¥ vyrovnávaciu pamäť", | 198 | "settings.app.buttonClearAllCache" : "VyÄistiÅ¥ vyrovnávaciu pamäť", |
146 | "settings.app.buttonInstallUpdate" : "Reštartovať a nainštalovať aktualizáciu", | 199 | "settings.app.buttonInstallUpdate" : "Reštartovať a nainštalovať aktualizáciu", |
147 | "settings.app.buttonSearchForUpdate" : "Skontrolovať aktualizácie", | 200 | "settings.app.buttonSearchForUpdate" : "Skontrolovať aktualizácie", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Spustiť Dark Side", | 206 | "settings.app.form.darkMode" : "Spustiť Dark Side", |
154 | "settings.app.form.enableGPUAcceleration" : "Zapnúť GPU zrýchlenie", | 207 | "settings.app.form.enableGPUAcceleration" : "Zapnúť GPU zrýchlenie", |
155 | "settings.app.form.enableSpellchecking" : "Zapnúť kontrolu pravopisu", | 208 | "settings.app.form.enableSpellchecking" : "Zapnúť kontrolu pravopisu", |
156 | "settings.app.form.enableSystemTray" : "Zobrazovať Ferdi v systémovej lište", | 209 | "settings.app.form.enableSystemTray" : "Zobrazovať Franz v systémovej lište", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Jazyk", | 212 | "settings.app.form.language" : "Jazyk", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimalizovať Ferdi do systémovej lišty", | 213 | "settings.app.form.minimizeToSystemTray" : "Minimalizovať Ferdi do systémovej lišty", |
159 | "settings.app.form.runInBackground" : "Po zatvorenà okna ponechaÅ¥ Ferdi spustený na pozadÃ", | 214 | "settings.app.form.runInBackground" : "Po zatvorenà okna ponechaÅ¥ Ferdi spustený na pozadÃ", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Pomôžte nám preložiť Ferdi do svojho jazyka.", | 226 | "settings.app.translationHelp" : "Pomôžte nám preložiť Ferdi do svojho jazyka.", |
172 | "settings.app.updateStatusAvailable" : "Je dostupná aktualizácia, sťahuje sa...", | 227 | "settings.app.updateStatusAvailable" : "Je dostupná aktualizácia, sťahuje sa...", |
173 | "settings.app.updateStatusSearching" : "Vyhľadáva aktualizácie", | 228 | "settings.app.updateStatusSearching" : "Vyhľadáva aktualizácie", |
174 | "settings.app.updateStatusUpToDate" : "PoužÃvate najnovÅ¡iu verziu Franz", | 229 | "settings.app.updateStatusUpToDate" : "PoužÃvate najnovÅ¡iu verziu Ferdi", |
175 | "settings.invite.headline" : "Pozvať priateľov", | 230 | "settings.invite.headline" : "Pozvať priateľov", |
176 | "settings.navigation.account" : "ÚÄet", | 231 | "settings.navigation.account" : "ÚÄet", |
177 | "settings.navigation.availableServices" : "Dostupné služby", | 232 | "settings.navigation.availableServices" : "Dostupné služby", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Vaše služby", | 237 | "settings.navigation.yourServices" : "Vaše služby", |
183 | "settings.navigation.yourWorkspaces" : "Tvoje pracovné priestory", | 238 | "settings.navigation.yourWorkspaces" : "Tvoje pracovné priestory", |
184 | "settings.recipes.all" : "Všetky služby", | 239 | "settings.recipes.all" : "Všetky služby", |
185 | "settings.recipes.dev" : "Vývoj", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Dostupné služby", | 247 | "settings.recipes.headline" : "Dostupné služby", |
187 | "settings.recipes.missingService" : "Chýba vám služba?", | 248 | "settings.recipes.missingService" : "Chýba vám služba?", |
188 | "settings.recipes.mostPopular" : "Najpopulárnejšie", | 249 | "settings.recipes.mostPopular" : "Najpopulárnejšie", |
@@ -265,16 +326,17 @@ | |||
265 | "settings.workspaces.noWorkspacesAdded" : "Zatiaľ si nepridal žiadne pracovné priestory.", | 326 | "settings.workspaces.noWorkspacesAdded" : "Zatiaľ si nepridal žiadne pracovné priestory.", |
266 | "settings.workspaces.tryReloadWorkspaces" : "Skúsiť znova", | 327 | "settings.workspaces.tryReloadWorkspaces" : "Skúsiť znova", |
267 | "settings.workspaces.updatedInfo" : "Vaše zmeny boli uložené", | 328 | "settings.workspaces.updatedInfo" : "Vaše zmeny boli uložené", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Menej je viac: Predstavenie Ferdi Pracovné priestory", | 329 | "settings.workspaces.workspaceFeatureHeadline" : "Menej je viac: Predstavenie Franz Pracovné priestory", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspace vám umožňujú sústrediÅ¥ sa na to, Äo je práve dôležité. Nastavte si rozliÄné skupiny služieb a jednoducho medzi nimi kedykoľvek prepÃnajte. Vy rozhodujete ktoré služby, kedy a kde potrebujete, a my vám potom vieme pomôcÅ¥ sústrediÅ¥ sa na prácu - alebo jednoducho prepnúť z práce na Äokoľvek iné.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Nebolo možné naÄÃtaÅ¥ vaÅ¡e workspace", |
271 | "sidebar.addNewService" : "Pridať novú službu", | 332 | "sidebar.addNewService" : "Pridať novú službu", |
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", |
334 | "sidebar.closeWorkspaceDrawer" : "Zavrieť workspace záložku", | ||
273 | "sidebar.muteApp" : "Vypnúť upozornenia a zvuky", | 335 | "sidebar.muteApp" : "Vypnúť upozornenia a zvuky", |
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 336 | "sidebar.openTodosDrawer" : "Open Franz Todos", |
337 | "sidebar.openWorkspaceDrawer" : "Otvoriť workspace záložku", | ||
275 | "sidebar.settings" : "Nastavenia", | 338 | "sidebar.settings" : "Nastavenia", |
276 | "sidebar.unmuteApp" : "Povoliť oznámenia a zvuky", | 339 | "sidebar.unmuteApp" : "Povoliť oznámenia a zvuky", |
277 | "signup.company.label" : "SpoloÄnosÅ¥", | ||
278 | "signup.email.label" : "E-mailová adresa", | 340 | "signup.email.label" : "E-mailová adresa", |
279 | "signup.emailDuplicate" : "PoužÃvateľ s touto e-mailovou adresou už jestvuje", | 341 | "signup.emailDuplicate" : "PoužÃvateľ s touto e-mailovou adresou už jestvuje", |
280 | "signup.firstname.label" : "Krstné meno", | 342 | "signup.firstname.label" : "Krstné meno", |
@@ -286,20 +348,12 @@ | |||
286 | "signup.link.login" : "Už máte úÄet, chcete sa prihlásiÅ¥?", | 348 | "signup.link.login" : "Už máte úÄet, chcete sa prihlásiÅ¥?", |
287 | "signup.password.label" : "Heslo", | 349 | "signup.password.label" : "Heslo", |
288 | "signup.submit.label" : "VytvoriÅ¥ úÄet", | 350 | "signup.submit.label" : "VytvoriÅ¥ úÄet", |
289 | "subscription.euTaxInfo" : "Pre obyvateľov EÚ: môže byť aplikovaná miestna daň", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Žiadne reklamy, nikdy!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "už Äoskoro", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Proxy support for services", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Support for spellchecker", | ||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | ||
297 | "subscription.includedFeatures" : "Platený úÄet Premium Supporter Ferdi zahŕňa", | ||
298 | "subscription.paymentSessionError" : "Nepodarilo sa inicializovať platbu od", | ||
299 | "subscription.submit.label" : "Chcem podporiť vývoj aplikácie Franz", | ||
300 | "subscription.type.free" : "zdarma", | ||
301 | "subscription.type.month" : "mesiac", | ||
302 | "subscription.type.year" : "rok", | ||
303 | "subscriptionPopup.buttonCancel" : "Zrušiť", | 357 | "subscriptionPopup.buttonCancel" : "Zrušiť", |
304 | "subscriptionPopup.buttonDone" : "DokonÄiÅ¥", | 358 | "subscriptionPopup.buttonDone" : "DokonÄiÅ¥", |
305 | "tabs.item.deleteService" : "Odstrániť službu", | 359 | "tabs.item.deleteService" : "Odstrániť službu", |
@@ -313,20 +367,20 @@ | |||
313 | "tabs.item.reload" : "Obnoviť", | 367 | "tabs.item.reload" : "Obnoviť", |
314 | "validation.email" : "{field} je neplatný", | 368 | "validation.email" : "{field} je neplatný", |
315 | "validation.minLength" : "{field} by malo byť dlhé aspoň {length} znakov", | 369 | "validation.minLength" : "{field} by malo byť dlhé aspoň {length} znakov", |
316 | "validation.oneRequired" : "At least one is required", | 370 | "validation.oneRequired" : "Je nutné zadať aspoň jeden", |
317 | "validation.required" : "{field} je povinné", | 371 | "validation.required" : "{field} je povinné", |
318 | "validation.url" : "{field} nie je platné URL", | 372 | "validation.url" : "{field} nie je platné URL", |
319 | "welcome.loginButton" : "PrihlásiÅ¥ sa do vášho úÄtu", | 373 | "welcome.loginButton" : "PrihlásiÅ¥ sa do vášho úÄtu", |
320 | "welcome.signupButton" : "VytvoriÅ¥ úÄet zdarma", | 374 | "welcome.signupButton" : "VytvoriÅ¥ úÄet zdarma", |
321 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 375 | "workspaceDrawer.addNewWorkspaceLabel" : "Pridať nový workspace", |
322 | "workspaceDrawer.allServices" : "Všetky služby", | 376 | "workspaceDrawer.allServices" : "Všetky služby", |
323 | "workspaceDrawer.headline" : "Pracovný priestor", | 377 | "workspaceDrawer.headline" : "Pracovné plochy", |
324 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 378 | "workspaceDrawer.item.contextMenuEdit" : "Upraviť", |
325 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 379 | "workspaceDrawer.item.noServicesAddedYet" : "Zatiaľ žiadne služby", |
326 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 380 | "workspaceDrawer.premiumCtaButtonLabel" : "Vytvorte váš prvý workspace", |
327 | "workspaceDrawer.proFeatureBadge" : "Premium feature", | 381 | "workspaceDrawer.proFeatureBadge" : "Prémiová funkcia", |
328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", | 382 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Obnovte svoj prémiový úÄet", |
329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>", | 383 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspace vám umožňujú sústrediÅ¥ sa na to, Äo je práve dôležité. Nastavte si rozliÄné skupiny služieb a jednoducho medzi nimi kedykoľvek prepÃnajte.<\/p><p>Vy rozhodujete ktoré služby, kedy a kde potrebujete, a my vám potom vieme pomôcÅ¥ sústrediÅ¥ sa na prácu - alebo jednoducho prepnúť z práce na Äokoľvek iné. <\/p>", |
330 | "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", | 384 | "workspaceDrawer.workspacesSettingsTooltip" : "Upraviť nastavenia workspace", |
331 | "workspaces.switchingIndicator.switchingTo" : "Switching to" | 385 | "workspaces.switchingIndicator.switchingTo" : "PrepÃnanie na" |
332 | } | 386 | } |
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index 93d94d065..64be18c66 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Ponovno uÄitavanje", | 2 | "app.errorHandler.action" : "Ponovno uÄitavanje", |
3 | "app.errorHandler.headline" : "Something went wrong", | 3 | "app.errorHandler.headline" : "Something went wrong", |
4 | "feature.announcements.changelog.headline" : "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", |
5 | "feature.delayApp.action" : "Get a Ferdi Supporter License", | 5 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", |
6 | "feature.delayApp.headline" : "Please purchase a Ferdi Supporter License to skip waiting", | 6 | "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", |
7 | "feature.delayApp.text" : "Ferdi will continue in {seconds} seconds.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Get a Franz Supporter License", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Upgrade account", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Send as email", | 13 | "feature.shareFranz.action.email" : "Send as email", |
9 | "feature.shareFranz.action.facebook" : "Share on Facebook", | 14 | "feature.shareFranz.action.facebook" : "Share on Facebook", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 15 | "feature.shareFranz.action.twitter" : "Share on Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi is better together!", | 16 | "feature.shareFranz.headline" : "Ferdi is better together!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", | ||
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
15 | "global.api.unhealthy" : "Nije moguće pristupiti Franz-ovim on-line servisima. ", | 23 | "global.api.unhealthy" : "Nije moguće pristupiti Franz-ovim on-line servisima. ", |
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Niste povezani sa serverom.", | 25 | "global.notConnectedToTheInternet" : "Niste povezani sa serverom.", |
17 | "global.spellchecker.useDefault" : "Use System Default ({default})", | 26 | "global.spellchecker.useDefault" : "Use System Default ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 27 | "global.spellchecking.autodetect" : "Detect language automatically", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 28 | "global.spellchecking.autodetect.short" : "Automatic", |
20 | "global.spellchecking.language" : "Spell checking language", | 29 | "global.spellchecking.language" : "Spell checking language", |
21 | "import.headline" : "Uvezite svoje Ferdi 4 servise", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Servis trenutno nije podržan u Ferdi 5", | 31 | "import.headline" : "Uvezite svoje Franz 4 servise", |
32 | "import.notSupportedHeadline" : "Servis trenutno nije podržan u Franz 5", | ||
23 | "import.skip.label" : "Желим да додам уÑлуге ручно", | 33 | "import.skip.label" : "Желим да додам уÑлуге ручно", |
24 | "import.submit.label" : "Uvezi servise", | 34 | "import.submit.label" : "Uvezi servise", |
25 | "infobar.buttonChangelog" : "Å ta je novo? ", | 35 | "infobar.buttonChangelog" : "Å ta je novo? ", |
@@ -27,6 +37,7 @@ | |||
27 | "infobar.buttonReloadServices" : "Ponovo uÄitaj servise ", | 37 | "infobar.buttonReloadServices" : "Ponovo uÄitaj servise ", |
28 | "infobar.requiredRequestsFailed" : "Nemoguće uÄitati servise i korisniÄke informacije", | 38 | "infobar.requiredRequestsFailed" : "Nemoguće uÄitati servise i korisniÄke informacije", |
29 | "infobar.servicesUpdated" : "Vaši servisi su ažurirani. ", | 39 | "infobar.servicesUpdated" : "Vaši servisi su ažurirani. ", |
40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", | ||
30 | "infobar.updateAvailable" : "Novo ažuriranje Franz-a je dostupno. ", | 41 | "infobar.updateAvailable" : "Novo ažuriranje Franz-a je dostupno. ", |
31 | "invite.email.label" : "Vaša e-adresa", | 42 | "invite.email.label" : "Vaša e-adresa", |
32 | "invite.headline.friends" : "Pozovite 3 vaša prijatelja ili kolege", | 43 | "invite.headline.friends" : "Pozovite 3 vaša prijatelja ili kolege", |
@@ -43,6 +54,8 @@ | |||
43 | "login.serverLogout" : "Vaša sesija je istekla, prijavite se ponovo.", | 54 | "login.serverLogout" : "Vaša sesija je istekla, prijavite se ponovo.", |
44 | "login.submit.label" : "Prijavite se", | 55 | "login.submit.label" : "Prijavite se", |
45 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", | 56 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", |
57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", | ||
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
46 | "menu.app.about" : "O Francu", | 59 | "menu.app.about" : "O Francu", |
47 | "menu.app.announcement" : "What's new?", | 60 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Potraži ažuriranja", | 61 | "menu.app.checkForUpdates" : "Potraži ažuriranja", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Датотека", | 81 | "menu.file" : "Датотека", |
69 | "menu.help" : "Помоћ", | 82 | "menu.help" : "Помоћ", |
70 | "menu.help.changelog" : "Дневник измена", | 83 | "menu.help.changelog" : "Дневник измена", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Сазнајте више", | 87 | "menu.help.learnMore" : "Сазнајте више", |
72 | "menu.help.privacy" : "Izjava o privatnosti", | 88 | "menu.help.privacy" : "Izjava o privatnosti", |
73 | "menu.help.support" : "Подршка", | 89 | "menu.help.support" : "Подршка", |
@@ -76,6 +92,8 @@ | |||
76 | "menu.services.activatePreviousService" : "Activate previous service", | 92 | "menu.services.activatePreviousService" : "Activate previous service", |
77 | "menu.services.addNewService" : "Додај нову уÑлугу", | 93 | "menu.services.addNewService" : "Додај нову уÑлугу", |
78 | "menu.services.setNextServiceActive" : "Activate next service", | 94 | "menu.services.setNextServiceActive" : "Activate next service", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Преглед", | 97 | "menu.view" : "Преглед", |
80 | "menu.view.enterFullScreen" : "Отвори у целом екрану", | 98 | "menu.view.enterFullScreen" : "Отвори у целом екрану", |
81 | "menu.view.exitFullScreen" : "ÐапуÑти цео екран", | 99 | "menu.view.exitFullScreen" : "ÐапуÑти цео екран", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "Промени алатке за развој", | 103 | "menu.view.toggleDevTools" : "Промени алатке за развој", |
86 | "menu.view.toggleFullScreen" : "Преко целог екрана", | 104 | "menu.view.toggleFullScreen" : "Преко целог екрана", |
87 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | 105 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Увећај приказ", | 107 | "menu.view.zoomIn" : "Увећај приказ", |
89 | "menu.view.zoomOut" : "Умањи приказ", | 108 | "menu.view.zoomOut" : "Умањи приказ", |
90 | "menu.window" : "У прозору", | 109 | "menu.window" : "У прозору", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Pošalji", | 122 | "password.submit.label" : "Pošalji", |
104 | "password.successInfo" : "Molimo Vas da provjerite vašu e-mail adresu", | 123 | "password.successInfo" : "Molimo Vas da provjerite vašu e-mail adresu", |
105 | "premiumFeature.button.upgradeAccount" : "Upgrade account", | 124 | "premiumFeature.button.upgradeAccount" : "Upgrade account", |
106 | "pricing.headline" : "Podržite Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Ne želim da podržim razvoj Franz-a.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Želim da podržim razvoj Franz-a.", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Izaberite vaš plan za podržavanje", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Osvježi {ime}", | 152 | "service.crashHandler.action" : "Osvježi {ime}", |
111 | "service.crashHandler.autoReload" : "Pokušaću automatski povratiti {ime} u {sekundi} sekundi", | 153 | "service.crashHandler.autoReload" : "Pokušaću automatski povratiti {ime} u {sekundi} sekundi", |
112 | "service.crashHandler.headline" : "O, ne! ", | 154 | "service.crashHandler.headline" : "O, ne! ", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "O, ne! ", | 160 | "service.errorHandler.headline" : "O, ne! ", |
119 | "service.errorHandler.message" : "Greška ", | 161 | "service.errorHandler.message" : "Greška ", |
120 | "service.errorHandler.text" : "{name} has failed to load.", | 162 | "service.errorHandler.text" : "{name} has failed to load.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Loading", | 168 | "service.webviewLoader.loading" : "Loading", |
122 | "services.getStarted" : "ZapoÄnimo! ", | 169 | "services.getStarted" : "ZapoÄnimo! ", |
123 | "services.welcome" : "Dobrodošli u Franz", | 170 | "services.welcome" : "Dobrodošli u Ferdi", |
124 | "settings.account.account.editButton" : "Uredi raÄun", | 171 | "settings.account.account.editButton" : "Uredi raÄun", |
125 | "settings.account.accountType.basic" : "Osnovni raÄun", | 172 | "settings.account.accountType.basic" : "Osnovni raÄun", |
126 | "settings.account.accountType.premium" : "Premium raÄun", | 173 | "settings.account.accountType.premium" : "Premium raÄun", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Promijenite lozinku", | 182 | "settings.account.headlinePassword" : "Promijenite lozinku", |
136 | "settings.account.headlineProfile" : "Ažurirajte profil", | 183 | "settings.account.headlineProfile" : "Ažurirajte profil", |
137 | "settings.account.headlineSubscription" : "Vaša pretplata", | 184 | "settings.account.headlineSubscription" : "Vaša pretplata", |
138 | "settings.account.headlineUpgrade" : "Nadogradite raÄun i podržite Franc", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Preuzmite", | 187 | "settings.account.invoiceDownload" : "Preuzmite", |
140 | "settings.account.manageSubscription.label" : "Upravljajte pretplatama", | 188 | "settings.account.manageSubscription.label" : "Upravljajte pretplatama", |
141 | "settings.account.successInfo" : "Vaše promjene su spremljene", | 189 | "settings.account.successInfo" : "Vaše promjene su spremljene", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Pokušajte ponovno", | 193 | "settings.account.tryReloadServices" : "Pokušajte ponovno", |
143 | "settings.account.tryReloadUserInfoRequest" : "Pokušajte ponovno", | 194 | "settings.account.tryReloadUserInfoRequest" : "Pokušajte ponovno", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Nije moguće uÄitati informacije o korisniku", | 196 | "settings.account.userInfoRequestFailed" : "Nije moguće uÄitati informacije o korisniku", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "ОчиÑти кеш", | 198 | "settings.app.buttonClearAllCache" : "ОчиÑти кеш", |
146 | "settings.app.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje", | 199 | "settings.app.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje", |
147 | "settings.app.buttonSearchForUpdate" : "Potraži ažuriranja", | 200 | "settings.app.buttonSearchForUpdate" : "Potraži ažuriranja", |
@@ -154,6 +207,8 @@ | |||
154 | "settings.app.form.enableGPUAcceleration" : "Омогући убрзање графичке јединице", | 207 | "settings.app.form.enableGPUAcceleration" : "Омогући убрзање графичке јединице", |
155 | "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa", | 208 | "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa", |
156 | "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci", | 209 | "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Jezik", | 212 | "settings.app.form.language" : "Jezik", |
158 | "settings.app.form.minimizeToSystemTray" : "Smanji Franca u sustavsku traku", | 213 | "settings.app.form.minimizeToSystemTray" : "Smanji Franca u sustavsku traku", |
159 | "settings.app.form.runInBackground" : "Neka se Franc održava u pozadini i ako je prozor zatvoren", | 214 | "settings.app.form.runInBackground" : "Neka se Franc održava u pozadini i ako je prozor zatvoren", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Vaše usluge", | 237 | "settings.navigation.yourServices" : "Vaše usluge", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Your workspaces", |
184 | "settings.recipes.all" : "Sve usluge", | 239 | "settings.recipes.all" : "Sve usluge", |
185 | "settings.recipes.dev" : "Razvoj", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Dostupne usluge", | 247 | "settings.recipes.headline" : "Dostupne usluge", |
187 | "settings.recipes.missingService" : "Da li neki servis nedostaje?", | 248 | "settings.recipes.missingService" : "Da li neki servis nedostaje?", |
188 | "settings.recipes.mostPopular" : "Najpopularniji", | 249 | "settings.recipes.mostPopular" : "Najpopularniji", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Dodajte novu uslugu", | 332 | "sidebar.addNewService" : "Dodajte novu uslugu", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 334 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", |
273 | "sidebar.muteApp" : "Онемогући обавештења и звукове", | 335 | "sidebar.muteApp" : "Онемогући обавештења и звукове", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "Postavke", | 338 | "sidebar.settings" : "Postavke", |
276 | "sidebar.unmuteApp" : "ИÑкључи обавештења и звукове", | 339 | "sidebar.unmuteApp" : "ИÑкључи обавештења и звукове", |
277 | "signup.company.label" : "Tvrtka", | ||
278 | "signup.email.label" : "Vaša e-adresa", | 340 | "signup.email.label" : "Vaša e-adresa", |
279 | "signup.emailDuplicate" : "Već postoji korisnik s tom e-mail adresom", | 341 | "signup.emailDuplicate" : "Već postoji korisnik s tom e-mail adresom", |
280 | "signup.firstname.label" : "Ime", | 342 | "signup.firstname.label" : "Ime", |
@@ -286,20 +348,12 @@ | |||
286 | "signup.link.login" : "Imate raÄun? Prijavite se.", | 348 | "signup.link.login" : "Imate raÄun? Prijavite se.", |
287 | "signup.password.label" : "Lozinka", | 349 | "signup.password.label" : "Lozinka", |
288 | "signup.submit.label" : "Napravite novi raÄun", | 350 | "signup.submit.label" : "Napravite novi raÄun", |
289 | "subscription.euTaxInfo" : "EU državljani, upozerenje: Moguće taksiranje", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Bez reklama, doživotno!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "Dolazi uskoro", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Proxy support for services", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Support for spellchecker", | ||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | ||
297 | "subscription.includedFeatures" : "Plaćeni\/Premium raÄun ukljuÄuje sljedeće:", | ||
298 | "subscription.paymentSessionError" : "Nemoguće inicijalizirati obrazac za uplatu", | ||
299 | "subscription.submit.label" : "Želim da podržim razvoj Franca.", | ||
300 | "subscription.type.free" : "Slobodno", | ||
301 | "subscription.type.month" : "mjesec", | ||
302 | "subscription.type.year" : "godina", | ||
303 | "subscriptionPopup.buttonCancel" : "Odustani", | 357 | "subscriptionPopup.buttonCancel" : "Odustani", |
304 | "subscriptionPopup.buttonDone" : "Završeno", | 358 | "subscriptionPopup.buttonDone" : "Završeno", |
305 | "tabs.item.deleteService" : "Izbriši servis", | 359 | "tabs.item.deleteService" : "Izbriši servis", |
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 860030c11..f90c11e89 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Tekrar Yükle", | 2 | "app.errorHandler.action" : "Tekrar Yükle", |
3 | "app.errorHandler.headline" : "Bir terslik çıktı", | 3 | "app.errorHandler.headline" : "Bir terslik çıktı", |
4 | "feature.announcements.changelog.headline" : "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", |
5 | "feature.delayApp.action" : "Ferdi Destek Lisansı'nı alın", | 5 | "feature.delayApp.headline" : "Beklememek için Franz Destek Lisansı'nı satın alın", |
6 | "feature.delayApp.headline" : "Beklememek için Ferdi Destek Lisansı'nı satın alın", | 6 | "feature.delayApp.text" : "Franz {seconds} saniye sonra devam edecek.", |
7 | "feature.delayApp.text" : "Ferdi {seconds} saniye sonra devam edecek.", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Franz Destek Lisansı'nı alın", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Hesabı Yükselt", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Mail olarak gönder", | 13 | "feature.shareFranz.action.email" : "Mail olarak gönder", |
9 | "feature.shareFranz.action.facebook" : "Facebook'ta PaylaÅŸ", | 14 | "feature.shareFranz.action.facebook" : "Facebook'ta PaylaÅŸ", |
10 | "feature.shareFranz.action.twitter" : "Twitter'da PaylaÅŸ", | 15 | "feature.shareFranz.action.twitter" : "Twitter'da PaylaÅŸ", |
11 | "feature.shareFranz.headline" : "Ferdi birlikte daha iyi!", | 16 | "feature.shareFranz.headline" : "Ferdi birlikte daha iyi!", |
12 | "feature.shareFranz.shareText.email" : "Franz'a {count} tane servis ekledim! WhatsApp, Messenger, Slack ve fazlasını içeren ücretsiz uygulamayı www.meetfranz.com adresinden edinin.", | 17 | "feature.shareFranz.shareText.email" : "Franz'a {count} tane servis ekledim! WhatsApp, Messenger, Slack ve fazlasını içeren ücretsiz uygulamayı www.meetfranz.com adresinden edinin.", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Arkadaşlarına ve meslektaşlarına Franz'ın ne kadar harika olduğunu söyle ve bize bu kelimeyi yaymamızda yardım et.", | 19 | "feature.shareFranz.text" : "Arkadaşlarına ve meslektaşlarına Ferdi'ın ne kadar harika olduğunu söyle ve bize bu kelimeyi yaymamızda yardım et.", |
15 | "global.api.unhealthy" : "Ferdi hizmetlerine ÅŸu anda eriÅŸilemiyor", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Franz hizmetlerine ÅŸu anda eriÅŸilemiyor", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "İnternete bağlı değilsiniz.", | 25 | "global.notConnectedToTheInternet" : "İnternete bağlı değilsiniz.", |
17 | "global.spellchecker.useDefault" : "Sistem Dilini Kullan ({default})", | 26 | "global.spellchecker.useDefault" : "Sistem Dilini Kullan ({default})", |
18 | "global.spellchecking.autodetect" : "Dili otomatik tespit et", | 27 | "global.spellchecking.autodetect" : "Dili otomatik tespit et", |
19 | "global.spellchecking.autodetect.short" : "Otomatik", | 28 | "global.spellchecking.autodetect.short" : "Otomatik", |
20 | "global.spellchecking.language" : "Ä°mla kontrol dili", | 29 | "global.spellchecking.language" : "Ä°mla kontrol dili", |
21 | "import.headline" : "Ferdi 4 servislerinizi içeri aktarın", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Henüz Ferdi 5'te desteklenmeyen servisler", | 31 | "import.headline" : "Franz 4 servislerinizi içeri aktarın", |
32 | "import.notSupportedHeadline" : "Henüz Franz 5'te desteklenmeyen servisler", | ||
23 | "import.skip.label" : "Servisleri kendim eklemek istiyorum", | 33 | "import.skip.label" : "Servisleri kendim eklemek istiyorum", |
24 | "import.submit.label" : "Servisleri içe aktar", | 34 | "import.submit.label" : "Servisleri içe aktar", |
25 | "infobar.buttonChangelog" : "Yeni ne var?", | 35 | "infobar.buttonChangelog" : "Yeni ne var?", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Hizmetleri yeniden yükle", | 37 | "infobar.buttonReloadServices" : "Hizmetleri yeniden yükle", |
28 | "infobar.requiredRequestsFailed" : "Hizmetler ve kullanıcı bilgileri yüklenemedi", | 38 | "infobar.requiredRequestsFailed" : "Hizmetler ve kullanıcı bilgileri yüklenemedi", |
29 | "infobar.servicesUpdated" : "Hizmetleriniz güncellendi.", | 39 | "infobar.servicesUpdated" : "Hizmetleriniz güncellendi.", |
30 | "infobar.updateAvailable" : "Yeni Ferdi güncellemesi mevcut.", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Yeni Franz güncellemesi mevcut.", | ||
31 | "invite.email.label" : "E-posta adresi", | 42 | "invite.email.label" : "E-posta adresi", |
32 | "invite.headline.friends" : "3 arkadaşını ya da çalışma arkadaşını davet et", | 43 | "invite.headline.friends" : "3 arkadaşını ya da çalışma arkadaşını davet et", |
33 | "invite.name.label" : "Ad", | 44 | "invite.name.label" : "Ad", |
@@ -43,8 +54,10 @@ | |||
43 | "login.serverLogout" : "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.", | 54 | "login.serverLogout" : "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.", |
44 | "login.submit.label" : "Oturum Aç", | 55 | "login.submit.label" : "Oturum Aç", |
45 | "login.tokenExpired" : "Oturum zaman aşımına uğradı, lütfen tekrar giriş yapın.", | 56 | "login.tokenExpired" : "Oturum zaman aşımına uğradı, lütfen tekrar giriş yapın.", |
46 | "menu.app.about" : "Ferdi Hakkında", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
47 | "menu.app.announcement" : "What's new?", | 58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", |
59 | "menu.app.about" : "Franz Hakkında", | ||
60 | "menu.app.announcement" : "Neler yeni?", | ||
48 | "menu.app.checkForUpdates" : "Güncellemeleri kontrol et", | 61 | "menu.app.checkForUpdates" : "Güncellemeleri kontrol et", |
49 | "menu.app.hide" : "Gizle", | 62 | "menu.app.hide" : "Gizle", |
50 | "menu.app.hideOthers" : "DiÄŸerlerini Gizle", | 63 | "menu.app.hideOthers" : "DiÄŸerlerini Gizle", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Dosya", | 81 | "menu.file" : "Dosya", |
69 | "menu.help" : "Yardım", | 82 | "menu.help" : "Yardım", |
70 | "menu.help.changelog" : "Değişim Günlüğü", | 83 | "menu.help.changelog" : "Değişim Günlüğü", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Daha Fazlasını Öğrenin", | 87 | "menu.help.learnMore" : "Daha Fazlasını Öğrenin", |
72 | "menu.help.privacy" : "Gizlilik Sözleşmesi", | 88 | "menu.help.privacy" : "Gizlilik Sözleşmesi", |
73 | "menu.help.support" : "Destek", | 89 | "menu.help.support" : "Destek", |
@@ -76,6 +92,8 @@ | |||
76 | "menu.services.activatePreviousService" : "Activate previous service", | 92 | "menu.services.activatePreviousService" : "Activate previous service", |
77 | "menu.services.addNewService" : "Yeni servis ekle...", | 93 | "menu.services.addNewService" : "Yeni servis ekle...", |
78 | "menu.services.setNextServiceActive" : "Activate next service", | 94 | "menu.services.setNextServiceActive" : "Activate next service", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "Görünüm", | 97 | "menu.view" : "Görünüm", |
80 | "menu.view.enterFullScreen" : "Tam Ekrana Geç", | 98 | "menu.view.enterFullScreen" : "Tam Ekrana Geç", |
81 | "menu.view.exitFullScreen" : "Tam Ekrandan Çık", | 99 | "menu.view.exitFullScreen" : "Tam Ekrandan Çık", |
@@ -85,6 +103,7 @@ | |||
85 | "menu.view.toggleDevTools" : "Geliştirici Araçlarına Geç", | 103 | "menu.view.toggleDevTools" : "Geliştirici Araçlarına Geç", |
86 | "menu.view.toggleFullScreen" : "Tam Ekrana Geç", | 104 | "menu.view.toggleFullScreen" : "Tam Ekrana Geç", |
87 | "menu.view.toggleServiceDevTools" : "Hizmet Geliştirici Araçlarını Değiştir", | 105 | "menu.view.toggleServiceDevTools" : "Hizmet Geliştirici Araçlarını Değiştir", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Yakınlaştır", | 107 | "menu.view.zoomIn" : "Yakınlaştır", |
89 | "menu.view.zoomOut" : "Uzaklaştır", | 108 | "menu.view.zoomOut" : "Uzaklaştır", |
90 | "menu.window" : "Pencere", | 109 | "menu.window" : "Pencere", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Gönder", | 122 | "password.submit.label" : "Gönder", |
104 | "password.successInfo" : "E-postanızı kontrol ediniz", | 123 | "password.successInfo" : "E-postanızı kontrol ediniz", |
105 | "premiumFeature.button.upgradeAccount" : "Hesabı Yükselt", | 124 | "premiumFeature.button.upgradeAccount" : "Hesabı Yükselt", |
106 | "pricing.headline" : "Franz'ı Destekle", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Franz'ın gelişimini desteklemek istemiyorum.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Franz'ın gelişimini desteklemek istiyorum", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Destek planınızı seçiniz", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "{name} yeniden yükle", | 152 | "service.crashHandler.action" : "{name} yeniden yükle", |
111 | "service.crashHandler.autoReload" : "{name}'i {seconds} saniye içerisinde otomatik onarmayı deniyoruz", | 153 | "service.crashHandler.autoReload" : "{name}'i {seconds} saniye içerisinde otomatik onarmayı deniyoruz", |
112 | "service.crashHandler.headline" : "Aman Tanrım hayır!", | 154 | "service.crashHandler.headline" : "Aman Tanrım hayır!", |
@@ -118,6 +160,11 @@ | |||
118 | "service.errorHandler.headline" : "Hayııırrr!", | 160 | "service.errorHandler.headline" : "Hayııırrr!", |
119 | "service.errorHandler.message" : "Hata", | 161 | "service.errorHandler.message" : "Hata", |
120 | "service.errorHandler.text" : "{name} yüklenemedi.", | 162 | "service.errorHandler.text" : "{name} yüklenemedi.", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Yükleniyor", | 168 | "service.webviewLoader.loading" : "Yükleniyor", |
122 | "services.getStarted" : "Haydi başlayalım", | 169 | "services.getStarted" : "Haydi başlayalım", |
123 | "services.welcome" : "Franz'a HoÅŸgeldiniz", | 170 | "services.welcome" : "Franz'a HoÅŸgeldiniz", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Parolayı değiştir", | 182 | "settings.account.headlinePassword" : "Parolayı değiştir", |
136 | "settings.account.headlineProfile" : "Profili güncelle", | 183 | "settings.account.headlineProfile" : "Profili güncelle", |
137 | "settings.account.headlineSubscription" : "AboneliÄŸin", | 184 | "settings.account.headlineSubscription" : "AboneliÄŸin", |
138 | "settings.account.headlineUpgrade" : "Hesabını yükselt & Franz'ı destekle", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Ä°ndir", | 187 | "settings.account.invoiceDownload" : "Ä°ndir", |
140 | "settings.account.manageSubscription.label" : "Aboneliğini yönet", | 188 | "settings.account.manageSubscription.label" : "Aboneliğini yönet", |
141 | "settings.account.successInfo" : "DeÄŸiÅŸikliklerin kaydedildi", | 189 | "settings.account.successInfo" : "DeÄŸiÅŸikliklerin kaydedildi", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Tekrar deneyin", | 193 | "settings.account.tryReloadServices" : "Tekrar deneyin", |
143 | "settings.account.tryReloadUserInfoRequest" : "Tekrar deneyin", | 194 | "settings.account.tryReloadUserInfoRequest" : "Tekrar deneyin", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Kullanıcı bilgisi yüklenemedi", | 196 | "settings.account.userInfoRequestFailed" : "Kullanıcı bilgisi yüklenemedi", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "Önbelleği temizle", | 198 | "settings.app.buttonClearAllCache" : "Önbelleği temizle", |
146 | "settings.app.buttonInstallUpdate" : "Yeniden Başlat ve Güncelleştirmeleri Kur", | 199 | "settings.app.buttonInstallUpdate" : "Yeniden Başlat ve Güncelleştirmeleri Kur", |
147 | "settings.app.buttonSearchForUpdate" : "Güncellemeleri kontrol et", | 200 | "settings.app.buttonSearchForUpdate" : "Güncellemeleri kontrol et", |
@@ -154,9 +207,11 @@ | |||
154 | "settings.app.form.enableGPUAcceleration" : "Grafik İşlemci Ünitesi (GPU) Hızlandırıcısını Aktif et", | 207 | "settings.app.form.enableGPUAcceleration" : "Grafik İşlemci Ünitesi (GPU) Hızlandırıcısını Aktif et", |
155 | "settings.app.form.enableSpellchecking" : "Yazım denetimini etkinleştir", | 208 | "settings.app.form.enableSpellchecking" : "Yazım denetimini etkinleştir", |
156 | "settings.app.form.enableSystemTray" : "Franz'ı sistem tepsisinde göster", | 209 | "settings.app.form.enableSystemTray" : "Franz'ı sistem tepsisinde göster", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Dil", | 212 | "settings.app.form.language" : "Dil", |
158 | "settings.app.form.minimizeToSystemTray" : "Franz'ı sistem tepsisine küçült", | 213 | "settings.app.form.minimizeToSystemTray" : "Franz'ı sistem tepsisine küçült", |
159 | "settings.app.form.runInBackground" : "Pencereyi kapatırken Franz'ı arka planda tut", | 214 | "settings.app.form.runInBackground" : "Pencereyi kapatırken Ferdi'ı arka planda tut", |
160 | "settings.app.form.showDisabledServices" : "Devre dışı bırakılan servis sekmelerini göster", | 215 | "settings.app.form.showDisabledServices" : "Devre dışı bırakılan servis sekmelerini göster", |
161 | "settings.app.form.showMessagesBadgesWhenMuted" : "Bildirimler kapalı iken okunmamış mesaj sayısını göster", | 216 | "settings.app.form.showMessagesBadgesWhenMuted" : "Bildirimler kapalı iken okunmamış mesaj sayısını göster", |
162 | "settings.app.headline" : "Ayarlar", | 217 | "settings.app.headline" : "Ayarlar", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Servislerin", | 237 | "settings.navigation.yourServices" : "Servislerin", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Your workspaces", |
184 | "settings.recipes.all" : "Tüm servisler", | 239 | "settings.recipes.all" : "Tüm servisler", |
185 | "settings.recipes.dev" : "GeliÅŸtirme", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "Mevcut servisler", | 247 | "settings.recipes.headline" : "Mevcut servisler", |
187 | "settings.recipes.missingService" : "Aradığın servisi bulamadın mı?", | 248 | "settings.recipes.missingService" : "Aradığın servisi bulamadın mı?", |
188 | "settings.recipes.mostPopular" : "En popüler", | 249 | "settings.recipes.mostPopular" : "En popüler", |
@@ -221,7 +282,7 @@ | |||
221 | "settings.service.form.proxy.isEnabled" : "Proxy Kullan", | 282 | "settings.service.form.proxy.isEnabled" : "Proxy Kullan", |
222 | "settings.service.form.proxy.password" : "Parola (opsiyonel)", | 283 | "settings.service.form.proxy.password" : "Parola (opsiyonel)", |
223 | "settings.service.form.proxy.port" : "Port", | 284 | "settings.service.form.proxy.port" : "Port", |
224 | "settings.service.form.proxy.restartInfo" : "Proxy ayarlarını değiştirdikten sonra Franz'ı yeniden başlatınız.", | 285 | "settings.service.form.proxy.restartInfo" : "Proxy ayarlarını değiştirdikten sonra Ferdi'ı yeniden başlatınız.", |
225 | "settings.service.form.proxy.user" : "Kullanıcı (opsiyonel)", | 286 | "settings.service.form.proxy.user" : "Kullanıcı (opsiyonel)", |
226 | "settings.service.form.saveButton" : "Servisi kaydet", | 287 | "settings.service.form.saveButton" : "Servisi kaydet", |
227 | "settings.service.form.tabHosted" : "Barındırılan", | 288 | "settings.service.form.tabHosted" : "Barındırılan", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Yeni servis ekle", | 332 | "sidebar.addNewService" : "Yeni servis ekle", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 334 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", |
273 | "sidebar.muteApp" : "Bildirimleri ve sesli uyarıları kapat", | 335 | "sidebar.muteApp" : "Bildirimleri ve sesli uyarıları kapat", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "Ayarlar", | 338 | "sidebar.settings" : "Ayarlar", |
276 | "sidebar.unmuteApp" : "Bildirimleri ve sesli uyarıları etkinleştir", | 339 | "sidebar.unmuteApp" : "Bildirimleri ve sesli uyarıları etkinleştir", |
277 | "signup.company.label" : "Kurum", | ||
278 | "signup.email.label" : "E-posta adresi", | 340 | "signup.email.label" : "E-posta adresi", |
279 | "signup.emailDuplicate" : "Bu email adresine sahip bir kullanıcı zaten mevcut", | 341 | "signup.emailDuplicate" : "Bu email adresine sahip bir kullanıcı zaten mevcut", |
280 | "signup.firstname.label" : "Ad", | 342 | "signup.firstname.label" : "Ad", |
@@ -286,20 +348,12 @@ | |||
286 | "signup.link.login" : "Hali hazırda hesabınız varsa giriş yapmak ister misiniz?", | 348 | "signup.link.login" : "Hali hazırda hesabınız varsa giriş yapmak ister misiniz?", |
287 | "signup.password.label" : "Åžifre", | 349 | "signup.password.label" : "Åžifre", |
288 | "signup.submit.label" : "Hesap oluÅŸtur", | 350 | "signup.submit.label" : "Hesap oluÅŸtur", |
289 | "subscription.euTaxInfo" : "AB vatandaşları: yerel satış vergileri uygulanabilir", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Reklam yok, asla!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "yakında geliyor", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "Uygulama gecikmeleri & yükseltme lisanları için dırdır yok", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "Mattermost gibi şirket-içi\/barındırılan servisler ekleyin", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Servisler için proxy desteği", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Yazım denetleyicisi desteği", | ||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | ||
297 | "subscription.includedFeatures" : "Ücretli Ferdi Premium Destekçi Hesabına dahil", | ||
298 | "subscription.paymentSessionError" : "Ödeme formu başlatılamadı", | ||
299 | "subscription.submit.label" : "Franz'ın gelişimini desteklemek istiyorum", | ||
300 | "subscription.type.free" : "ücretsiz", | ||
301 | "subscription.type.month" : "ay", | ||
302 | "subscription.type.year" : "yıl", | ||
303 | "subscriptionPopup.buttonCancel" : "Ä°ptal", | 357 | "subscriptionPopup.buttonCancel" : "Ä°ptal", |
304 | "subscriptionPopup.buttonDone" : "Tamamlandı", | 358 | "subscriptionPopup.buttonDone" : "Tamamlandı", |
305 | "tabs.item.deleteService" : "Servisi sil", | 359 | "tabs.item.deleteService" : "Servisi sil", |
diff --git a/src/i18n/locales/ua.json b/src/i18n/locales/ua.json index d7486018b..bbbc33b42 100644 --- a/src/i18n/locales/ua.json +++ b/src/i18n/locales/ua.json | |||
@@ -1,5 +1,5 @@ | |||
1 | { | 1 | { |
2 | "global.api.unhealthy": "Ðе можна підключитиÑÑŒ до онлайн ÑервіÑів Franz", | 2 | "global.api.unhealthy": "Ðе можна підключитиÑÑŒ до онлайн ÑервіÑів Ferdi", |
3 | "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.", | 3 | "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.", |
4 | "welcome.signupButton": "Створити безплатний акаунт", | 4 | "welcome.signupButton": "Створити безплатний акаунт", |
5 | "welcome.loginButton": "Увійдіть до Ñвого акаунту", | 5 | "welcome.loginButton": "Увійдіть до Ñвого акаунту", |
@@ -32,9 +32,9 @@ | |||
32 | "signup.legal.info": "СтвореннÑм акаунту Ferdi ви приймаєте", | 32 | "signup.legal.info": "СтвореннÑм акаунту Ferdi ви приймаєте", |
33 | "signup.legal.terms": "Умови викориÑтаннÑ", | 33 | "signup.legal.terms": "Умови викориÑтаннÑ", |
34 | "signup.legal.privacy": "ЗаÑва про конфіденційніÑÑ‚ÑŒ", | 34 | "signup.legal.privacy": "ЗаÑва про конфіденційніÑÑ‚ÑŒ", |
35 | "pricing.headline": "Підтримайте Franz", | 35 | "pricing.headline": "Підтримайте Ferdi", |
36 | "pricing.support.label": "Виберіть Ñвій план підтримки", | 36 | "pricing.support.label": "Виберіть Ñвій план підтримки", |
37 | "pricing.submit.label": "Я хочу підтримати розробку Franz", | 37 | "pricing.submit.label": "Я хочу підтримати розробку Ferdi", |
38 | "pricing.link.skipPayment": "Я не хочу підтримувати розробку Franz.", | 38 | "pricing.link.skipPayment": "Я не хочу підтримувати розробку Franz.", |
39 | "import.headline": "Імпортувати ваші ÑервіÑи з Ferdi 4", | 39 | "import.headline": "Імпортувати ваші ÑервіÑи з Ferdi 4", |
40 | "import.notSupportedHeadline": "СервіÑи ще не підтримуютьÑÑ Ð² Ferdi 5", | 40 | "import.notSupportedHeadline": "СервіÑи ще не підтримуютьÑÑ Ð² Ferdi 5", |
@@ -45,7 +45,7 @@ | |||
45 | "invite.name.label": "Ім'Ñ", | 45 | "invite.name.label": "Ім'Ñ", |
46 | "invite.email.label": "Email адреÑа", | 46 | "invite.email.label": "Email адреÑа", |
47 | "invite.skip.label": "Я хочу зробити це пізніше", | 47 | "invite.skip.label": "Я хочу зробити це пізніше", |
48 | "subscription.submit.label": "Я хочу підтримати розробку Franz", | 48 | "subscription.submit.label": "Я хочу підтримати розробку Ferdi", |
49 | "subscription.paymentSessionError": "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ форму платежу", | 49 | "subscription.paymentSessionError": "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ форму платежу", |
50 | "subscription.includedFeatures": "Платний Преміальний Ðкаунт Прихильника Ferdi включає", | 50 | "subscription.includedFeatures": "Платний Преміальний Ðкаунт Прихильника Ferdi включає", |
51 | "subscription.features.onpremise": "Додайте on-premise / hosted ÑервіÑи, такі Ñк Hipchat", | 51 | "subscription.features.onpremise": "Додайте on-premise / hosted ÑервіÑи, такі Ñк Hipchat", |
@@ -61,11 +61,11 @@ | |||
61 | "infobar.requiredRequestsFailed": "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ ÑервіÑи та інформацію кориÑтувача", | 61 | "infobar.requiredRequestsFailed": "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ ÑервіÑи та інформацію кориÑтувача", |
62 | "sidebar.settings": "ÐалаштуваннÑ", | 62 | "sidebar.settings": "ÐалаштуваннÑ", |
63 | "sidebar.addNewService": "!!!Add new service", | 63 | "sidebar.addNewService": "!!!Add new service", |
64 | "services.welcome": "ЛаÑкаво проÑимо в Franz", | 64 | "services.welcome": "ЛаÑкаво проÑимо в Ferdi", |
65 | "services.getStarted": "Почати", | 65 | "services.getStarted": "Почати", |
66 | "settings.account.headline": "Ðкаунт", | 66 | "settings.account.headline": "Ðкаунт", |
67 | "settings.account.headlineSubscription": "Ваша підпиÑка", | 67 | "settings.account.headlineSubscription": "Ваша підпиÑка", |
68 | "settings.account.headlineUpgrade": "Оновити ваш акаунт і підтримати Franz", | 68 | "settings.account.headlineUpgrade": "Оновити ваш акаунт і підтримати Ferdi", |
69 | "settings.account.headlineInvoices": "ІнвойÑи", | 69 | "settings.account.headlineInvoices": "ІнвойÑи", |
70 | "settings.account.manageSubscription.label": "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð°ÑˆÐ¾ÑŽ підпиÑкою", | 70 | "settings.account.manageSubscription.label": "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð°ÑˆÐ¾ÑŽ підпиÑкою", |
71 | "settings.account.accountType.basic": "Базовий акаунт", | 71 | "settings.account.accountType.basic": "Базовий акаунт", |
@@ -124,7 +124,7 @@ | |||
124 | "settings.app.buttonInstallUpdate": "Перезавантажити Ñ– вÑтановити оновленнÑ", | 124 | "settings.app.buttonInstallUpdate": "Перезавантажити Ñ– вÑтановити оновленнÑ", |
125 | "settings.app.updateStatusSearching": "Шукає оновленнÑ", | 125 | "settings.app.updateStatusSearching": "Шукає оновленнÑ", |
126 | "settings.app.updateStatusAvailable": "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупне, завантаженнÑ...", | 126 | "settings.app.updateStatusAvailable": "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупне, завантаженнÑ...", |
127 | "settings.app.updateStatusUpToDate": "Ви викориÑтовуєте оÑтанню верÑÑ–ÑŽ Franz", | 127 | "settings.app.updateStatusUpToDate": "Ви викориÑтовуєте оÑтанню верÑÑ–ÑŽ Ferdi", |
128 | "settings.app.form.autoLaunchOnStart": "ЗапуÑкати Ferdi на початку", | 128 | "settings.app.form.autoLaunchOnStart": "ЗапуÑкати Ferdi на початку", |
129 | "settings.app.form.autoLaunchInBackground": "Відкрити у фоновому режимі", | 129 | "settings.app.form.autoLaunchInBackground": "Відкрити у фоновому режимі", |
130 | "settings.app.form.minimizeToSystemTray": "Мінімізувати Ferdi до ÑиÑтемного лотка", | 130 | "settings.app.form.minimizeToSystemTray": "Мінімізувати Ferdi до ÑиÑтемного лотка", |
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index fe8f44d19..8376a29a4 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Перезавантажити", | 2 | "app.errorHandler.action" : "Перезавантажити", |
3 | "app.errorHandler.headline" : "ЩоÑÑŒ пішло не так", | 3 | "app.errorHandler.headline" : "ЩоÑÑŒ пішло не так", |
4 | "feature.announcements.changelog.headline" : "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "Changes in Franz {version}", |
5 | "feature.delayApp.action" : "Отримати ліцензію Ferdi Supporter ", | 5 | "feature.delayApp.headline" : "Будь лаÑка, придбайте ліцензію Franz Supporter аби пропуÑтити очікуваннÑ", |
6 | "feature.delayApp.headline" : "Будь лаÑка, придбайте ліцензію Ferdi Supporter аби пропуÑтити очікуваннÑ", | 6 | "feature.delayApp.text" : "Franz відновить роботу за {seconds} Ñекунд", |
7 | "feature.delayApp.text" : "Ferdi відновить роботу за {seconds} Ñекунд", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", | ||
9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", | ||
10 | "feature.delayApp.upgrade.action" : "Отримати ліцензію Franz Supporter ", | ||
11 | "feature.delayApp.upgrade.actionShort" : "Преміум акаунт", | ||
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
8 | "feature.shareFranz.action.email" : "Send as email", | 13 | "feature.shareFranz.action.email" : "Send as email", |
9 | "feature.shareFranz.action.facebook" : "Share on Facebook", | 14 | "feature.shareFranz.action.facebook" : "Share on Facebook", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 15 | "feature.shareFranz.action.twitter" : "Share on Twitter", |
11 | "feature.shareFranz.headline" : "Ferdi is better together!", | 16 | "feature.shareFranz.headline" : "Ferdi is better together!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
15 | "global.api.unhealthy" : "Ðе можливо підключитиÑÑŒ до онлайн ÑервіÑів Franz", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "Ðе можливо підключитиÑÑŒ до онлайн ÑервіÑів Ferdi", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "Ви не підключені до Інтернету.", | 25 | "global.notConnectedToTheInternet" : "Ви не підключені до Інтернету.", |
17 | "global.spellchecker.useDefault" : "ВикориÑтовувати ÑиÑтемні параметри за змовчуваннÑм ({default})", | 26 | "global.spellchecker.useDefault" : "ВикориÑтовувати ÑиÑтемні параметри за змовчуваннÑм ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 27 | "global.spellchecking.autodetect" : "Detect language automatically", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 28 | "global.spellchecking.autodetect.short" : "Automatic", |
20 | "global.spellchecking.language" : "Мова перевірки правопиÑу", | 29 | "global.spellchecking.language" : "Мова перевірки правопиÑу", |
21 | "import.headline" : "Імпортувати ваші ÑервіÑи з Ferdi 4", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Ðаразі ÑервіÑи не підтримуютьÑÑ Ñƒ Ferdi 5", | 31 | "import.headline" : "Імпортувати ваші ÑервіÑи з Franz 4", |
32 | "import.notSupportedHeadline" : "Ðаразі ÑервіÑи не підтримуютьÑÑ Ñƒ Franz 5", | ||
23 | "import.skip.label" : "Я бажаю додати ÑÐµÑ€Ð²Ñ–Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ", | 33 | "import.skip.label" : "Я бажаю додати ÑÐµÑ€Ð²Ñ–Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ", |
24 | "import.submit.label" : "Імпортувати ÑервіÑи", | 34 | "import.submit.label" : "Імпортувати ÑервіÑи", |
25 | "infobar.buttonChangelog" : "Що нового?", | 35 | "infobar.buttonChangelog" : "Що нового?", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "Перезавантажити ÑервіÑи", | 37 | "infobar.buttonReloadServices" : "Перезавантажити ÑервіÑи", |
28 | "infobar.requiredRequestsFailed" : "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ ÑервіÑи та інформацію кориÑтувача", | 38 | "infobar.requiredRequestsFailed" : "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ ÑервіÑи та інформацію кориÑтувача", |
29 | "infobar.servicesUpdated" : "Ваші ÑервіÑи було оновлено.", | 39 | "infobar.servicesUpdated" : "Ваші ÑервіÑи було оновлено.", |
30 | "infobar.updateAvailable" : "Ðове Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ferdi доÑтупне.", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Ðове Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Franz доÑтупне.", | ||
31 | "invite.email.label" : "Email адреÑа", | 42 | "invite.email.label" : "Email адреÑа", |
32 | "invite.headline.friends" : "ЗапроÑÑ–Ñ‚ÑŒ 3-Ñ… ваших друзів або колег", | 43 | "invite.headline.friends" : "ЗапроÑÑ–Ñ‚ÑŒ 3-Ñ… ваших друзів або колег", |
33 | "invite.name.label" : "Ім'Ñ", | 44 | "invite.name.label" : "Ім'Ñ", |
@@ -43,7 +54,9 @@ | |||
43 | "login.serverLogout" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, увійдіть знову.", | 54 | "login.serverLogout" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, увійдіть знову.", |
44 | "login.submit.label" : "Увійти", | 55 | "login.submit.label" : "Увійти", |
45 | "login.tokenExpired" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, увійдіть знову.", | 56 | "login.tokenExpired" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, увійдіть знову.", |
46 | "menu.app.about" : "Про Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", | ||
59 | "menu.app.about" : "Про Ferdi", | ||
47 | "menu.app.announcement" : "What's new?", | 60 | "menu.app.announcement" : "What's new?", |
48 | "menu.app.checkForUpdates" : "Перевірити наÑвніÑÑ‚ÑŒ оновлень", | 61 | "menu.app.checkForUpdates" : "Перевірити наÑвніÑÑ‚ÑŒ оновлень", |
49 | "menu.app.hide" : "Приховати", | 62 | "menu.app.hide" : "Приховати", |
@@ -68,6 +81,9 @@ | |||
68 | "menu.file" : "Файл", | 81 | "menu.file" : "Файл", |
69 | "menu.help" : "Довідка", | 82 | "menu.help" : "Довідка", |
70 | "menu.help.changelog" : "Журнал змін", | 83 | "menu.help.changelog" : "Журнал змін", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "Докладніше", | 87 | "menu.help.learnMore" : "Докладніше", |
72 | "menu.help.privacy" : "ЗаÑва про конфіденційніÑÑ‚ÑŒ", | 88 | "menu.help.privacy" : "ЗаÑва про конфіденційніÑÑ‚ÑŒ", |
73 | "menu.help.support" : "Підтримка", | 89 | "menu.help.support" : "Підтримка", |
@@ -76,15 +92,18 @@ | |||
76 | "menu.services.activatePreviousService" : "Activate previous service", | 92 | "menu.services.activatePreviousService" : "Activate previous service", |
77 | "menu.services.addNewService" : "Додати ÑервіÑ", | 93 | "menu.services.addNewService" : "Додати ÑервіÑ", |
78 | "menu.services.setNextServiceActive" : "Activate next service", | 94 | "menu.services.setNextServiceActive" : "Activate next service", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "ВиглÑд", | 97 | "menu.view" : "ВиглÑд", |
80 | "menu.view.enterFullScreen" : "Вікно на повний екран", | 98 | "menu.view.enterFullScreen" : "Вікно на повний екран", |
81 | "menu.view.exitFullScreen" : "Вийти з повного екрану", | 99 | "menu.view.exitFullScreen" : "Вийти з повного екрану", |
82 | "menu.view.reloadFranz" : "Перезавантажити Franz", | 100 | "menu.view.reloadFranz" : "Перезавантажити Ferdi", |
83 | "menu.view.reloadService" : "Перезавантажити ÑервіÑ", | 101 | "menu.view.reloadService" : "Перезавантажити ÑервіÑ", |
84 | "menu.view.resetZoom" : "Фактичний розмір", | 102 | "menu.view.resetZoom" : "Фактичний розмір", |
85 | "menu.view.toggleDevTools" : "Переключити інÑтрумент розробника", | 103 | "menu.view.toggleDevTools" : "Переключити інÑтрумент розробника", |
86 | "menu.view.toggleFullScreen" : "ПереключитиÑÑ Ð½Ð° повний екран", | 104 | "menu.view.toggleFullScreen" : "ПереключитиÑÑ Ð½Ð° повний екран", |
87 | "menu.view.toggleServiceDevTools" : "Переключити інÑтрументи розробника ÑервіÑу", | 105 | "menu.view.toggleServiceDevTools" : "Переключити інÑтрументи розробника ÑервіÑу", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "Збільшити маÑштаб", | 107 | "menu.view.zoomIn" : "Збільшити маÑштаб", |
89 | "menu.view.zoomOut" : "Зменьшити маÑштаб", | 108 | "menu.view.zoomOut" : "Зменьшити маÑштаб", |
90 | "menu.window" : "Вікно", | 109 | "menu.window" : "Вікно", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "Подати", | 122 | "password.submit.label" : "Подати", |
104 | "password.successInfo" : "Будь лаÑка, перевірте ваш email", | 123 | "password.successInfo" : "Будь лаÑка, перевірте ваш email", |
105 | "premiumFeature.button.upgradeAccount" : "Преміум акаунт", | 124 | "premiumFeature.button.upgradeAccount" : "Преміум акаунт", |
106 | "pricing.headline" : "Підтримайте Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "Я не хочу підтримувати розробку Franz.", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "Я хочу підтримати розробку Franz", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "Виберіть Ñвій план підтримки", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "Workspaces", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "Перезавантажити {name}", | 152 | "service.crashHandler.action" : "Перезавантажити {name}", |
111 | "service.crashHandler.autoReload" : "Спробую автоматично відновити {name} через {seconds} Ñ", | 153 | "service.crashHandler.autoReload" : "Спробую автоматично відновити {name} через {seconds} Ñ", |
112 | "service.crashHandler.headline" : "О, ні!", | 154 | "service.crashHandler.headline" : "О, ні!", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "О, ні!", | 160 | "service.errorHandler.headline" : "О, ні!", |
119 | "service.errorHandler.message" : "Помилка", | 161 | "service.errorHandler.message" : "Помилка", |
120 | "service.errorHandler.text" : "{name} не завантажено", | 162 | "service.errorHandler.text" : "{name} не завантажено", |
163 | "service.restrictedHandler.action" : "Upgrade Account", | ||
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
121 | "service.webviewLoader.loading" : "Loading", | 168 | "service.webviewLoader.loading" : "Loading", |
122 | "services.getStarted" : "Почати", | 169 | "services.getStarted" : "Почати", |
123 | "services.welcome" : "ЛаÑкаво проÑимо в Franz", | 170 | "services.welcome" : "ЛаÑкаво проÑимо в Ferdi", |
124 | "settings.account.account.editButton" : "Редагувати акаунт", | 171 | "settings.account.account.editButton" : "Редагувати акаунт", |
125 | "settings.account.accountType.basic" : "Базовий акаунт", | 172 | "settings.account.accountType.basic" : "Базовий акаунт", |
126 | "settings.account.accountType.premium" : "Преміум Ðкаунт Прихильника", | 173 | "settings.account.accountType.premium" : "Преміум Ðкаунт Прихильника", |
@@ -135,13 +182,19 @@ | |||
135 | "settings.account.headlinePassword" : "Змінити пароль", | 182 | "settings.account.headlinePassword" : "Змінити пароль", |
136 | "settings.account.headlineProfile" : "Оновити профіль", | 183 | "settings.account.headlineProfile" : "Оновити профіль", |
137 | "settings.account.headlineSubscription" : "Ваша підпиÑка", | 184 | "settings.account.headlineSubscription" : "Ваша підпиÑка", |
138 | "settings.account.headlineUpgrade" : "Оновити ваш акаунт і підтримати Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "Завантажити", | 187 | "settings.account.invoiceDownload" : "Завантажити", |
140 | "settings.account.manageSubscription.label" : "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð°ÑˆÐ¾ÑŽ підпиÑкою", | 188 | "settings.account.manageSubscription.label" : "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð°ÑˆÐ¾ÑŽ підпиÑкою", |
141 | "settings.account.successInfo" : "Ваші зміни були збережені", | 189 | "settings.account.successInfo" : "Ваші зміни були збережені", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "Спробуйте ще раз", | 193 | "settings.account.tryReloadServices" : "Спробуйте ще раз", |
143 | "settings.account.tryReloadUserInfoRequest" : "Спробуйте ще раз", | 194 | "settings.account.tryReloadUserInfoRequest" : "Спробуйте ще раз", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ інформацію кориÑтувача", | 196 | "settings.account.userInfoRequestFailed" : "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ інформацію кориÑтувача", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "ОчиÑтити кеш", | 198 | "settings.app.buttonClearAllCache" : "ОчиÑтити кеш", |
146 | "settings.app.buttonInstallUpdate" : "Перезавантажити Ñ– вÑтановити оновленнÑ", | 199 | "settings.app.buttonInstallUpdate" : "Перезавантажити Ñ– вÑтановити оновленнÑ", |
147 | "settings.app.buttonSearchForUpdate" : "Перевірити наÑвніÑÑ‚ÑŒ оновлень", | 200 | "settings.app.buttonSearchForUpdate" : "Перевірити наÑвніÑÑ‚ÑŒ оновлень", |
@@ -153,7 +206,9 @@ | |||
153 | "settings.app.form.darkMode" : "Переходь на Темну Сторону", | 206 | "settings.app.form.darkMode" : "Переходь на Темну Сторону", |
154 | "settings.app.form.enableGPUAcceleration" : "Ввімкнути приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ GPU", | 207 | "settings.app.form.enableGPUAcceleration" : "Ввімкнути приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ GPU", |
155 | "settings.app.form.enableSpellchecking" : "Увімкнути перевірку орфографії", | 208 | "settings.app.form.enableSpellchecking" : "Увімкнути перевірку орфографії", |
156 | "settings.app.form.enableSystemTray" : "Показувати Ferdi у ÑиÑтемному лотку", | 209 | "settings.app.form.enableSystemTray" : "Показувати Franz у ÑиÑтемному лотку", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "Мова", | 212 | "settings.app.form.language" : "Мова", |
158 | "settings.app.form.minimizeToSystemTray" : "Мінімізувати Ferdi до ÑиÑтемного лотка", | 213 | "settings.app.form.minimizeToSystemTray" : "Мінімізувати Ferdi до ÑиÑтемного лотка", |
159 | "settings.app.form.runInBackground" : "Тримати Ferdi в фоні при закритті вікна", | 214 | "settings.app.form.runInBackground" : "Тримати Ferdi в фоні при закритті вікна", |
@@ -171,7 +226,7 @@ | |||
171 | "settings.app.translationHelp" : "Допоможіть переклаÑти Ferdi на Вашу мову.", | 226 | "settings.app.translationHelp" : "Допоможіть переклаÑти Ferdi на Вашу мову.", |
172 | "settings.app.updateStatusAvailable" : "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупне, завантаженнÑ...", | 227 | "settings.app.updateStatusAvailable" : "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупне, завантаженнÑ...", |
173 | "settings.app.updateStatusSearching" : "Шукає оновленнÑ", | 228 | "settings.app.updateStatusSearching" : "Шукає оновленнÑ", |
174 | "settings.app.updateStatusUpToDate" : "Ви викориÑтовуєте оÑтанню верÑÑ–ÑŽ Franz", | 229 | "settings.app.updateStatusUpToDate" : "Ви викориÑтовуєте оÑтанню верÑÑ–ÑŽ Ferdi", |
175 | "settings.invite.headline" : "ЗапроÑити друзів", | 230 | "settings.invite.headline" : "ЗапроÑити друзів", |
176 | "settings.navigation.account" : "Ðкаунт", | 231 | "settings.navigation.account" : "Ðкаунт", |
177 | "settings.navigation.availableServices" : "ДоÑтупні ÑервіÑи", | 232 | "settings.navigation.availableServices" : "ДоÑтупні ÑервіÑи", |
@@ -182,7 +237,13 @@ | |||
182 | "settings.navigation.yourServices" : "Ваші ÑервіÑи", | 237 | "settings.navigation.yourServices" : "Ваші ÑервіÑи", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "Your workspaces", |
184 | "settings.recipes.all" : "Ð’ÑÑ– ÑервіÑи", | 239 | "settings.recipes.all" : "Ð’ÑÑ– ÑервіÑи", |
185 | "settings.recipes.dev" : "Розробка", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "ДоÑтупні ÑервіÑи", | 247 | "settings.recipes.headline" : "ДоÑтупні ÑервіÑи", |
187 | "settings.recipes.missingService" : "Ðе знайшли ÑервіÑу?", | 248 | "settings.recipes.missingService" : "Ðе знайшли ÑервіÑу?", |
188 | "settings.recipes.mostPopular" : "Ðайбільш популÑрні", | 249 | "settings.recipes.mostPopular" : "Ðайбільш популÑрні", |
@@ -217,7 +278,7 @@ | |||
217 | "settings.service.form.name" : "Ім'Ñ", | 278 | "settings.service.form.name" : "Ім'Ñ", |
218 | "settings.service.form.proxy.headline" : "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ HTTP\/HTTPS прокÑÑ– ", | 279 | "settings.service.form.proxy.headline" : "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ HTTP\/HTTPS прокÑÑ– ", |
219 | "settings.service.form.proxy.host" : "ПрокÑÑ– Host\/IP", | 280 | "settings.service.form.proxy.host" : "ПрокÑÑ– Host\/IP", |
220 | "settings.service.form.proxy.info" : "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐºÑÑ– не будуть Ñинхронізовані із Ñерверами Franz", | 281 | "settings.service.form.proxy.info" : "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐºÑÑ– не будуть Ñинхронізовані із Ñерверами Ferdi", |
221 | "settings.service.form.proxy.isEnabled" : "ВикориÑтовувати прокÑÑ–", | 282 | "settings.service.form.proxy.isEnabled" : "ВикориÑтовувати прокÑÑ–", |
222 | "settings.service.form.proxy.password" : "Пароль (опційно)", | 283 | "settings.service.form.proxy.password" : "Пароль (опційно)", |
223 | "settings.service.form.proxy.port" : "Порт", | 284 | "settings.service.form.proxy.port" : "Порт", |
@@ -269,12 +330,13 @@ | |||
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "Додати новий ÑервіÑ", | 332 | "sidebar.addNewService" : "Додати новий ÑервіÑ", |
333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", | ||
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 334 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", |
273 | "sidebar.muteApp" : "Вимкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° звуки", | 335 | "sidebar.muteApp" : "Вимкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° звуки", |
336 | "sidebar.openTodosDrawer" : "Open Franz Todos", | ||
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 337 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", |
275 | "sidebar.settings" : "ÐалаштуваннÑ", | 338 | "sidebar.settings" : "ÐалаштуваннÑ", |
276 | "sidebar.unmuteApp" : "Увімкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° звуки", | 339 | "sidebar.unmuteApp" : "Увімкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° звуки", |
277 | "signup.company.label" : "КомпаніÑ", | ||
278 | "signup.email.label" : "Email адреÑа", | 340 | "signup.email.label" : "Email адреÑа", |
279 | "signup.emailDuplicate" : "КориÑтувач із цією email адреÑою вже Ñ–Ñнує", | 341 | "signup.emailDuplicate" : "КориÑтувач із цією email адреÑою вже Ñ–Ñнує", |
280 | "signup.firstname.label" : "Ім`Ñ", | 342 | "signup.firstname.label" : "Ім`Ñ", |
@@ -286,20 +348,12 @@ | |||
286 | "signup.link.login" : "У Ð²Ð°Ñ Ð²Ð¶Ðµ Ñ” обліковий запиÑ, увійти?", | 348 | "signup.link.login" : "У Ð²Ð°Ñ Ð²Ð¶Ðµ Ñ” обліковий запиÑ, увійти?", |
287 | "signup.password.label" : "Пароль", | 349 | "signup.password.label" : "Пароль", |
288 | "signup.submit.label" : "Створити акаунт", | 350 | "signup.submit.label" : "Створити акаунт", |
289 | "subscription.euTaxInfo" : "Ð”Ð»Ñ Ð¶Ð¸Ñ‚ÐµÐ»Ñ–Ð² ЄС: можуть заÑтоÑовуватиÑÑ Ð¿Ð¾Ð´Ð°Ñ‚ÐºÐ¸", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "Жодної реклами!", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "очікуйте незабаром", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "ÐÑ–Ñких затримок та набридливих пропозицій з платних підпиÑок", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "СервіÑи, що виконуютьÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾\/вимагають хоÑтингу, приміром Mattermost", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "Підтримка прокÑÑ– ", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "Підтримка перевірки правопиÑу", | ||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | ||
297 | "subscription.includedFeatures" : "Платний Преміальний Ðкаунт Прихильника Ferdi включає", | ||
298 | "subscription.paymentSessionError" : "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ форму платежу", | ||
299 | "subscription.submit.label" : "Я хочу підтримати розробку Franz", | ||
300 | "subscription.type.free" : "безплатно", | ||
301 | "subscription.type.month" : "міÑÑць", | ||
302 | "subscription.type.year" : "рік", | ||
303 | "subscriptionPopup.buttonCancel" : "Відмінити", | 357 | "subscriptionPopup.buttonCancel" : "Відмінити", |
304 | "subscriptionPopup.buttonDone" : "Готово", | 358 | "subscriptionPopup.buttonDone" : "Готово", |
305 | "tabs.item.deleteService" : "Видалити ÑервіÑ", | 359 | "tabs.item.deleteService" : "Видалити ÑервіÑ", |
diff --git a/src/i18n/locales/zh-Hant.json b/src/i18n/locales/zh-Hant.json index 852fbf67c..b5376b221 100644 --- a/src/i18n/locales/zh-Hant.json +++ b/src/i18n/locales/zh-Hant.json | |||
@@ -32,7 +32,7 @@ | |||
32 | "signup.legal.info": "在建立帳戶åŒæ™‚,您åŒæ„:", | 32 | "signup.legal.info": "在建立帳戶åŒæ™‚,您åŒæ„:", |
33 | "signup.legal.terms": "æœå‹™æ¢æ¬¾", | 33 | "signup.legal.terms": "æœå‹™æ¢æ¬¾", |
34 | "signup.legal.privacy": "éš±ç§è²æ˜Ž", | 34 | "signup.legal.privacy": "éš±ç§è²æ˜Ž", |
35 | "pricing.headline": "贊助 Franz", | 35 | "pricing.headline": "贊助 Ferdi", |
36 | "pricing.support.label": "é¸æ“‡è´ŠåŠ©æ–¹æ¡ˆ", | 36 | "pricing.support.label": "é¸æ“‡è´ŠåŠ©æ–¹æ¡ˆ", |
37 | "pricing.submit.label": "我想å”助 Ferdi 的開發", | 37 | "pricing.submit.label": "我想å”助 Ferdi 的開發", |
38 | "pricing.link.skipPayment": "我ä¸æƒ³å”助 Ferdi 的開發", | 38 | "pricing.link.skipPayment": "我ä¸æƒ³å”助 Ferdi 的開發", |
@@ -60,11 +60,11 @@ | |||
60 | "infobar.buttonInstallUpdate": "é‡æ–°å•Ÿå‹•ä¸¦ä¸”æ›´æ–°", | 60 | "infobar.buttonInstallUpdate": "é‡æ–°å•Ÿå‹•ä¸¦ä¸”æ›´æ–°", |
61 | "infobar.requiredRequestsFailed": "無法載入æœå‹™èˆ‡å¸³æˆ¶è³‡è¨Š", | 61 | "infobar.requiredRequestsFailed": "無法載入æœå‹™èˆ‡å¸³æˆ¶è³‡è¨Š", |
62 | "sidebar.settings": "è¨å®š", | 62 | "sidebar.settings": "è¨å®š", |
63 | "services.welcome": "æ¡è¿Žä½¿ç”¨ Franz", | 63 | "services.welcome": "æ¡è¿Žä½¿ç”¨ Ferdi", |
64 | "services.getStarted": "開始使用", | 64 | "services.getStarted": "開始使用", |
65 | "settings.account.headline": "帳戶", | 65 | "settings.account.headline": "帳戶", |
66 | "settings.account.headlineSubscription": "您的訂閱", | 66 | "settings.account.headlineSubscription": "您的訂閱", |
67 | "settings.account.headlineUpgrade": "å‡ç´šå¸³æˆ¶ä»¥åŠè´ŠåŠ© Franz", | 67 | "settings.account.headlineUpgrade": "å‡ç´šå¸³æˆ¶ä»¥åŠè´ŠåŠ© Ferdi", |
68 | "settings.account.headlineInvoices": "Invoices", | 68 | "settings.account.headlineInvoices": "Invoices", |
69 | "settings.account.manageSubscription.label": "管ç†è¨‚é–±", | 69 | "settings.account.manageSubscription.label": "管ç†è¨‚é–±", |
70 | "settings.account.accountType.basic": "基本帳戶", | 70 | "settings.account.accountType.basic": "基本帳戶", |
@@ -150,7 +150,7 @@ | |||
150 | "subscription.type.free": "å…è²»", | 150 | "subscription.type.free": "å…è²»", |
151 | "subscription.type.month": "月", | 151 | "subscription.type.month": "月", |
152 | "subscription.type.year": "å¹´", | 152 | "subscription.type.year": "å¹´", |
153 | "subscription.type.mining": "用您機器的計算能力來贊助 Franz", | 153 | "subscription.type.mining": "用您機器的計算能力來贊助 Ferdi", |
154 | "subscription.mining.headline": "如何進行的?", | 154 | "subscription.mining.headline": "如何進行的?", |
155 | "subscription.mining.experimental": "實驗性功能", | 155 | "subscription.mining.experimental": "實驗性功能", |
156 | "subscription.mining.line1": "Ferdi é‹ç”¨æ‚¨CPUçš„20%至50%çš„é‹ç®—能力來挖門羅幣(一種開æºåŠ 密貨幣),æ¯å¹´ç´„莫å¯å¾—到5美元。", | 156 | "subscription.mining.line1": "Ferdi é‹ç”¨æ‚¨CPUçš„20%至50%çš„é‹ç®—能力來挖門羅幣(一種開æºåŠ 密貨幣),æ¯å¹´ç´„莫å¯å¾—到5美元。", |
diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json index dd004c821..7acc63037 100644 --- a/src/i18n/locales/zh-TW.json +++ b/src/i18n/locales/zh-TW.json | |||
@@ -1,25 +1,35 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "é‡æ–°è¼‰å…¥", | 2 | "app.errorHandler.action" : "é‡æ–°æ•´ç†", |
3 | "app.errorHandler.headline" : "有些æ±è¥¿å‡ºéŒ¯äº†", | 3 | "app.errorHandler.headline" : "糟糕ï¼æœ‰äº›åœ°æ–¹å‡ºå•é¡Œäº†ã€‚", |
4 | "feature.announcements.changelog.headline" : "Changes in Ferdi {version}", | 4 | "feature.announcements.changelog.headline" : "é€éŽ email 傳é€", |
5 | "feature.delayApp.action" : "å–å¾— Ferdi 支æ´æŽˆæ¬Š", | 5 | "feature.delayApp.headline" : "請購買 Franz 支æ´æŽˆæ¬Šä»¥è·³éŽç‰å€™", |
6 | "feature.delayApp.headline" : "請購買 Ferdi 支æ´æŽˆæ¬Šä»¥è·³éŽç‰å€™", | 6 | "feature.delayApp.text" : "Franz 會在 {seconds} 秒後繼續。", |
7 | "feature.delayApp.text" : "Ferdi 會在 {seconds} 秒後繼續。", | 7 | "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", |
8 | "feature.shareFranz.action.email" : "Send as email", | 8 | "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", |
9 | "feature.shareFranz.action.facebook" : "Share on Facebook", | 9 | "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", |
10 | "feature.shareFranz.action.twitter" : "Share on Twitter", | 10 | "feature.delayApp.upgrade.action" : "å–å¾— Franz 支æ´æŽˆæ¬Š", |
11 | "feature.shareFranz.headline" : "Ferdi is better together!", | 11 | "feature.delayApp.upgrade.actionShort" : "å‡ç´šå¸³è™Ÿ", |
12 | "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", | ||
13 | "feature.shareFranz.action.email" : "以電å郵件傳é€", | ||
14 | "feature.shareFranz.action.facebook" : "é€éŽ Facebook 分享", | ||
15 | "feature.shareFranz.action.twitter" : "在 Twitter 上分享", | ||
16 | "feature.shareFranz.headline" : "Franz is better together!", | ||
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 19 | "feature.shareFranz.text" : "告訴所有朋å‹å’ŒåŒäº‹Franz有多棒ï¼", |
15 | "global.api.unhealthy" : "無法連線至 Ferdi 的伺æœå™¨", | 20 | "feature.todos.premium.info" : "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", | ||
22 | "feature.todos.premium.upgrade" : "Upgrade Account", | ||
23 | "global.api.unhealthy" : "無法連線至 Franz 的伺æœå™¨", | ||
24 | "global.franzProRequired" : "Franz Professional Required", | ||
16 | "global.notConnectedToTheInternet" : "ä½ æ²’æœ‰é€£ä¸Šç¶²è·¯ã€‚", | 25 | "global.notConnectedToTheInternet" : "ä½ æ²’æœ‰é€£ä¸Šç¶²è·¯ã€‚", |
17 | "global.spellchecker.useDefault" : "使用系統é è¨ ({default})", | 26 | "global.spellchecker.useDefault" : "使用系統é è¨ ({default})", |
18 | "global.spellchecking.autodetect" : "Detect language automatically", | 27 | "global.spellchecking.autodetect" : "自動åµæ¸¬èªžè¨€", |
19 | "global.spellchecking.autodetect.short" : "Automatic", | 28 | "global.spellchecking.autodetect.short" : "自動的", |
20 | "global.spellchecking.language" : "拼å—檢查語言", | 29 | "global.spellchecking.language" : "拼å—檢查語言", |
21 | "import.headline" : "匯入 Ferdi 4 çš„æœå‹™", | 30 | "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", |
22 | "import.notSupportedHeadline" : "Ferdi 5 尚未支æ´æ¤æœå‹™", | 31 | "import.headline" : "匯入 Franz 4 çš„æœå‹™", |
32 | "import.notSupportedHeadline" : "Franz 5 尚未支æ´æ¤æœå‹™", | ||
23 | "import.skip.label" : "æ‰‹å‹•æ·»åŠ æœå‹™", | 33 | "import.skip.label" : "æ‰‹å‹•æ·»åŠ æœå‹™", |
24 | "import.submit.label" : "匯入æœå‹™", | 34 | "import.submit.label" : "匯入æœå‹™", |
25 | "infobar.buttonChangelog" : "有什麼新功能呢?", | 35 | "infobar.buttonChangelog" : "有什麼新功能呢?", |
@@ -27,7 +37,8 @@ | |||
27 | "infobar.buttonReloadServices" : "é‡æ–°è¼‰å…¥æœå‹™", | 37 | "infobar.buttonReloadServices" : "é‡æ–°è¼‰å…¥æœå‹™", |
28 | "infobar.requiredRequestsFailed" : "無法載入æœå‹™å’Œä½¿ç”¨è€…資訊", | 38 | "infobar.requiredRequestsFailed" : "無法載入æœå‹™å’Œä½¿ç”¨è€…資訊", |
29 | "infobar.servicesUpdated" : "å·²ç¶“æ›´æ–°ä½ çš„æœå‹™", | 39 | "infobar.servicesUpdated" : "å·²ç¶“æ›´æ–°ä½ çš„æœå‹™", |
30 | "infobar.updateAvailable" : "Ferdi 有å¯ç”¨çš„æ›´æ–°", | 40 | "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", |
41 | "infobar.updateAvailable" : "Franz 有å¯ç”¨çš„æ›´æ–°", | ||
31 | "invite.email.label" : "é›»å郵件地å€", | 42 | "invite.email.label" : "é›»å郵件地å€", |
32 | "invite.headline.friends" : "邀請 3 ä½æœ‹å‹æˆ–åŒäº‹", | 43 | "invite.headline.friends" : "邀請 3 ä½æœ‹å‹æˆ–åŒäº‹", |
33 | "invite.name.label" : "å稱", | 44 | "invite.name.label" : "å稱", |
@@ -43,8 +54,10 @@ | |||
43 | "login.serverLogout" : "您的登入期間已éŽæœŸï¼Œè«‹é‡æ–°ç™»éŒ„", | 54 | "login.serverLogout" : "您的登入期間已éŽæœŸï¼Œè«‹é‡æ–°ç™»éŒ„", |
44 | "login.submit.label" : "登入", | 55 | "login.submit.label" : "登入", |
45 | "login.tokenExpired" : "您的登入已éŽæœŸï¼Œè«‹é‡æ–°ç™»å…¥ã€‚", | 56 | "login.tokenExpired" : "您的登入已éŽæœŸï¼Œè«‹é‡æ–°ç™»å…¥ã€‚", |
46 | "menu.app.about" : "關於 Franz", | 57 | "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", |
47 | "menu.app.announcement" : "What's new?", | 58 | "menu.Todoss.openTodosDrawer" : "Open Todos drawer", |
59 | "menu.app.about" : "關於 Ferdi", | ||
60 | "menu.app.announcement" : "更新說明", | ||
48 | "menu.app.checkForUpdates" : "檢查更新", | 61 | "menu.app.checkForUpdates" : "檢查更新", |
49 | "menu.app.hide" : "éš±è—", | 62 | "menu.app.hide" : "éš±è—", |
50 | "menu.app.hideOthers" : "éš±è—其他", | 63 | "menu.app.hideOthers" : "éš±è—其他", |
@@ -68,33 +81,39 @@ | |||
68 | "menu.file" : "檔案", | 81 | "menu.file" : "檔案", |
69 | "menu.help" : "求助", | 82 | "menu.help" : "求助", |
70 | "menu.help.changelog" : "變更紀錄", | 83 | "menu.help.changelog" : "變更紀錄", |
84 | "menu.help.debugInfo" : "Copy Debug Information", | ||
85 | "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", | ||
86 | "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", | ||
71 | "menu.help.learnMore" : "深入çžè§£", | 87 | "menu.help.learnMore" : "深入çžè§£", |
72 | "menu.help.privacy" : "éš±ç§è²æ˜Ž", | 88 | "menu.help.privacy" : "éš±ç§è²æ˜Ž", |
73 | "menu.help.support" : "支æ´", | 89 | "menu.help.support" : "支æ´", |
74 | "menu.help.tos" : "æœå‹™æ¢æ¬¾", | 90 | "menu.help.tos" : "æœå‹™æ¢æ¬¾", |
75 | "menu.services" : "æœå‹™", | 91 | "menu.services" : "æœå‹™", |
76 | "menu.services.activatePreviousService" : "Activate previous service", | 92 | "menu.services.activatePreviousService" : "å•Ÿå‹•å‰ä¸€å€‹æœå‹™", |
77 | "menu.services.addNewService" : "新增æœå‹™", | 93 | "menu.services.addNewService" : "新增æœå‹™", |
78 | "menu.services.setNextServiceActive" : "Activate next service", | 94 | "menu.services.setNextServiceActive" : "啟動下一個æœå‹™", |
95 | "menu.todos" : "Todos", | ||
96 | "menu.todos.enableTodos" : "Enable Todos", | ||
79 | "menu.view" : "檢視", | 97 | "menu.view" : "檢視", |
80 | "menu.view.enterFullScreen" : "進入全螢幕模å¼", | 98 | "menu.view.enterFullScreen" : "進入全螢幕模å¼", |
81 | "menu.view.exitFullScreen" : "離開全螢幕模å¼", | 99 | "menu.view.exitFullScreen" : "離開全螢幕模å¼", |
82 | "menu.view.reloadFranz" : "é‡æ–°è¼‰å…¥ Franz", | 100 | "menu.view.reloadFranz" : "é‡æ–°è¼‰å…¥ Ferdi", |
83 | "menu.view.reloadService" : "é‡æ–°è¼‰å…¥æœå‹™", | 101 | "menu.view.reloadService" : "é‡æ–°è¼‰å…¥æœå‹™", |
84 | "menu.view.resetZoom" : "實際大å°", | 102 | "menu.view.resetZoom" : "實際大å°", |
85 | "menu.view.toggleDevTools" : "切æ›é–‹ç™¼è€…工具", | 103 | "menu.view.toggleDevTools" : "切æ›é–‹ç™¼è€…工具", |
86 | "menu.view.toggleFullScreen" : "切æ›å…¨èž¢å¹•", | 104 | "menu.view.toggleFullScreen" : "切æ›å…¨èž¢å¹•", |
87 | "menu.view.toggleServiceDevTools" : "切æ›æœå‹™é–‹ç™¼è€…工具", | 105 | "menu.view.toggleServiceDevTools" : "切æ›æœå‹™é–‹ç™¼è€…工具", |
106 | "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", | ||
88 | "menu.view.zoomIn" : "放大", | 107 | "menu.view.zoomIn" : "放大", |
89 | "menu.view.zoomOut" : "縮å°", | 108 | "menu.view.zoomOut" : "縮å°", |
90 | "menu.window" : "視窗", | 109 | "menu.window" : "視窗", |
91 | "menu.window.close" : "關閉", | 110 | "menu.window.close" : "關閉", |
92 | "menu.window.minimize" : "最å°åŒ–", | 111 | "menu.window.minimize" : "最å°åŒ–", |
93 | "menu.workspaces" : "Workspaces", | 112 | "menu.workspaces" : "工作å€", |
94 | "menu.workspaces.addNewWorkspace" : "Add New Workspace...", | 113 | "menu.workspaces.addNewWorkspace" : "新增工作å€", |
95 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", | 114 | "menu.workspaces.closeWorkspaceDrawer" : "關閉工作空間", |
96 | "menu.workspaces.defaultWorkspace" : "所有æœå‹™", | 115 | "menu.workspaces.defaultWorkspace" : "所有æœå‹™", |
97 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", | 116 | "menu.workspaces.openWorkspaceDrawer" : "打開工作空間", |
98 | "password.email.label" : "é›»å郵件地å€", | 117 | "password.email.label" : "é›»å郵件地å€", |
99 | "password.headline" : "é‡è¨å¯†ç¢¼", | 118 | "password.headline" : "é‡è¨å¯†ç¢¼", |
100 | "password.link.login" : "登入您的帳號", | 119 | "password.link.login" : "登入您的帳號", |
@@ -103,10 +122,33 @@ | |||
103 | "password.submit.label" : "é€å‡º", | 122 | "password.submit.label" : "é€å‡º", |
104 | "password.successInfo" : "請檢查您的電å郵件", | 123 | "password.successInfo" : "請檢查您的電å郵件", |
105 | "premiumFeature.button.upgradeAccount" : "å‡ç´šå¸³è™Ÿ", | 124 | "premiumFeature.button.upgradeAccount" : "å‡ç´šå¸³è™Ÿ", |
106 | "pricing.headline" : "æ”¯æŒ Franz", | 125 | "pricing.features.adFree" : "Forever ad-free", |
107 | "pricing.link.skipPayment" : "我ä¸æƒ³æ”¯æŒ Ferdi 的開發。", | 126 | "pricing.features.appDelays" : "No Waiting Screens", |
108 | "pricing.submit.label" : "æˆ‘æƒ³æ”¯æŒ Ferdi 的開發。", | 127 | "pricing.features.customWebsites" : "Add Custom Websites", |
109 | "pricing.support.label" : "é¸æ“‡æ‚¨æ”¯æŒçš„計畫", | 128 | "pricing.features.onPremise" : "On-premise & other Hosted Services", |
129 | "pricing.features.serviceProxies" : "Service Proxies", | ||
130 | "pricing.features.spellchecker" : "Spellchecker support", | ||
131 | "pricing.features.teamManagement" : "Team Management", | ||
132 | "pricing.features.thirdPartyServices" : "Install 3rd party services", | ||
133 | "pricing.features.unlimitedServices" : "Add unlimited services", | ||
134 | "pricing.features.workspaces" : "工作å€", | ||
135 | "pricing.plan.free" : "Franz Free", | ||
136 | "pricing.plan.legacy" : "Franz Premium", | ||
137 | "pricing.plan.personal" : "Franz Personal", | ||
138 | "pricing.plan.personal-monthly" : "Franz Personal Monthly", | ||
139 | "pricing.plan.personal-yearly" : "Franz Personal Yearly", | ||
140 | "pricing.plan.pro" : "Franz Professional", | ||
141 | "pricing.plan.pro-monthly" : "Franz Professional Monthly", | ||
142 | "pricing.plan.pro-yearly" : "Franz Professional Yearly", | ||
143 | "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", | ||
144 | "pricing.trial.cta.skip" : "Continue to Ferdi", | ||
145 | "pricing.trial.error" : "Sorry, we could not activate your trial!", | ||
146 | "pricing.trial.features.headline" : "Franz Professional includes:", | ||
147 | "pricing.trial.headline" : "Franz Professional", | ||
148 | "pricing.trial.subheadline" : "Your personal welcome offer:", | ||
149 | "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", | ||
150 | "pricing.trial.terms.headline" : "No strings attached", | ||
151 | "pricing.trial.terms.noCreditCard" : "No credit card required", | ||
110 | "service.crashHandler.action" : "é‡æ–°è¼‰å…¥{name}", | 152 | "service.crashHandler.action" : "é‡æ–°è¼‰å…¥{name}", |
111 | "service.crashHandler.autoReload" : "嘗試在{seconds}秒內自動æ¢å¾©{name}", | 153 | "service.crashHandler.autoReload" : "嘗試在{seconds}秒內自動æ¢å¾©{name}", |
112 | "service.crashHandler.headline" : "噢ä¸!", | 154 | "service.crashHandler.headline" : "噢ä¸!", |
@@ -118,9 +160,14 @@ | |||
118 | "service.errorHandler.headline" : "噢ä¸ï¼", | 160 | "service.errorHandler.headline" : "噢ä¸ï¼", |
119 | "service.errorHandler.message" : "錯誤", | 161 | "service.errorHandler.message" : "錯誤", |
120 | "service.errorHandler.text" : "{name} 載入失敗。", | 162 | "service.errorHandler.text" : "{name} 載入失敗。", |
121 | "service.webviewLoader.loading" : "Loading", | 163 | "service.restrictedHandler.action" : "Upgrade Account", |
164 | "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", | ||
165 | "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
166 | "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", | ||
167 | "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", | ||
168 | "service.webviewLoader.loading" : "æ£åœ¨è¼‰å…¥", | ||
122 | "services.getStarted" : "開始", | 169 | "services.getStarted" : "開始", |
123 | "services.welcome" : "æ¡è¿Žä½¿ç”¨ Franz", | 170 | "services.welcome" : "æ¡è¿Žä½¿ç”¨ Ferdi", |
124 | "settings.account.account.editButton" : "編輯帳號", | 171 | "settings.account.account.editButton" : "編輯帳號", |
125 | "settings.account.accountType.basic" : "基礎帳號", | 172 | "settings.account.accountType.basic" : "基礎帳號", |
126 | "settings.account.accountType.premium" : "高級支æ´å¸³æˆ¶", | 173 | "settings.account.accountType.premium" : "高級支æ´å¸³æˆ¶", |
@@ -135,25 +182,33 @@ | |||
135 | "settings.account.headlinePassword" : "變更密碼", | 182 | "settings.account.headlinePassword" : "變更密碼", |
136 | "settings.account.headlineProfile" : "更新簡介", | 183 | "settings.account.headlineProfile" : "更新簡介", |
137 | "settings.account.headlineSubscription" : "您的訂閱", | 184 | "settings.account.headlineSubscription" : "您的訂閱", |
138 | "settings.account.headlineUpgrade" : "å‡ç´šæ‚¨çš„å¸³æˆ¶ä¸¦æ”¯æŒ Franz", | 185 | "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", |
186 | "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", | ||
139 | "settings.account.invoiceDownload" : "下載", | 187 | "settings.account.invoiceDownload" : "下載", |
140 | "settings.account.manageSubscription.label" : "管ç†æ‚¨çš„訂閱", | 188 | "settings.account.manageSubscription.label" : "管ç†æ‚¨çš„訂閱", |
141 | "settings.account.successInfo" : "您的更變已經被儲å˜", | 189 | "settings.account.successInfo" : "您的更變已經被儲å˜", |
190 | "settings.account.trial" : "Free Trial", | ||
191 | "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", | ||
192 | "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", | ||
142 | "settings.account.tryReloadServices" : "å†è©¦ä¸€æ¬¡", | 193 | "settings.account.tryReloadServices" : "å†è©¦ä¸€æ¬¡", |
143 | "settings.account.tryReloadUserInfoRequest" : "å†è©¦ä¸€æ¬¡", | 194 | "settings.account.tryReloadUserInfoRequest" : "å†è©¦ä¸€æ¬¡", |
195 | "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", | ||
144 | "settings.account.userInfoRequestFailed" : "無法載入使用者資訊。", | 196 | "settings.account.userInfoRequestFailed" : "無法載入使用者資訊。", |
197 | "settings.account.yourLicense" : "Your Franz License", | ||
145 | "settings.app.buttonClearAllCache" : "清除快å–", | 198 | "settings.app.buttonClearAllCache" : "清除快å–", |
146 | "settings.app.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°", | 199 | "settings.app.buttonInstallUpdate" : "é‡æ–°å•Ÿå‹•ä¸¦å®‰è£æ›´æ–°", |
147 | "settings.app.buttonSearchForUpdate" : "檢查更新", | 200 | "settings.app.buttonSearchForUpdate" : "檢查更新", |
148 | "settings.app.cacheInfo" : "Ferdi å¿«å–ç›®å‰å 用 {size} çš„ç£ç¢Ÿç©ºé–“。", | 201 | "settings.app.cacheInfo" : "Ferdi å¿«å–ç›®å‰å 用 {size} çš„ç£ç¢Ÿç©ºé–“。", |
149 | "settings.app.currentVersion" : "ç›®å‰çš„版本", | 202 | "settings.app.currentVersion" : "ç›®å‰çš„版本", |
150 | "settings.app.form.autoLaunchInBackground" : "在背景開啟", | 203 | "settings.app.form.autoLaunchInBackground" : "在背景開啟", |
151 | "settings.app.form.autoLaunchOnStart" : "開機時啟動 Franz", | 204 | "settings.app.form.autoLaunchOnStart" : "開機時啟動 Ferdi", |
152 | "settings.app.form.beta" : "包å«æ¸¬è©¦ç‰ˆ", | 205 | "settings.app.form.beta" : "包å«æ¸¬è©¦ç‰ˆ", |
153 | "settings.app.form.darkMode" : "åŠ å…¥é»‘æš—é¢", | 206 | "settings.app.form.darkMode" : "åŠ å…¥é»‘æš—é¢", |
154 | "settings.app.form.enableGPUAcceleration" : "啟用 GPU åŠ é€Ÿ", | 207 | "settings.app.form.enableGPUAcceleration" : "啟用 GPU åŠ é€Ÿ", |
155 | "settings.app.form.enableSpellchecking" : "啟用拼å—檢查", | 208 | "settings.app.form.enableSpellchecking" : "啟用拼å—檢查", |
156 | "settings.app.form.enableSystemTray" : "在系統列顯示 Franz", | 209 | "settings.app.form.enableSystemTray" : "在系統列顯示 Ferdi", |
210 | "settings.app.form.enableTodos" : "Enable Franz Todos", | ||
211 | "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", | ||
157 | "settings.app.form.language" : "語言", | 212 | "settings.app.form.language" : "語言", |
158 | "settings.app.form.minimizeToSystemTray" : "最å°åŒ– Ferdi 到系統列", | 213 | "settings.app.form.minimizeToSystemTray" : "最å°åŒ– Ferdi 到系統列", |
159 | "settings.app.form.runInBackground" : "當關閉視窗時,ä¿æŒ Ferdi 在背景é‹ä½œ", | 214 | "settings.app.form.runInBackground" : "當關閉視窗時,ä¿æŒ Ferdi 在背景é‹ä½œ", |
@@ -165,24 +220,30 @@ | |||
165 | "settings.app.headlineGeneral" : "一般", | 220 | "settings.app.headlineGeneral" : "一般", |
166 | "settings.app.headlineLanguage" : "語言", | 221 | "settings.app.headlineLanguage" : "語言", |
167 | "settings.app.headlineUpdates" : "æ›´æ–°", | 222 | "settings.app.headlineUpdates" : "æ›´æ–°", |
168 | "settings.app.languageDisclaimer" : "Official translations are English & German. All other languages are community based translations.", | 223 | "settings.app.languageDisclaimer" : "官方僅æ供英語與德語,其他語言由社群æ供翻è¯ã€‚", |
169 | "settings.app.restartRequired" : "需è¦é‡å•Ÿä»¥æ›´è®Š", | 224 | "settings.app.restartRequired" : "需è¦é‡å•Ÿä»¥æ›´è®Š", |
170 | "settings.app.subheadlineCache" : "å¿«å–", | 225 | "settings.app.subheadlineCache" : "å¿«å–", |
171 | "settings.app.translationHelp" : "幫助我們將 Ferdi ç¿»è¯æˆæ‚¨çš„語言。", | 226 | "settings.app.translationHelp" : "幫助我們將 Ferdi ç¿»è¯æˆæ‚¨çš„語言。", |
172 | "settings.app.updateStatusAvailable" : "有å¯ç”¨æ›´æ–°ï¼Œä¸‹è¼‰ä¸...", | 227 | "settings.app.updateStatusAvailable" : "有å¯ç”¨æ›´æ–°ï¼Œä¸‹è¼‰ä¸...", |
173 | "settings.app.updateStatusSearching" : "æ£åœ¨æœå°‹æ›´æ–°", | 228 | "settings.app.updateStatusSearching" : "æ£åœ¨æœå°‹æ›´æ–°", |
174 | "settings.app.updateStatusUpToDate" : "您æ£åœ¨ä½¿ç”¨æœ€æ–°ç‰ˆæœ¬çš„ Franz", | 229 | "settings.app.updateStatusUpToDate" : "您æ£åœ¨ä½¿ç”¨æœ€æ–°ç‰ˆæœ¬çš„ Ferdi", |
175 | "settings.invite.headline" : "邀請朋å‹", | 230 | "settings.invite.headline" : "邀請朋å‹", |
176 | "settings.navigation.account" : "帳號", | 231 | "settings.navigation.account" : "帳號", |
177 | "settings.navigation.availableServices" : "å¯ä½¿ç”¨çš„æœå‹™", | 232 | "settings.navigation.availableServices" : "å¯ä½¿ç”¨çš„æœå‹™", |
178 | "settings.navigation.inviteFriends" : "邀請朋å‹", | 233 | "settings.navigation.inviteFriends" : "邀請朋å‹", |
179 | "settings.navigation.logout" : "登出", | 234 | "settings.navigation.logout" : "登出", |
180 | "settings.navigation.settings" : "è¨å®š", | 235 | "settings.navigation.settings" : "è¨å®š", |
181 | "settings.navigation.team" : "Manage Team", | 236 | "settings.navigation.team" : "管ç†åœ˜éšŠ", |
182 | "settings.navigation.yourServices" : "您的æœå‹™", | 237 | "settings.navigation.yourServices" : "您的æœå‹™", |
183 | "settings.navigation.yourWorkspaces" : "Your workspaces", | 238 | "settings.navigation.yourWorkspaces" : "所有工作å€", |
184 | "settings.recipes.all" : "所有æœå‹™", | 239 | "settings.recipes.all" : "所有æœå‹™", |
185 | "settings.recipes.dev" : "開發", | 240 | "settings.recipes.custom" : "Custom Services", |
241 | "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", | ||
242 | "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", | ||
243 | "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", | ||
244 | "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", | ||
245 | "settings.recipes.customService.openDevDocs" : "Developer Documentation", | ||
246 | "settings.recipes.customService.openFolder" : "Open folder", | ||
186 | "settings.recipes.headline" : "å¯ä½¿ç”¨çš„æœå‹™", | 247 | "settings.recipes.headline" : "å¯ä½¿ç”¨çš„æœå‹™", |
187 | "settings.recipes.missingService" : "缺少æœå‹™?", | 248 | "settings.recipes.missingService" : "缺少æœå‹™?", |
188 | "settings.recipes.mostPopular" : "最熱門", | 249 | "settings.recipes.mostPopular" : "最熱門", |
@@ -221,7 +282,7 @@ | |||
221 | "settings.service.form.proxy.isEnabled" : "使用 Proxy", | 282 | "settings.service.form.proxy.isEnabled" : "使用 Proxy", |
222 | "settings.service.form.proxy.password" : "密碼 (é¸å¡«)", | 283 | "settings.service.form.proxy.password" : "密碼 (é¸å¡«)", |
223 | "settings.service.form.proxy.port" : "通訊阜", | 284 | "settings.service.form.proxy.port" : "通訊阜", |
224 | "settings.service.form.proxy.restartInfo" : "在變更 Proxy è¨å®šå¾Œï¼Œè«‹é‡æ–°å•Ÿå‹• Franz", | 285 | "settings.service.form.proxy.restartInfo" : "在變更 Proxy è¨å®šå¾Œï¼Œè«‹é‡æ–°å•Ÿå‹• Ferdi", |
225 | "settings.service.form.proxy.user" : "使用者 (é¸å¡«)", | 286 | "settings.service.form.proxy.user" : "使用者 (é¸å¡«)", |
226 | "settings.service.form.saveButton" : "ä¿å˜æœå‹™", | 287 | "settings.service.form.saveButton" : "ä¿å˜æœå‹™", |
227 | "settings.service.form.tabHosted" : "託管", | 288 | "settings.service.form.tabHosted" : "託管", |
@@ -233,17 +294,17 @@ | |||
233 | "settings.services.discoverServices" : "發ç¾æœå‹™", | 294 | "settings.services.discoverServices" : "發ç¾æœå‹™", |
234 | "settings.services.headline" : "您的æœå‹™", | 295 | "settings.services.headline" : "您的æœå‹™", |
235 | "settings.services.noServicesAdded" : "ä½ å°šæœªæ–°å¢žä»»ä½•æœå‹™", | 296 | "settings.services.noServicesAdded" : "ä½ å°šæœªæ–°å¢žä»»ä½•æœå‹™", |
236 | "settings.services.servicesRequestFailed" : "Could not load your services", | 297 | "settings.services.servicesRequestFailed" : "無法載入æ¤æœå‹™", |
237 | "settings.services.tooltip.isDisabled" : "æœå‹™å·²åœç”¨", | 298 | "settings.services.tooltip.isDisabled" : "æœå‹™å·²åœç”¨", |
238 | "settings.services.tooltip.isMuted" : "所有的è²éŸ³éƒ½æ˜¯éœéŸ³", | 299 | "settings.services.tooltip.isMuted" : "所有的è²éŸ³éƒ½æ˜¯éœéŸ³", |
239 | "settings.services.tooltip.notificationsDisabled" : "通知已åœç”¨", | 300 | "settings.services.tooltip.notificationsDisabled" : "通知已åœç”¨", |
240 | "settings.services.updatedInfo" : "已儲å˜ä½ 的變更", | 301 | "settings.services.updatedInfo" : "已儲å˜ä½ 的變更", |
241 | "settings.team.contentHeadline" : "Ferdi for Teams", | 302 | "settings.team.contentHeadline" : "Franz 團隊", |
242 | "settings.team.copy" : "Ferdi for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 303 | "settings.team.copy" : "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", |
243 | "settings.team.headline" : "團隊", | 304 | "settings.team.headline" : "團隊", |
244 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 305 | "settings.team.intro" : "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", |
245 | "settings.team.manageAction" : "Manage your Team on meetfranz.com", | 306 | "settings.team.manageAction" : "Manage your Team on meetfranz.com", |
246 | "settings.team.upgradeAction" : "Upgrade your Account", | 307 | "settings.team.upgradeAction" : "å‡ç´šä½ 的帳戶", |
247 | "settings.user.form.accountType.company" : "å…¬å¸", | 308 | "settings.user.form.accountType.company" : "å…¬å¸", |
248 | "settings.user.form.accountType.individual" : "個人", | 309 | "settings.user.form.accountType.individual" : "個人", |
249 | "settings.user.form.accountType.label" : "帳戶類型", | 310 | "settings.user.form.accountType.label" : "帳戶類型", |
@@ -254,27 +315,28 @@ | |||
254 | "settings.user.form.lastname" : "姓", | 315 | "settings.user.form.lastname" : "姓", |
255 | "settings.user.form.newPassword" : "新密碼", | 316 | "settings.user.form.newPassword" : "新密碼", |
256 | "settings.workspace.add.form.name" : "å稱", | 317 | "settings.workspace.add.form.name" : "å稱", |
257 | "settings.workspace.add.form.submitButton" : "Create workspace", | 318 | "settings.workspace.add.form.submitButton" : "建立工作å€", |
258 | "settings.workspace.form.buttonDelete" : "Delete workspace", | 319 | "settings.workspace.form.buttonDelete" : "刪除工作å€", |
259 | "settings.workspace.form.buttonSave" : "Save workspace", | 320 | "settings.workspace.form.buttonSave" : "儲å˜å·¥ä½œå€", |
260 | "settings.workspace.form.name" : "å稱", | 321 | "settings.workspace.form.name" : "å稱", |
261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in this Workspace", | 322 | "settings.workspace.form.servicesInWorkspaceHeadline" : "這個工作å€çš„æœå‹™", |
262 | "settings.workspace.form.yourWorkspaces" : "Your workspaces", | 323 | "settings.workspace.form.yourWorkspaces" : "ä½ çš„å·¥ä½œå€", |
263 | "settings.workspaces.deletedInfo" : "Workspace has been deleted", | 324 | "settings.workspaces.deletedInfo" : "æˆåŠŸåˆªé™¤å·¥ä½œå€", |
264 | "settings.workspaces.headline" : "Your workspaces", | 325 | "settings.workspaces.headline" : "ä½ çš„å·¥ä½œå€", |
265 | "settings.workspaces.noWorkspacesAdded" : "You haven't added any workspaces yet.", | 326 | "settings.workspaces.noWorkspacesAdded" : "ä½ å°šæœªåŠ å…¥ä»»ä½•å·¥ä½œå€", |
266 | "settings.workspaces.tryReloadWorkspaces" : "å†è©¦ä¸€æ¬¡", | 327 | "settings.workspaces.tryReloadWorkspaces" : "å†è©¦ä¸€æ¬¡", |
267 | "settings.workspaces.updatedInfo" : "Your changes have been saved", | 328 | "settings.workspaces.updatedInfo" : "æˆåŠŸå„²å˜", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Ferdi Workspaces", | 329 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Introducing Franz Workspaces", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 330 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 331 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", |
271 | "sidebar.addNewService" : "新增新的æœå‹™", | 332 | "sidebar.addNewService" : "新增新的æœå‹™", |
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 333 | "sidebar.closeTodosDrawer" : "Close Franz Todos", |
334 | "sidebar.closeWorkspaceDrawer" : "關閉工作空間", | ||
273 | "sidebar.muteApp" : "關閉通知和通知音效", | 335 | "sidebar.muteApp" : "關閉通知和通知音效", |
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 336 | "sidebar.openTodosDrawer" : "Open Franz Todos", |
337 | "sidebar.openWorkspaceDrawer" : "打開工作空間", | ||
275 | "sidebar.settings" : "è¨å®š", | 338 | "sidebar.settings" : "è¨å®š", |
276 | "sidebar.unmuteApp" : "開啟通知和通知音效", | 339 | "sidebar.unmuteApp" : "開啟通知和通知音效", |
277 | "signup.company.label" : "å…¬å¸", | ||
278 | "signup.email.label" : "é›»å郵件地å€", | 340 | "signup.email.label" : "é›»å郵件地å€", |
279 | "signup.emailDuplicate" : "該使用者的電å郵件ä½å€å·²å˜åœ¨", | 341 | "signup.emailDuplicate" : "該使用者的電å郵件ä½å€å·²å˜åœ¨", |
280 | "signup.firstname.label" : "å", | 342 | "signup.firstname.label" : "å", |
@@ -286,20 +348,12 @@ | |||
286 | "signup.link.login" : "已經有一個帳戶,登入?", | 348 | "signup.link.login" : "已經有一個帳戶,登入?", |
287 | "signup.password.label" : "密碼", | 349 | "signup.password.label" : "密碼", |
288 | "signup.submit.label" : "建立帳號", | 350 | "signup.submit.label" : "建立帳號", |
289 | "subscription.euTaxInfo" : "æ盟居民:å¯èƒ½æŽ¡ç”¨ç•¶åœ°éŠ·å”®ç¨…", | 351 | "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", |
290 | "subscription.features.ads" : "無廣告,永é !", | 352 | "subscription.cta.allOptions" : "See all options", |
291 | "subscription.features.comingSoon" : "å³å°‡æŽ¨å‡º", | 353 | "subscription.cta.choosePlan" : "Choose your plan", |
292 | "subscription.features.noInterruptions" : "å‡ç´šæŽˆæ¬Šæ²’有延é²èˆ‡æ‰“盹", | 354 | "subscription.includedProFeatures" : "The Franz Professional Plan includes:", |
293 | "subscription.features.onpremise.mattermost" : "åŠ å…¥å¦‚ Mattermost ç‰å·²é 定 \/ 託管的æœå‹™", | 355 | "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", |
294 | "subscription.features.proxy" : "æœå‹™çš„代ç†ä¼ºæœå™¨æ”¯æ´", | 356 | "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
295 | "subscription.features.spellchecker" : "支æ´æ‹¼å—檢查", | ||
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | ||
297 | "subscription.includedFeatures" : "Ferdi 高級支æ´å¸³æˆ¶åŒ…å«", | ||
298 | "subscription.paymentSessionError" : "無法åˆå§‹åŒ–付款表單", | ||
299 | "subscription.submit.label" : "æˆ‘æƒ³æ”¯æŒ Ferdi 開發", | ||
300 | "subscription.type.free" : "自由", | ||
301 | "subscription.type.month" : "月", | ||
302 | "subscription.type.year" : "å¹´", | ||
303 | "subscriptionPopup.buttonCancel" : "å–消", | 357 | "subscriptionPopup.buttonCancel" : "å–消", |
304 | "subscriptionPopup.buttonDone" : "完æˆ", | 358 | "subscriptionPopup.buttonDone" : "完æˆ", |
305 | "tabs.item.deleteService" : "刪除æœå‹™", | 359 | "tabs.item.deleteService" : "刪除æœå‹™", |
@@ -320,7 +374,7 @@ | |||
320 | "welcome.signupButton" : "建立å…費帳號", | 374 | "welcome.signupButton" : "建立å…費帳號", |
321 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 375 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", |
322 | "workspaceDrawer.allServices" : "所有æœå‹™", | 376 | "workspaceDrawer.allServices" : "所有æœå‹™", |
323 | "workspaceDrawer.headline" : "Workspaces", | 377 | "workspaceDrawer.headline" : "工作å€", |
324 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 378 | "workspaceDrawer.item.contextMenuEdit" : "edit", |
325 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 379 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", |
326 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 380 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", |
diff --git a/src/i18n/messages/src/components/TrialActivationInfoBar.json b/src/i18n/messages/src/components/TrialActivationInfoBar.json new file mode 100644 index 000000000..65dd964a6 --- /dev/null +++ b/src/i18n/messages/src/components/TrialActivationInfoBar.json | |||
@@ -0,0 +1,15 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "infobar.trialActivated", | ||
4 | "defaultMessage": "!!!Your trial was successfully activated. Happy messaging!", | ||
5 | "file": "src/components/TrialActivationInfoBar.js", | ||
6 | "start": { | ||
7 | "line": 11, | ||
8 | "column": 11 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 14, | ||
12 | "column": 3 | ||
13 | } | ||
14 | } | ||
15 | ] \ 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 index d3facf8e8..0885f6a20 100644 --- a/src/i18n/messages/src/components/auth/Pricing.json +++ b/src/i18n/messages/src/components/auth/Pricing.json | |||
@@ -1,53 +1,118 @@ | |||
1 | [ | 1 | [ |
2 | { | 2 | { |
3 | "id": "pricing.headline", | 3 | "id": "pricing.trial.headline", |
4 | "defaultMessage": "!!!Support Ferdi", | 4 | "defaultMessage": "!!!Franz Professional", |
5 | "file": "src/components/auth/Pricing.js", | 5 | "file": "src/components/auth/Pricing.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 13, | 7 | "line": 15, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 16, | 11 | "line": 18, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
15 | { | 15 | { |
16 | "id": "pricing.support.label", | 16 | "id": "pricing.trial.subheadline", |
17 | "defaultMessage": "!!!Select your support plan", | 17 | "defaultMessage": "!!!Your personal welcome offer:", |
18 | "file": "src/components/auth/Pricing.js", | 18 | "file": "src/components/auth/Pricing.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 17, | 20 | "line": 19, |
21 | "column": 23 | 21 | "column": 17 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 20, | 24 | "line": 22, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
28 | { | 28 | { |
29 | "id": "pricing.submit.label", | 29 | "id": "pricing.trial.terms.headline", |
30 | "defaultMessage": "!!!Support the development of Ferdi", | 30 | "defaultMessage": "!!!No strings attached", |
31 | "file": "src/components/auth/Pricing.js", | 31 | "file": "src/components/auth/Pricing.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 21, | 33 | "line": 23, |
34 | "column": 29 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 26, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "pricing.trial.terms.noCreditCard", | ||
43 | "defaultMessage": "!!!No credit card required", | ||
44 | "file": "src/components/auth/Pricing.js", | ||
45 | "start": { | ||
46 | "line": 27, | ||
47 | "column": 16 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 30, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "pricing.trial.terms.automaticTrialEnd", | ||
56 | "defaultMessage": "!!!Your free trial ends automatically after 14 days", | ||
57 | "file": "src/components/auth/Pricing.js", | ||
58 | "start": { | ||
59 | "line": 31, | ||
34 | "column": 21 | 60 | "column": 21 |
35 | }, | 61 | }, |
36 | "end": { | 62 | "end": { |
37 | "line": 24, | 63 | "line": 34, |
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "pricing.trial.error", | ||
69 | "defaultMessage": "!!!Sorry, we could not activate your trial!", | ||
70 | "file": "src/components/auth/Pricing.js", | ||
71 | "start": { | ||
72 | "line": 35, | ||
73 | "column": 19 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 38, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "pricing.trial.cta.accept", | ||
82 | "defaultMessage": "!!!Yes, upgrade my account to Franz Professional", | ||
83 | "file": "src/components/auth/Pricing.js", | ||
84 | "start": { | ||
85 | "line": 39, | ||
86 | "column": 13 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 42, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "pricing.trial.cta.skip", | ||
95 | "defaultMessage": "!!!Continue to Ferdi", | ||
96 | "file": "src/components/auth/Pricing.js", | ||
97 | "start": { | ||
98 | "line": 43, | ||
99 | "column": 11 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 46, | ||
38 | "column": 3 | 103 | "column": 3 |
39 | } | 104 | } |
40 | }, | 105 | }, |
41 | { | 106 | { |
42 | "id": "pricing.link.skipPayment", | 107 | "id": "pricing.trial.features.headline", |
43 | "defaultMessage": "!!!I don't want to support the development of Ferdi.", | 108 | "defaultMessage": "!!!Franz Professional includes:", |
44 | "file": "src/components/auth/Pricing.js", | 109 | "file": "src/components/auth/Pricing.js", |
45 | "start": { | 110 | "start": { |
46 | "line": 25, | 111 | "line": 47, |
47 | "column": 15 | 112 | "column": 20 |
48 | }, | 113 | }, |
49 | "end": { | 114 | "end": { |
50 | "line": 28, | 115 | "line": 50, |
51 | "column": 3 | 116 | "column": 3 |
52 | } | 117 | } |
53 | } | 118 | } |
diff --git a/src/i18n/messages/src/components/auth/Signup.json b/src/i18n/messages/src/components/auth/Signup.json index 94daffdde..9aa7b25ab 100644 --- a/src/i18n/messages/src/components/auth/Signup.json +++ b/src/i18n/messages/src/components/auth/Signup.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Sign up", | 4 | "defaultMessage": "!!!Sign up", |
5 | "file": "src/components/auth/Signup.js", | 5 | "file": "src/components/auth/Signup.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 18, | 7 | "line": 17, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 21, | 11 | "line": 20, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Firstname", | 17 | "defaultMessage": "!!!Firstname", |
18 | "file": "src/components/auth/Signup.js", | 18 | "file": "src/components/auth/Signup.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 22, | 20 | "line": 21, |
21 | "column": 18 | 21 | "column": 18 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 25, | 24 | "line": 24, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Lastname", | 30 | "defaultMessage": "!!!Lastname", |
31 | "file": "src/components/auth/Signup.js", | 31 | "file": "src/components/auth/Signup.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 26, | 33 | "line": 25, |
34 | "column": 17 | 34 | "column": 17 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 29, | 37 | "line": 28, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,24 +43,11 @@ | |||
43 | "defaultMessage": "!!!Email address", | 43 | "defaultMessage": "!!!Email address", |
44 | "file": "src/components/auth/Signup.js", | 44 | "file": "src/components/auth/Signup.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 30, | 46 | "line": 29, |
47 | "column": 14 | 47 | "column": 14 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 33, | 50 | "line": 32, |
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 | 51 | "column": 3 |
65 | } | 52 | } |
66 | }, | 53 | }, |
@@ -69,11 +56,11 @@ | |||
69 | "defaultMessage": "!!!Password", | 56 | "defaultMessage": "!!!Password", |
70 | "file": "src/components/auth/Signup.js", | 57 | "file": "src/components/auth/Signup.js", |
71 | "start": { | 58 | "start": { |
72 | "line": 38, | 59 | "line": 37, |
73 | "column": 17 | 60 | "column": 17 |
74 | }, | 61 | }, |
75 | "end": { | 62 | "end": { |
76 | "line": 41, | 63 | "line": 40, |
77 | "column": 3 | 64 | "column": 3 |
78 | } | 65 | } |
79 | }, | 66 | }, |
@@ -82,11 +69,11 @@ | |||
82 | "defaultMessage": "!!!By creating a Ferdi account you accept the", | 69 | "defaultMessage": "!!!By creating a Ferdi account you accept the", |
83 | "file": "src/components/auth/Signup.js", | 70 | "file": "src/components/auth/Signup.js", |
84 | "start": { | 71 | "start": { |
85 | "line": 42, | 72 | "line": 41, |
86 | "column": 13 | 73 | "column": 13 |
87 | }, | 74 | }, |
88 | "end": { | 75 | "end": { |
89 | "line": 45, | 76 | "line": 44, |
90 | "column": 3 | 77 | "column": 3 |
91 | } | 78 | } |
92 | }, | 79 | }, |
@@ -95,11 +82,11 @@ | |||
95 | "defaultMessage": "!!!Terms of service", | 82 | "defaultMessage": "!!!Terms of service", |
96 | "file": "src/components/auth/Signup.js", | 83 | "file": "src/components/auth/Signup.js", |
97 | "start": { | 84 | "start": { |
98 | "line": 46, | 85 | "line": 45, |
99 | "column": 9 | 86 | "column": 9 |
100 | }, | 87 | }, |
101 | "end": { | 88 | "end": { |
102 | "line": 49, | 89 | "line": 48, |
103 | "column": 3 | 90 | "column": 3 |
104 | } | 91 | } |
105 | }, | 92 | }, |
@@ -108,11 +95,11 @@ | |||
108 | "defaultMessage": "!!!Privacy Statement", | 95 | "defaultMessage": "!!!Privacy Statement", |
109 | "file": "src/components/auth/Signup.js", | 96 | "file": "src/components/auth/Signup.js", |
110 | "start": { | 97 | "start": { |
111 | "line": 50, | 98 | "line": 49, |
112 | "column": 11 | 99 | "column": 11 |
113 | }, | 100 | }, |
114 | "end": { | 101 | "end": { |
115 | "line": 53, | 102 | "line": 52, |
116 | "column": 3 | 103 | "column": 3 |
117 | } | 104 | } |
118 | }, | 105 | }, |
@@ -121,11 +108,11 @@ | |||
121 | "defaultMessage": "!!!Create account", | 108 | "defaultMessage": "!!!Create account", |
122 | "file": "src/components/auth/Signup.js", | 109 | "file": "src/components/auth/Signup.js", |
123 | "start": { | 110 | "start": { |
124 | "line": 54, | 111 | "line": 53, |
125 | "column": 21 | 112 | "column": 21 |
126 | }, | 113 | }, |
127 | "end": { | 114 | "end": { |
128 | "line": 57, | 115 | "line": 56, |
129 | "column": 3 | 116 | "column": 3 |
130 | } | 117 | } |
131 | }, | 118 | }, |
@@ -134,11 +121,11 @@ | |||
134 | "defaultMessage": "!!!Already have an account, sign in?", | 121 | "defaultMessage": "!!!Already have an account, sign in?", |
135 | "file": "src/components/auth/Signup.js", | 122 | "file": "src/components/auth/Signup.js", |
136 | "start": { | 123 | "start": { |
137 | "line": 58, | 124 | "line": 57, |
138 | "column": 13 | 125 | "column": 13 |
139 | }, | 126 | }, |
140 | "end": { | 127 | "end": { |
141 | "line": 61, | 128 | "line": 60, |
142 | "column": 3 | 129 | "column": 3 |
143 | } | 130 | } |
144 | }, | 131 | }, |
@@ -147,11 +134,11 @@ | |||
147 | "defaultMessage": "!!!A user with that email address already exists", | 134 | "defaultMessage": "!!!A user with that email address already exists", |
148 | "file": "src/components/auth/Signup.js", | 135 | "file": "src/components/auth/Signup.js", |
149 | "start": { | 136 | "start": { |
150 | "line": 62, | 137 | "line": 61, |
151 | "column": 18 | 138 | "column": 18 |
152 | }, | 139 | }, |
153 | "end": { | 140 | "end": { |
154 | "line": 65, | 141 | "line": 64, |
155 | "column": 3 | 142 | "column": 3 |
156 | } | 143 | } |
157 | } | 144 | } |
diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json index 5bb4ad3ba..3b8e047b4 100644 --- a/src/i18n/messages/src/components/layout/AppLayout.json +++ b/src/i18n/messages/src/components/layout/AppLayout.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Your services have been updated.", | 4 | "defaultMessage": "!!!Your services have been updated.", |
5 | "file": "src/components/layout/AppLayout.js", | 5 | "file": "src/components/layout/AppLayout.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 25, | 7 | "line": 27, |
8 | "column": 19 | 8 | "column": 19 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 28, | 11 | "line": 30, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Reload services", | 17 | "defaultMessage": "!!!Reload services", |
18 | "file": "src/components/layout/AppLayout.js", | 18 | "file": "src/components/layout/AppLayout.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 29, | 20 | "line": 31, |
21 | "column": 24 | 21 | "column": 24 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 32, | 24 | "line": 34, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Could not load services and user information", | 30 | "defaultMessage": "!!!Could not load services and user information", |
31 | "file": "src/components/layout/AppLayout.js", | 31 | "file": "src/components/layout/AppLayout.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 33, | 33 | "line": 35, |
34 | "column": 26 | 34 | "column": 26 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 36, | 37 | "line": 38, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", | 43 | "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", |
44 | "file": "src/components/layout/AppLayout.js", | 44 | "file": "src/components/layout/AppLayout.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 37, | 46 | "line": 39, |
47 | "column": 21 | 47 | "column": 21 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 40, | 50 | "line": 42, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | } | 53 | } |
diff --git a/src/i18n/messages/src/components/layout/Sidebar.json b/src/i18n/messages/src/components/layout/Sidebar.json index d67adc96e..837dc54bc 100644 --- a/src/i18n/messages/src/components/layout/Sidebar.json +++ b/src/i18n/messages/src/components/layout/Sidebar.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Settings", | 4 | "defaultMessage": "!!!Settings", |
5 | "file": "src/components/layout/Sidebar.js", | 5 | "file": "src/components/layout/Sidebar.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 13, | 7 | "line": 15, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 16, | 11 | "line": 18, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Add new service", | 17 | "defaultMessage": "!!!Add new service", |
18 | "file": "src/components/layout/Sidebar.js", | 18 | "file": "src/components/layout/Sidebar.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 17, | 20 | "line": 19, |
21 | "column": 17 | 21 | "column": 17 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 20, | 24 | "line": 22, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Disable notifications & audio", | 30 | "defaultMessage": "!!!Disable notifications & audio", |
31 | "file": "src/components/layout/Sidebar.js", | 31 | "file": "src/components/layout/Sidebar.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 21, | 33 | "line": 23, |
34 | "column": 8 | 34 | "column": 8 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 24, | 37 | "line": 26, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Enable notifications & audio", | 43 | "defaultMessage": "!!!Enable notifications & audio", |
44 | "file": "src/components/layout/Sidebar.js", | 44 | "file": "src/components/layout/Sidebar.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 25, | 46 | "line": 27, |
47 | "column": 10 | 47 | "column": 10 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 28, | 50 | "line": 30, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Open workspace drawer", | 56 | "defaultMessage": "!!!Open workspace drawer", |
57 | "file": "src/components/layout/Sidebar.js", | 57 | "file": "src/components/layout/Sidebar.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 29, | 59 | "line": 31, |
60 | "column": 23 | 60 | "column": 23 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 32, | 63 | "line": 34, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,37 @@ | |||
69 | "defaultMessage": "!!!Close workspace drawer", | 69 | "defaultMessage": "!!!Close workspace drawer", |
70 | "file": "src/components/layout/Sidebar.js", | 70 | "file": "src/components/layout/Sidebar.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 33, | 72 | "line": 35, |
73 | "column": 24 | 73 | "column": 24 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 36, | 76 | "line": 38, |
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "sidebar.openTodosDrawer", | ||
82 | "defaultMessage": "!!!Open Franz Todos", | ||
83 | "file": "src/components/layout/Sidebar.js", | ||
84 | "start": { | ||
85 | "line": 39, | ||
86 | "column": 19 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 42, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "sidebar.closeTodosDrawer", | ||
95 | "defaultMessage": "!!!Close Franz Todos", | ||
96 | "file": "src/components/layout/Sidebar.js", | ||
97 | "start": { | ||
98 | "line": 43, | ||
99 | "column": 20 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 46, | ||
77 | "column": 3 | 103 | "column": 3 |
78 | } | 104 | } |
79 | } | 105 | } |
diff --git a/src/i18n/messages/src/components/services/content/ServiceRestricted.json b/src/i18n/messages/src/components/services/content/ServiceRestricted.json new file mode 100644 index 000000000..c1984afe3 --- /dev/null +++ b/src/i18n/messages/src/components/services/content/ServiceRestricted.json | |||
@@ -0,0 +1,67 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "service.restrictedHandler.serviceLimit.headline", | ||
4 | "defaultMessage": "!!!You have reached your service limit.", | ||
5 | "file": "src/components/services/content/ServiceRestricted.js", | ||
6 | "start": { | ||
7 | "line": 11, | ||
8 | "column": 24 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 14, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "service.restrictedHandler.serviceLimit.text", | ||
17 | "defaultMessage": "!!!Please upgrade your account to use more than {count} services.", | ||
18 | "file": "src/components/services/content/ServiceRestricted.js", | ||
19 | "start": { | ||
20 | "line": 15, | ||
21 | "column": 20 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 18, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "service.restrictedHandler.customUrl.headline", | ||
30 | "defaultMessage": "!!!Franz Professional Plan required", | ||
31 | "file": "src/components/services/content/ServiceRestricted.js", | ||
32 | "start": { | ||
33 | "line": 19, | ||
34 | "column": 21 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 22, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "service.restrictedHandler.customUrl.text", | ||
43 | "defaultMessage": "!!!Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", | ||
44 | "file": "src/components/services/content/ServiceRestricted.js", | ||
45 | "start": { | ||
46 | "line": 23, | ||
47 | "column": 17 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 26, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "service.restrictedHandler.action", | ||
56 | "defaultMessage": "!!!Upgrade Account", | ||
57 | "file": "src/components/services/content/ServiceRestricted.js", | ||
58 | "start": { | ||
59 | "line": 27, | ||
60 | "column": 10 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 30, | ||
64 | "column": 3 | ||
65 | } | ||
66 | } | ||
67 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/services/content/Services.json b/src/i18n/messages/src/components/services/content/Services.json index fac438178..c2e57b8b5 100644 --- a/src/i18n/messages/src/components/services/content/Services.json +++ b/src/i18n/messages/src/components/services/content/Services.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Welcome to Ferdi", | 4 | "defaultMessage": "!!!Welcome to Ferdi", |
5 | "file": "src/components/services/content/Services.js", | 5 | "file": "src/components/services/content/Services.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 11, | 7 | "line": 14, |
8 | "column": 11 | 8 | "column": 11 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 14, | 11 | "line": 17, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Get started", | 17 | "defaultMessage": "!!!Get started", |
18 | "file": "src/components/services/content/Services.js", | 18 | "file": "src/components/services/content/Services.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 15, | 20 | "line": 18, |
21 | "column": 14 | 21 | "column": 14 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 18, | 24 | "line": 21, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Please login to use Ferdi.", | 30 | "defaultMessage": "!!!Please login to use Ferdi.", |
31 | "file": "src/components/services/content/Services.js", | 31 | "file": "src/components/services/content/Services.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 19, | 33 | "line": 22, |
34 | "column": 9 | 34 | "column": 9 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 22, | 37 | "line": 25, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", | 43 | "defaultMessage": "!!!Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", |
44 | "file": "src/components/services/content/Services.js", | 44 | "file": "src/components/services/content/Services.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 23, | 46 | "line": 26, |
47 | "column": 14 | 47 | "column": 14 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 26, | 50 | "line": 29, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | } | 53 | } |
diff --git a/src/i18n/messages/src/components/settings/account/AccountDashboard.json b/src/i18n/messages/src/components/settings/account/AccountDashboard.json index 2ed4849d2..48078c18d 100644 --- a/src/i18n/messages/src/components/settings/account/AccountDashboard.json +++ b/src/i18n/messages/src/components/settings/account/AccountDashboard.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Account", | 4 | "defaultMessage": "!!!Account", |
5 | "file": "src/components/settings/account/AccountDashboard.js", | 5 | "file": "src/components/settings/account/AccountDashboard.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 14, | 7 | "line": 18, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 17, | 11 | "line": 21, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,21 +17,8 @@ | |||
17 | "defaultMessage": "!!!Your Subscription", | 17 | "defaultMessage": "!!!Your Subscription", |
18 | "file": "src/components/settings/account/AccountDashboard.js", | 18 | "file": "src/components/settings/account/AccountDashboard.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 18, | ||
21 | "column": 24 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 21, | ||
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": 22, | 20 | "line": 22, |
34 | "column": 19 | 21 | "column": 24 |
35 | }, | 22 | }, |
36 | "end": { | 23 | "end": { |
37 | "line": 25, | 24 | "line": 25, |
@@ -65,15 +52,28 @@ | |||
65 | } | 52 | } |
66 | }, | 53 | }, |
67 | { | 54 | { |
55 | "id": "settings.account.upgradeToPro.label", | ||
56 | "defaultMessage": "!!!Upgrade to Franz Professional", | ||
57 | "file": "src/components/settings/account/AccountDashboard.js", | ||
58 | "start": { | ||
59 | "line": 34, | ||
60 | "column": 23 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 37, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.account.accountType.basic", | 68 | "id": "settings.account.accountType.basic", |
69 | "defaultMessage": "!!!Basic Account", | 69 | "defaultMessage": "!!!Basic Account", |
70 | "file": "src/components/settings/account/AccountDashboard.js", | 70 | "file": "src/components/settings/account/AccountDashboard.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 34, | 72 | "line": 38, |
73 | "column": 20 | 73 | "column": 20 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 37, | 76 | "line": 41, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Premium Supporter Account", | 82 | "defaultMessage": "!!!Premium Supporter Account", |
83 | "file": "src/components/settings/account/AccountDashboard.js", | 83 | "file": "src/components/settings/account/AccountDashboard.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 38, | 85 | "line": 42, |
86 | "column": 22 | 86 | "column": 22 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 41, | 89 | "line": 45, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Edit Account", | 95 | "defaultMessage": "!!!Edit Account", |
96 | "file": "src/components/settings/account/AccountDashboard.js", | 96 | "file": "src/components/settings/account/AccountDashboard.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 42, | 98 | "line": 46, |
99 | "column": 21 | 99 | "column": 21 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 45, | 102 | "line": 49, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | }, | 105 | }, |
@@ -108,11 +108,11 @@ | |||
108 | "defaultMessage": "!!Invoices", | 108 | "defaultMessage": "!!Invoices", |
109 | "file": "src/components/settings/account/AccountDashboard.js", | 109 | "file": "src/components/settings/account/AccountDashboard.js", |
110 | "start": { | 110 | "start": { |
111 | "line": 46, | 111 | "line": 50, |
112 | "column": 18 | 112 | "column": 18 |
113 | }, | 113 | }, |
114 | "end": { | 114 | "end": { |
115 | "line": 49, | 115 | "line": 53, |
116 | "column": 3 | 116 | "column": 3 |
117 | } | 117 | } |
118 | }, | 118 | }, |
@@ -121,11 +121,11 @@ | |||
121 | "defaultMessage": "!!!Download", | 121 | "defaultMessage": "!!!Download", |
122 | "file": "src/components/settings/account/AccountDashboard.js", | 122 | "file": "src/components/settings/account/AccountDashboard.js", |
123 | "start": { | 123 | "start": { |
124 | "line": 50, | 124 | "line": 54, |
125 | "column": 19 | 125 | "column": 19 |
126 | }, | 126 | }, |
127 | "end": { | 127 | "end": { |
128 | "line": 53, | 128 | "line": 57, |
129 | "column": 3 | 129 | "column": 3 |
130 | } | 130 | } |
131 | }, | 131 | }, |
@@ -134,11 +134,11 @@ | |||
134 | "defaultMessage": "!!!Could not load user information", | 134 | "defaultMessage": "!!!Could not load user information", |
135 | "file": "src/components/settings/account/AccountDashboard.js", | 135 | "file": "src/components/settings/account/AccountDashboard.js", |
136 | "start": { | 136 | "start": { |
137 | "line": 54, | 137 | "line": 58, |
138 | "column": 25 | 138 | "column": 25 |
139 | }, | 139 | }, |
140 | "end": { | 140 | "end": { |
141 | "line": 57, | 141 | "line": 61, |
142 | "column": 3 | 142 | "column": 3 |
143 | } | 143 | } |
144 | }, | 144 | }, |
@@ -147,11 +147,11 @@ | |||
147 | "defaultMessage": "!!!Try again", | 147 | "defaultMessage": "!!!Try again", |
148 | "file": "src/components/settings/account/AccountDashboard.js", | 148 | "file": "src/components/settings/account/AccountDashboard.js", |
149 | "start": { | 149 | "start": { |
150 | "line": 58, | 150 | "line": 62, |
151 | "column": 28 | 151 | "column": 28 |
152 | }, | 152 | }, |
153 | "end": { | 153 | "end": { |
154 | "line": 61, | 154 | "line": 65, |
155 | "column": 3 | 155 | "column": 3 |
156 | } | 156 | } |
157 | }, | 157 | }, |
@@ -160,11 +160,11 @@ | |||
160 | "defaultMessage": "!!!Delete account", | 160 | "defaultMessage": "!!!Delete account", |
161 | "file": "src/components/settings/account/AccountDashboard.js", | 161 | "file": "src/components/settings/account/AccountDashboard.js", |
162 | "start": { | 162 | "start": { |
163 | "line": 62, | 163 | "line": 66, |
164 | "column": 17 | 164 | "column": 17 |
165 | }, | 165 | }, |
166 | "end": { | 166 | "end": { |
167 | "line": 65, | 167 | "line": 69, |
168 | "column": 3 | 168 | "column": 3 |
169 | } | 169 | } |
170 | }, | 170 | }, |
@@ -173,11 +173,11 @@ | |||
173 | "defaultMessage": "!!!If you don't need your Ferdi account any longer, you can delete your account and all related data here.", | 173 | "defaultMessage": "!!!If you don't need your Ferdi account any longer, you can delete your account and all related data here.", |
174 | "file": "src/components/settings/account/AccountDashboard.js", | 174 | "file": "src/components/settings/account/AccountDashboard.js", |
175 | "start": { | 175 | "start": { |
176 | "line": 66, | 176 | "line": 70, |
177 | "column": 14 | 177 | "column": 14 |
178 | }, | 178 | }, |
179 | "end": { | 179 | "end": { |
180 | "line": 69, | 180 | "line": 73, |
181 | "column": 3 | 181 | "column": 3 |
182 | } | 182 | } |
183 | }, | 183 | }, |
@@ -186,11 +186,63 @@ | |||
186 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", | 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", | 187 | "file": "src/components/settings/account/AccountDashboard.js", |
188 | "start": { | 188 | "start": { |
189 | "line": 70, | 189 | "line": 74, |
190 | "column": 19 | 190 | "column": 19 |
191 | }, | 191 | }, |
192 | "end": { | 192 | "end": { |
193 | "line": 73, | 193 | "line": 77, |
194 | "column": 3 | ||
195 | } | ||
196 | }, | ||
197 | { | ||
198 | "id": "settings.account.trial", | ||
199 | "defaultMessage": "!!!Free Trial", | ||
200 | "file": "src/components/settings/account/AccountDashboard.js", | ||
201 | "start": { | ||
202 | "line": 78, | ||
203 | "column": 9 | ||
204 | }, | ||
205 | "end": { | ||
206 | "line": 81, | ||
207 | "column": 3 | ||
208 | } | ||
209 | }, | ||
210 | { | ||
211 | "id": "settings.account.yourLicense", | ||
212 | "defaultMessage": "!!!Your Franz License:", | ||
213 | "file": "src/components/settings/account/AccountDashboard.js", | ||
214 | "start": { | ||
215 | "line": 82, | ||
216 | "column": 15 | ||
217 | }, | ||
218 | "end": { | ||
219 | "line": 85, | ||
220 | "column": 3 | ||
221 | } | ||
222 | }, | ||
223 | { | ||
224 | "id": "settings.account.trialEndsIn", | ||
225 | "defaultMessage": "!!!Your free trial ends in {duration}.", | ||
226 | "file": "src/components/settings/account/AccountDashboard.js", | ||
227 | "start": { | ||
228 | "line": 86, | ||
229 | "column": 15 | ||
230 | }, | ||
231 | "end": { | ||
232 | "line": 89, | ||
233 | "column": 3 | ||
234 | } | ||
235 | }, | ||
236 | { | ||
237 | "id": "settings.account.trialUpdateBillingInfo", | ||
238 | "defaultMessage": "!!!Please update your billing info to continue using {license} after your trial period.", | ||
239 | "file": "src/components/settings/account/AccountDashboard.js", | ||
240 | "start": { | ||
241 | "line": 90, | ||
242 | "column": 33 | ||
243 | }, | ||
244 | "end": { | ||
245 | "line": 93, | ||
194 | "column": 3 | 246 | "column": 3 |
195 | } | 247 | } |
196 | } | 248 | } |
diff --git a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json index 70a989211..7dfb3ce04 100644 --- a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json +++ b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Available services", | 4 | "defaultMessage": "!!!Available services", |
5 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 5 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 13, | 7 | "line": 14, |
8 | "column": 21 | 8 | "column": 21 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 16, | 11 | "line": 17, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Your services", | 17 | "defaultMessage": "!!!Your services", |
18 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 18 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 17, | 20 | "line": 18, |
21 | "column": 16 | 21 | "column": 16 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 20, | 24 | "line": 21, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Your workspaces", | 30 | "defaultMessage": "!!!Your workspaces", |
31 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 31 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 21, | 33 | "line": 22, |
34 | "column": 18 | 34 | "column": 18 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 24, | 37 | "line": 25, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Account", | 43 | "defaultMessage": "!!!Account", |
44 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 44 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 25, | 46 | "line": 26, |
47 | "column": 11 | 47 | "column": 11 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 28, | 50 | "line": 29, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Manage Team", | 56 | "defaultMessage": "!!!Manage Team", |
57 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 57 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 29, | 59 | "line": 30, |
60 | "column": 8 | 60 | "column": 8 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 32, | 63 | "line": 33, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Settings", | 69 | "defaultMessage": "!!!Settings", |
70 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 70 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 33, | 72 | "line": 34, |
73 | "column": 12 | 73 | "column": 12 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 36, | 76 | "line": 37, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Invite Friends", | 82 | "defaultMessage": "!!!Invite Friends", |
83 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 83 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 37, | 85 | "line": 38, |
86 | "column": 17 | 86 | "column": 17 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 40, | 89 | "line": 41, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Logout", | 95 | "defaultMessage": "!!!Logout", |
96 | "file": "src/components/settings/navigation/SettingsNavigation.js", | 96 | "file": "src/components/settings/navigation/SettingsNavigation.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 41, | 98 | "line": 42, |
99 | "column": 10 | 99 | "column": 10 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 44, | 102 | "line": 45, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | } | 105 | } |
diff --git a/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json b/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json index 7d9ed3283..1124f4d6a 100644 --- a/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json +++ b/src/i18n/messages/src/components/settings/recipes/RecipesDashboard.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Available Services", | 4 | "defaultMessage": "!!!Available Services", |
5 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 5 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 15, | 7 | "line": 20, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 18, | 11 | "line": 23, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Search service", | 17 | "defaultMessage": "!!!Search service", |
18 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 18 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 19, | 20 | "line": 24, |
21 | "column": 17 | 21 | "column": 17 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 22, | 24 | "line": 27, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Most popular", | 30 | "defaultMessage": "!!!Most popular", |
31 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 31 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 23, | 33 | "line": 28, |
34 | "column": 22 | 34 | "column": 22 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 26, | 37 | "line": 31, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,24 +43,24 @@ | |||
43 | "defaultMessage": "!!!All services", | 43 | "defaultMessage": "!!!All services", |
44 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 44 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 27, | 46 | "line": 32, |
47 | "column": 14 | 47 | "column": 14 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 30, | 50 | "line": 35, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
54 | { | 54 | { |
55 | "id": "settings.recipes.dev", | 55 | "id": "settings.recipes.custom", |
56 | "defaultMessage": "!!!Development", | 56 | "defaultMessage": "!!!Custom Services", |
57 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 57 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 31, | 59 | "line": 36, |
60 | "column": 14 | 60 | "column": 17 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 34, | 63 | "line": 39, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Sorry, but no service matched your search term.", | 69 | "defaultMessage": "!!!Sorry, but no service matched your search term.", |
70 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 70 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 35, | 72 | "line": 40, |
73 | "column": 16 | 73 | "column": 16 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 38, | 76 | "line": 43, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Service successfully added", | 82 | "defaultMessage": "!!!Service successfully added", |
83 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 83 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 39, | 85 | "line": 44, |
86 | "column": 31 | 86 | "column": 31 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 42, | 89 | "line": 47, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,89 @@ | |||
95 | "defaultMessage": "!!!Missing a service?", | 95 | "defaultMessage": "!!!Missing a service?", |
96 | "file": "src/components/settings/recipes/RecipesDashboard.js", | 96 | "file": "src/components/settings/recipes/RecipesDashboard.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 43, | 98 | "line": 48, |
99 | "column": 18 | 99 | "column": 18 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 46, | 102 | "line": 51, |
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "settings.recipes.customService.intro", | ||
108 | "defaultMessage": "!!!To add a custom service, copy the recipe folder into:", | ||
109 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
110 | "start": { | ||
111 | "line": 52, | ||
112 | "column": 21 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 55, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "settings.recipes.customService.openFolder", | ||
121 | "defaultMessage": "!!!Open directory", | ||
122 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
123 | "start": { | ||
124 | "line": 56, | ||
125 | "column": 14 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 59, | ||
129 | "column": 3 | ||
130 | } | ||
131 | }, | ||
132 | { | ||
133 | "id": "settings.recipes.customService.openDevDocs", | ||
134 | "defaultMessage": "!!!Developer Documentation", | ||
135 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
136 | "start": { | ||
137 | "line": 60, | ||
138 | "column": 15 | ||
139 | }, | ||
140 | "end": { | ||
141 | "line": 63, | ||
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "settings.recipes.customService.headline.customRecipes", | ||
147 | "defaultMessage": "!!!Custom 3rd Party Recipes", | ||
148 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
149 | "start": { | ||
150 | "line": 64, | ||
151 | "column": 25 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 67, | ||
155 | "column": 3 | ||
156 | } | ||
157 | }, | ||
158 | { | ||
159 | "id": "settings.recipes.customService.headline.communityRecipes", | ||
160 | "defaultMessage": "!!!Community 3rd Party Recipes", | ||
161 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
162 | "start": { | ||
163 | "line": 68, | ||
164 | "column": 28 | ||
165 | }, | ||
166 | "end": { | ||
167 | "line": 71, | ||
168 | "column": 3 | ||
169 | } | ||
170 | }, | ||
171 | { | ||
172 | "id": "settings.recipes.customService.headline.devRecipes", | ||
173 | "defaultMessage": "!!!Your Development Service Recipes", | ||
174 | "file": "src/components/settings/recipes/RecipesDashboard.js", | ||
175 | "start": { | ||
176 | "line": 72, | ||
177 | "column": 22 | ||
178 | }, | ||
179 | "end": { | ||
180 | "line": 75, | ||
103 | "column": 3 | 181 | "column": 3 |
104 | } | 182 | } |
105 | } | 183 | } |
diff --git a/src/i18n/messages/src/components/settings/services/EditServiceForm.json b/src/i18n/messages/src/components/settings/services/EditServiceForm.json index c59a6129f..45dc7b690 100644 --- a/src/i18n/messages/src/components/settings/services/EditServiceForm.json +++ b/src/i18n/messages/src/components/settings/services/EditServiceForm.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Save service", | 4 | "defaultMessage": "!!!Save service", |
5 | "file": "src/components/settings/services/EditServiceForm.js", | 5 | "file": "src/components/settings/services/EditServiceForm.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 22, | 7 | "line": 24, |
8 | "column": 15 | 8 | "column": 15 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 25, | 11 | "line": 27, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Delete Service", | 17 | "defaultMessage": "!!!Delete Service", |
18 | "file": "src/components/settings/services/EditServiceForm.js", | 18 | "file": "src/components/settings/services/EditServiceForm.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 26, | 20 | "line": 28, |
21 | "column": 17 | 21 | "column": 17 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 29, | 24 | "line": 31, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Available services", | 30 | "defaultMessage": "!!!Available services", |
31 | "file": "src/components/settings/services/EditServiceForm.js", | 31 | "file": "src/components/settings/services/EditServiceForm.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 30, | 33 | "line": 32, |
34 | "column": 21 | 34 | "column": 21 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 33, | 37 | "line": 35, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Your services", | 43 | "defaultMessage": "!!!Your services", |
44 | "file": "src/components/settings/services/EditServiceForm.js", | 44 | "file": "src/components/settings/services/EditServiceForm.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 34, | 46 | "line": 36, |
47 | "column": 16 | 47 | "column": 16 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 37, | 50 | "line": 39, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Add {name}", | 56 | "defaultMessage": "!!!Add {name}", |
57 | "file": "src/components/settings/services/EditServiceForm.js", | 57 | "file": "src/components/settings/services/EditServiceForm.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 38, | 59 | "line": 40, |
60 | "column": 22 | 60 | "column": 22 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 41, | 63 | "line": 43, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Edit {name}", | 69 | "defaultMessage": "!!!Edit {name}", |
70 | "file": "src/components/settings/services/EditServiceForm.js", | 70 | "file": "src/components/settings/services/EditServiceForm.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 42, | 72 | "line": 44, |
73 | "column": 23 | 73 | "column": 23 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 45, | 76 | "line": 47, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Hosted", | 82 | "defaultMessage": "!!!Hosted", |
83 | "file": "src/components/settings/services/EditServiceForm.js", | 83 | "file": "src/components/settings/services/EditServiceForm.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 46, | 85 | "line": 48, |
86 | "column": 13 | 86 | "column": 13 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 49, | 89 | "line": 51, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Self hosted âï¸", | 95 | "defaultMessage": "!!!Self hosted âï¸", |
96 | "file": "src/components/settings/services/EditServiceForm.js", | 96 | "file": "src/components/settings/services/EditServiceForm.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 50, | 98 | "line": 52, |
99 | "column": 16 | 99 | "column": 16 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 53, | 102 | "line": 55, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | }, | 105 | }, |
@@ -108,11 +108,11 @@ | |||
108 | "defaultMessage": "!!!Use the hosted {name} service.", | 108 | "defaultMessage": "!!!Use the hosted {name} service.", |
109 | "file": "src/components/settings/services/EditServiceForm.js", | 109 | "file": "src/components/settings/services/EditServiceForm.js", |
110 | "start": { | 110 | "start": { |
111 | "line": 54, | 111 | "line": 56, |
112 | "column": 20 | 112 | "column": 20 |
113 | }, | 113 | }, |
114 | "end": { | 114 | "end": { |
115 | "line": 57, | 115 | "line": 59, |
116 | "column": 3 | 116 | "column": 3 |
117 | } | 117 | } |
118 | }, | 118 | }, |
@@ -121,11 +121,11 @@ | |||
121 | "defaultMessage": "!!!Could not validate custom {name} server.", | 121 | "defaultMessage": "!!!Could not validate custom {name} server.", |
122 | "file": "src/components/settings/services/EditServiceForm.js", | 122 | "file": "src/components/settings/services/EditServiceForm.js", |
123 | "start": { | 123 | "start": { |
124 | "line": 58, | 124 | "line": 60, |
125 | "column": 28 | 125 | "column": 28 |
126 | }, | 126 | }, |
127 | "end": { | 127 | "end": { |
128 | "line": 61, | 128 | "line": 63, |
129 | "column": 3 | 129 | "column": 3 |
130 | } | 130 | } |
131 | }, | 131 | }, |
@@ -134,11 +134,11 @@ | |||
134 | "defaultMessage": "!!!To add self hosted services, you need a Ferdi Premium Supporter Account.", | 134 | "defaultMessage": "!!!To add self hosted services, you need a Ferdi Premium Supporter Account.", |
135 | "file": "src/components/settings/services/EditServiceForm.js", | 135 | "file": "src/components/settings/services/EditServiceForm.js", |
136 | "start": { | 136 | "start": { |
137 | "line": 62, | 137 | "line": 64, |
138 | "column": 24 | 138 | "column": 24 |
139 | }, | 139 | }, |
140 | "end": { | 140 | "end": { |
141 | "line": 65, | 141 | "line": 67, |
142 | "column": 3 | 142 | "column": 3 |
143 | } | 143 | } |
144 | }, | 144 | }, |
@@ -147,11 +147,11 @@ | |||
147 | "defaultMessage": "!!!Upgrade your account", | 147 | "defaultMessage": "!!!Upgrade your account", |
148 | "file": "src/components/settings/services/EditServiceForm.js", | 148 | "file": "src/components/settings/services/EditServiceForm.js", |
149 | "start": { | 149 | "start": { |
150 | "line": 66, | 150 | "line": 68, |
151 | "column": 27 | 151 | "column": 27 |
152 | }, | 152 | }, |
153 | "end": { | 153 | "end": { |
154 | "line": 69, | 154 | "line": 71, |
155 | "column": 3 | 155 | "column": 3 |
156 | } | 156 | } |
157 | }, | 157 | }, |
@@ -160,11 +160,11 @@ | |||
160 | "defaultMessage": "!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", | 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", | 161 | "file": "src/components/settings/services/EditServiceForm.js", |
162 | "start": { | 162 | "start": { |
163 | "line": 70, | 163 | "line": 72, |
164 | "column": 23 | 164 | "column": 23 |
165 | }, | 165 | }, |
166 | "end": { | 166 | "end": { |
167 | "line": 73, | 167 | "line": 75, |
168 | "column": 3 | 168 | "column": 3 |
169 | } | 169 | } |
170 | }, | 170 | }, |
@@ -173,11 +173,11 @@ | |||
173 | "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", | 173 | "defaultMessage": "!!!When disabled, all notification sounds and audio playback are muted", |
174 | "file": "src/components/settings/services/EditServiceForm.js", | 174 | "file": "src/components/settings/services/EditServiceForm.js", |
175 | "start": { | 175 | "start": { |
176 | "line": 74, | 176 | "line": 76, |
177 | "column": 15 | 177 | "column": 15 |
178 | }, | 178 | }, |
179 | "end": { | 179 | "end": { |
180 | "line": 77, | 180 | "line": 79, |
181 | "column": 3 | 181 | "column": 3 |
182 | } | 182 | } |
183 | }, | 183 | }, |
@@ -186,11 +186,11 @@ | |||
186 | "defaultMessage": "!!!Notifications", | 186 | "defaultMessage": "!!!Notifications", |
187 | "file": "src/components/settings/services/EditServiceForm.js", | 187 | "file": "src/components/settings/services/EditServiceForm.js", |
188 | "start": { | 188 | "start": { |
189 | "line": 78, | 189 | "line": 80, |
190 | "column": 25 | 190 | "column": 25 |
191 | }, | 191 | }, |
192 | "end": { | 192 | "end": { |
193 | "line": 81, | 193 | "line": 83, |
194 | "column": 3 | 194 | "column": 3 |
195 | } | 195 | } |
196 | }, | 196 | }, |
@@ -199,11 +199,11 @@ | |||
199 | "defaultMessage": "!!!Unread message badges", | 199 | "defaultMessage": "!!!Unread message badges", |
200 | "file": "src/components/settings/services/EditServiceForm.js", | 200 | "file": "src/components/settings/services/EditServiceForm.js", |
201 | "start": { | 201 | "start": { |
202 | "line": 82, | 202 | "line": 84, |
203 | "column": 18 | 203 | "column": 18 |
204 | }, | 204 | }, |
205 | "end": { | 205 | "end": { |
206 | "line": 85, | 206 | "line": 87, |
207 | "column": 3 | 207 | "column": 3 |
208 | } | 208 | } |
209 | }, | 209 | }, |
@@ -212,11 +212,11 @@ | |||
212 | "defaultMessage": "!!!General", | 212 | "defaultMessage": "!!!General", |
213 | "file": "src/components/settings/services/EditServiceForm.js", | 213 | "file": "src/components/settings/services/EditServiceForm.js", |
214 | "start": { | 214 | "start": { |
215 | "line": 86, | 215 | "line": 88, |
216 | "column": 19 | 216 | "column": 19 |
217 | }, | 217 | }, |
218 | "end": { | 218 | "end": { |
219 | "line": 89, | 219 | "line": 91, |
220 | "column": 3 | 220 | "column": 3 |
221 | } | 221 | } |
222 | }, | 222 | }, |
@@ -225,11 +225,11 @@ | |||
225 | "defaultMessage": "!!!Delete", | 225 | "defaultMessage": "!!!Delete", |
226 | "file": "src/components/settings/services/EditServiceForm.js", | 226 | "file": "src/components/settings/services/EditServiceForm.js", |
227 | "start": { | 227 | "start": { |
228 | "line": 90, | 228 | "line": 92, |
229 | "column": 14 | 229 | "column": 14 |
230 | }, | 230 | }, |
231 | "end": { | 231 | "end": { |
232 | "line": 93, | 232 | "line": 95, |
233 | "column": 3 | 233 | "column": 3 |
234 | } | 234 | } |
235 | }, | 235 | }, |
@@ -238,11 +238,11 @@ | |||
238 | "defaultMessage": "!!!Drop your image, or click here", | 238 | "defaultMessage": "!!!Drop your image, or click here", |
239 | "file": "src/components/settings/services/EditServiceForm.js", | 239 | "file": "src/components/settings/services/EditServiceForm.js", |
240 | "start": { | 240 | "start": { |
241 | "line": 94, | 241 | "line": 96, |
242 | "column": 14 | 242 | "column": 14 |
243 | }, | 243 | }, |
244 | "end": { | 244 | "end": { |
245 | "line": 97, | 245 | "line": 99, |
246 | "column": 3 | 246 | "column": 3 |
247 | } | 247 | } |
248 | }, | 248 | }, |
@@ -251,11 +251,11 @@ | |||
251 | "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", | 251 | "defaultMessage": "!!!HTTP/HTTPS Proxy Settings", |
252 | "file": "src/components/settings/services/EditServiceForm.js", | 252 | "file": "src/components/settings/services/EditServiceForm.js", |
253 | "start": { | 253 | "start": { |
254 | "line": 98, | 254 | "line": 100, |
255 | "column": 17 | 255 | "column": 17 |
256 | }, | 256 | }, |
257 | "end": { | 257 | "end": { |
258 | "line": 101, | 258 | "line": 103, |
259 | "column": 3 | 259 | "column": 3 |
260 | } | 260 | } |
261 | }, | 261 | }, |
@@ -264,11 +264,11 @@ | |||
264 | "defaultMessage": "!!!Please restart Ferdi after changing proxy Settings.", | 264 | "defaultMessage": "!!!Please restart Ferdi after changing proxy Settings.", |
265 | "file": "src/components/settings/services/EditServiceForm.js", | 265 | "file": "src/components/settings/services/EditServiceForm.js", |
266 | "start": { | 266 | "start": { |
267 | "line": 102, | 267 | "line": 104, |
268 | "column": 20 | 268 | "column": 20 |
269 | }, | 269 | }, |
270 | "end": { | 270 | "end": { |
271 | "line": 105, | 271 | "line": 107, |
272 | "column": 3 | 272 | "column": 3 |
273 | } | 273 | } |
274 | }, | 274 | }, |
@@ -277,11 +277,11 @@ | |||
277 | "defaultMessage": "!!!Proxy settings will not be synchronized with the Ferdi servers.", | 277 | "defaultMessage": "!!!Proxy settings will not be synchronized with the Ferdi servers.", |
278 | "file": "src/components/settings/services/EditServiceForm.js", | 278 | "file": "src/components/settings/services/EditServiceForm.js", |
279 | "start": { | 279 | "start": { |
280 | "line": 106, | 280 | "line": 108, |
281 | "column": 13 | 281 | "column": 13 |
282 | }, | 282 | }, |
283 | "end": { | 283 | "end": { |
284 | "line": 109, | 284 | "line": 111, |
285 | "column": 3 | 285 | "column": 3 |
286 | } | 286 | } |
287 | } | 287 | } |
diff --git a/src/i18n/messages/src/components/settings/services/ServicesDashboard.json b/src/i18n/messages/src/components/settings/services/ServicesDashboard.json index 3803c6512..fa661ea2f 100644 --- a/src/i18n/messages/src/components/settings/services/ServicesDashboard.json +++ b/src/i18n/messages/src/components/settings/services/ServicesDashboard.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Your services", | 4 | "defaultMessage": "!!!Your services", |
5 | "file": "src/components/settings/services/ServicesDashboard.js", | 5 | "file": "src/components/settings/services/ServicesDashboard.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 14, | 7 | "line": 15, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 17, | 11 | "line": 18, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Search service", | 17 | "defaultMessage": "!!!Search service", |
18 | "file": "src/components/settings/services/ServicesDashboard.js", | 18 | "file": "src/components/settings/services/ServicesDashboard.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 18, | 20 | "line": 19, |
21 | "column": 17 | 21 | "column": 17 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 21, | 24 | "line": 22, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!You haven't added any services yet.", | 30 | "defaultMessage": "!!!You haven't added any services yet.", |
31 | "file": "src/components/settings/services/ServicesDashboard.js", | 31 | "file": "src/components/settings/services/ServicesDashboard.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 22, | 33 | "line": 23, |
34 | "column": 19 | 34 | "column": 19 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 25, | 37 | "line": 26, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Sorry, but no service matched your search term.", | 43 | "defaultMessage": "!!!Sorry, but no service matched your search term.", |
44 | "file": "src/components/settings/services/ServicesDashboard.js", | 44 | "file": "src/components/settings/services/ServicesDashboard.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 26, | 46 | "line": 27, |
47 | "column": 18 | 47 | "column": 18 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 29, | 50 | "line": 30, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Discover services", | 56 | "defaultMessage": "!!!Discover services", |
57 | "file": "src/components/settings/services/ServicesDashboard.js", | 57 | "file": "src/components/settings/services/ServicesDashboard.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 30, | 59 | "line": 31, |
60 | "column": 20 | 60 | "column": 20 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 33, | 63 | "line": 34, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Could not load your services", | 69 | "defaultMessage": "!!!Could not load your services", |
70 | "file": "src/components/settings/services/ServicesDashboard.js", | 70 | "file": "src/components/settings/services/ServicesDashboard.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 34, | 72 | "line": 35, |
73 | "column": 25 | 73 | "column": 25 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 37, | 76 | "line": 38, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Try again", | 82 | "defaultMessage": "!!!Try again", |
83 | "file": "src/components/settings/services/ServicesDashboard.js", | 83 | "file": "src/components/settings/services/ServicesDashboard.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 38, | 85 | "line": 39, |
86 | "column": 21 | 86 | "column": 21 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 41, | 89 | "line": 42, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Your changes have been saved", | 95 | "defaultMessage": "!!!Your changes have been saved", |
96 | "file": "src/components/settings/services/ServicesDashboard.js", | 96 | "file": "src/components/settings/services/ServicesDashboard.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 42, | 98 | "line": 43, |
99 | "column": 15 | 99 | "column": 15 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 45, | 102 | "line": 46, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | }, | 105 | }, |
@@ -108,11 +108,11 @@ | |||
108 | "defaultMessage": "!!!Service has been deleted", | 108 | "defaultMessage": "!!!Service has been deleted", |
109 | "file": "src/components/settings/services/ServicesDashboard.js", | 109 | "file": "src/components/settings/services/ServicesDashboard.js", |
110 | "start": { | 110 | "start": { |
111 | "line": 46, | 111 | "line": 47, |
112 | "column": 15 | 112 | "column": 15 |
113 | }, | 113 | }, |
114 | "end": { | 114 | "end": { |
115 | "line": 49, | 115 | "line": 50, |
116 | "column": 3 | 116 | "column": 3 |
117 | } | 117 | } |
118 | } | 118 | } |
diff --git a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json index a62ddb5b8..2aebc79e3 100644 --- a/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json +++ b/src/i18n/messages/src/components/settings/settings/EditSettingsForm.json | |||
@@ -39,15 +39,28 @@ | |||
39 | } | 39 | } |
40 | }, | 40 | }, |
41 | { | 41 | { |
42 | "id": "settings.app.todoServerInfo", | ||
43 | "defaultMessage": "!!!This server will be used for the \"Franz Todo\" feature. The default server will only work for premium users. (default: https://app.franztodos.com)", | ||
44 | "file": "src/components/settings/settings/EditSettingsForm.js", | ||
45 | "start": { | ||
46 | "line": 29, | ||
47 | "column": 18 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 32, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
42 | "id": "settings.app.headlineLanguage", | 55 | "id": "settings.app.headlineLanguage", |
43 | "defaultMessage": "!!!Language", | 56 | "defaultMessage": "!!!Language", |
44 | "file": "src/components/settings/settings/EditSettingsForm.js", | 57 | "file": "src/components/settings/settings/EditSettingsForm.js", |
45 | "start": { | 58 | "start": { |
46 | "line": 29, | 59 | "line": 33, |
47 | "column": 20 | 60 | "column": 20 |
48 | }, | 61 | }, |
49 | "end": { | 62 | "end": { |
50 | "line": 32, | 63 | "line": 36, |
51 | "column": 3 | 64 | "column": 3 |
52 | } | 65 | } |
53 | }, | 66 | }, |
@@ -56,11 +69,11 @@ | |||
56 | "defaultMessage": "!!!Updates", | 69 | "defaultMessage": "!!!Updates", |
57 | "file": "src/components/settings/settings/EditSettingsForm.js", | 70 | "file": "src/components/settings/settings/EditSettingsForm.js", |
58 | "start": { | 71 | "start": { |
59 | "line": 33, | 72 | "line": 37, |
60 | "column": 19 | 73 | "column": 19 |
61 | }, | 74 | }, |
62 | "end": { | 75 | "end": { |
63 | "line": 36, | 76 | "line": 40, |
64 | "column": 3 | 77 | "column": 3 |
65 | } | 78 | } |
66 | }, | 79 | }, |
@@ -69,11 +82,11 @@ | |||
69 | "defaultMessage": "!!!Appearance", | 82 | "defaultMessage": "!!!Appearance", |
70 | "file": "src/components/settings/settings/EditSettingsForm.js", | 83 | "file": "src/components/settings/settings/EditSettingsForm.js", |
71 | "start": { | 84 | "start": { |
72 | "line": 37, | 85 | "line": 41, |
73 | "column": 22 | 86 | "column": 22 |
74 | }, | 87 | }, |
75 | "end": { | 88 | "end": { |
76 | "line": 40, | 89 | "line": 44, |
77 | "column": 3 | 90 | "column": 3 |
78 | } | 91 | } |
79 | }, | 92 | }, |
@@ -82,11 +95,11 @@ | |||
82 | "defaultMessage": "!!!Advanced", | 95 | "defaultMessage": "!!!Advanced", |
83 | "file": "src/components/settings/settings/EditSettingsForm.js", | 96 | "file": "src/components/settings/settings/EditSettingsForm.js", |
84 | "start": { | 97 | "start": { |
85 | "line": 41, | 98 | "line": 45, |
86 | "column": 20 | 99 | "column": 20 |
87 | }, | 100 | }, |
88 | "end": { | 101 | "end": { |
89 | "line": 44, | 102 | "line": 48, |
90 | "column": 3 | 103 | "column": 3 |
91 | } | 104 | } |
92 | }, | 105 | }, |
@@ -95,11 +108,11 @@ | |||
95 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", | 108 | "defaultMessage": "!!!Help us to translate Ferdi into your language.", |
96 | "file": "src/components/settings/settings/EditSettingsForm.js", | 109 | "file": "src/components/settings/settings/EditSettingsForm.js", |
97 | "start": { | 110 | "start": { |
98 | "line": 45, | 111 | "line": 49, |
99 | "column": 19 | 112 | "column": 19 |
100 | }, | 113 | }, |
101 | "end": { | 114 | "end": { |
102 | "line": 48, | 115 | "line": 52, |
103 | "column": 3 | 116 | "column": 3 |
104 | } | 117 | } |
105 | }, | 118 | }, |
@@ -108,11 +121,11 @@ | |||
108 | "defaultMessage": "!!!Cache", | 121 | "defaultMessage": "!!!Cache", |
109 | "file": "src/components/settings/settings/EditSettingsForm.js", | 122 | "file": "src/components/settings/settings/EditSettingsForm.js", |
110 | "start": { | 123 | "start": { |
111 | "line": 49, | 124 | "line": 53, |
112 | "column": 20 | 125 | "column": 20 |
113 | }, | 126 | }, |
114 | "end": { | 127 | "end": { |
115 | "line": 52, | 128 | "line": 56, |
116 | "column": 3 | 129 | "column": 3 |
117 | } | 130 | } |
118 | }, | 131 | }, |
@@ -121,11 +134,11 @@ | |||
121 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", | 134 | "defaultMessage": "!!!Ferdi cache is currently using {size} of disk space.", |
122 | "file": "src/components/settings/settings/EditSettingsForm.js", | 135 | "file": "src/components/settings/settings/EditSettingsForm.js", |
123 | "start": { | 136 | "start": { |
124 | "line": 53, | 137 | "line": 57, |
125 | "column": 13 | 138 | "column": 13 |
126 | }, | 139 | }, |
127 | "end": { | 140 | "end": { |
128 | "line": 56, | 141 | "line": 60, |
129 | "column": 3 | 142 | "column": 3 |
130 | } | 143 | } |
131 | }, | 144 | }, |
@@ -134,11 +147,11 @@ | |||
134 | "defaultMessage": "!!!Clear cache", | 147 | "defaultMessage": "!!!Clear cache", |
135 | "file": "src/components/settings/settings/EditSettingsForm.js", | 148 | "file": "src/components/settings/settings/EditSettingsForm.js", |
136 | "start": { | 149 | "start": { |
137 | "line": 57, | 150 | "line": 61, |
138 | "column": 23 | 151 | "column": 23 |
139 | }, | 152 | }, |
140 | "end": { | 153 | "end": { |
141 | "line": 60, | 154 | "line": 64, |
142 | "column": 3 | 155 | "column": 3 |
143 | } | 156 | } |
144 | }, | 157 | }, |
@@ -147,11 +160,11 @@ | |||
147 | "defaultMessage": "!!!Check for updates", | 160 | "defaultMessage": "!!!Check for updates", |
148 | "file": "src/components/settings/settings/EditSettingsForm.js", | 161 | "file": "src/components/settings/settings/EditSettingsForm.js", |
149 | "start": { | 162 | "start": { |
150 | "line": 61, | 163 | "line": 65, |
151 | "column": 25 | 164 | "column": 25 |
152 | }, | 165 | }, |
153 | "end": { | 166 | "end": { |
154 | "line": 64, | 167 | "line": 68, |
155 | "column": 3 | 168 | "column": 3 |
156 | } | 169 | } |
157 | }, | 170 | }, |
@@ -160,11 +173,11 @@ | |||
160 | "defaultMessage": "!!!Restart & install update", | 173 | "defaultMessage": "!!!Restart & install update", |
161 | "file": "src/components/settings/settings/EditSettingsForm.js", | 174 | "file": "src/components/settings/settings/EditSettingsForm.js", |
162 | "start": { | 175 | "start": { |
163 | "line": 65, | 176 | "line": 69, |
164 | "column": 23 | 177 | "column": 23 |
165 | }, | 178 | }, |
166 | "end": { | 179 | "end": { |
167 | "line": 68, | 180 | "line": 72, |
168 | "column": 3 | 181 | "column": 3 |
169 | } | 182 | } |
170 | }, | 183 | }, |
@@ -173,11 +186,11 @@ | |||
173 | "defaultMessage": "!!!Is searching for update", | 186 | "defaultMessage": "!!!Is searching for update", |
174 | "file": "src/components/settings/settings/EditSettingsForm.js", | 187 | "file": "src/components/settings/settings/EditSettingsForm.js", |
175 | "start": { | 188 | "start": { |
176 | "line": 69, | 189 | "line": 73, |
177 | "column": 25 | 190 | "column": 25 |
178 | }, | 191 | }, |
179 | "end": { | 192 | "end": { |
180 | "line": 72, | 193 | "line": 76, |
181 | "column": 3 | 194 | "column": 3 |
182 | } | 195 | } |
183 | }, | 196 | }, |
@@ -186,24 +199,24 @@ | |||
186 | "defaultMessage": "!!!Update available, downloading...", | 199 | "defaultMessage": "!!!Update available, downloading...", |
187 | "file": "src/components/settings/settings/EditSettingsForm.js", | 200 | "file": "src/components/settings/settings/EditSettingsForm.js", |
188 | "start": { | 201 | "start": { |
189 | "line": 73, | 202 | "line": 77, |
190 | "column": 25 | 203 | "column": 25 |
191 | }, | 204 | }, |
192 | "end": { | 205 | "end": { |
193 | "line": 76, | 206 | "line": 80, |
194 | "column": 3 | 207 | "column": 3 |
195 | } | 208 | } |
196 | }, | 209 | }, |
197 | { | 210 | { |
198 | "id": "settings.app.updateStatusUpToDate", | 211 | "id": "settings.app.updateStatusUpToDate", |
199 | "defaultMessage": "!!!You are using the latest version of Franz", | 212 | "defaultMessage": "!!!You are using the latest version of Ferdi", |
200 | "file": "src/components/settings/settings/EditSettingsForm.js", | 213 | "file": "src/components/settings/settings/EditSettingsForm.js", |
201 | "start": { | 214 | "start": { |
202 | "line": 77, | 215 | "line": 81, |
203 | "column": 24 | 216 | "column": 24 |
204 | }, | 217 | }, |
205 | "end": { | 218 | "end": { |
206 | "line": 80, | 219 | "line": 84, |
207 | "column": 3 | 220 | "column": 3 |
208 | } | 221 | } |
209 | }, | 222 | }, |
@@ -212,11 +225,11 @@ | |||
212 | "defaultMessage": "!!!Current version:", | 225 | "defaultMessage": "!!!Current version:", |
213 | "file": "src/components/settings/settings/EditSettingsForm.js", | 226 | "file": "src/components/settings/settings/EditSettingsForm.js", |
214 | "start": { | 227 | "start": { |
215 | "line": 81, | 228 | "line": 85, |
216 | "column": 18 | 229 | "column": 18 |
217 | }, | 230 | }, |
218 | "end": { | 231 | "end": { |
219 | "line": 84, | 232 | "line": 88, |
220 | "column": 3 | 233 | "column": 3 |
221 | } | 234 | } |
222 | }, | 235 | }, |
@@ -225,11 +238,11 @@ | |||
225 | "defaultMessage": "!!!Changes require restart", | 238 | "defaultMessage": "!!!Changes require restart", |
226 | "file": "src/components/settings/settings/EditSettingsForm.js", | 239 | "file": "src/components/settings/settings/EditSettingsForm.js", |
227 | "start": { | 240 | "start": { |
228 | "line": 85, | 241 | "line": 89, |
229 | "column": 29 | 242 | "column": 29 |
230 | }, | 243 | }, |
231 | "end": { | 244 | "end": { |
232 | "line": 88, | 245 | "line": 92, |
233 | "column": 3 | 246 | "column": 3 |
234 | } | 247 | } |
235 | }, | 248 | }, |
@@ -238,11 +251,11 @@ | |||
238 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", | 251 | "defaultMessage": "!!!Official translations are English & German. All other languages are community based translations.", |
239 | "file": "src/components/settings/settings/EditSettingsForm.js", | 252 | "file": "src/components/settings/settings/EditSettingsForm.js", |
240 | "start": { | 253 | "start": { |
241 | "line": 89, | 254 | "line": 93, |
242 | "column": 22 | 255 | "column": 22 |
243 | }, | 256 | }, |
244 | "end": { | 257 | "end": { |
245 | "line": 92, | 258 | "line": 96, |
246 | "column": 3 | 259 | "column": 3 |
247 | } | 260 | } |
248 | } | 261 | } |
diff --git a/src/i18n/messages/src/components/settings/team/TeamDashboard.json b/src/i18n/messages/src/components/settings/team/TeamDashboard.json index 89d038cf3..80adadb67 100644 --- a/src/i18n/messages/src/components/settings/team/TeamDashboard.json +++ b/src/i18n/messages/src/components/settings/team/TeamDashboard.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Team", | 4 | "defaultMessage": "!!!Team", |
5 | "file": "src/components/settings/team/TeamDashboard.js", | 5 | "file": "src/components/settings/team/TeamDashboard.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 14, | 7 | "line": 17, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 17, | 11 | "line": 20, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Ferdi for Teams", | 17 | "defaultMessage": "!!!Ferdi for Teams", |
18 | "file": "src/components/settings/team/TeamDashboard.js", | 18 | "file": "src/components/settings/team/TeamDashboard.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 18, | 20 | "line": 21, |
21 | "column": 19 | 21 | "column": 19 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 21, | 24 | "line": 24, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", | 30 | "defaultMessage": "!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", |
31 | "file": "src/components/settings/team/TeamDashboard.js", | 31 | "file": "src/components/settings/team/TeamDashboard.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 22, | 33 | "line": 25, |
34 | "column": 9 | 34 | "column": 9 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 25, | 37 | "line": 28, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Ferdi for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", | 43 | "defaultMessage": "!!!Ferdi for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", |
44 | "file": "src/components/settings/team/TeamDashboard.js", | 44 | "file": "src/components/settings/team/TeamDashboard.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 26, | 46 | "line": 29, |
47 | "column": 8 | 47 | "column": 8 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 29, | 50 | "line": 32, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Manage your Team on meetfranz.com", | 56 | "defaultMessage": "!!!Manage your Team on meetfranz.com", |
57 | "file": "src/components/settings/team/TeamDashboard.js", | 57 | "file": "src/components/settings/team/TeamDashboard.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 30, | 59 | "line": 33, |
60 | "column": 16 | 60 | "column": 16 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 33, | 63 | "line": 36, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Upgrade your Account", | 69 | "defaultMessage": "!!!Upgrade your Account", |
70 | "file": "src/components/settings/team/TeamDashboard.js", | 70 | "file": "src/components/settings/team/TeamDashboard.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 34, | 72 | "line": 37, |
73 | "column": 17 | 73 | "column": 17 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 37, | 76 | "line": 40, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | } | 79 | } |
diff --git a/src/i18n/messages/src/components/subscription/SubscriptionForm.json b/src/i18n/messages/src/components/subscription/SubscriptionForm.json index 506408caf..6d235254e 100644 --- a/src/i18n/messages/src/components/subscription/SubscriptionForm.json +++ b/src/i18n/messages/src/components/subscription/SubscriptionForm.json | |||
@@ -1,183 +1,53 @@ | |||
1 | [ | 1 | [ |
2 | { | 2 | { |
3 | "id": "subscription.submit.label", | 3 | "id": "subscription.cta.choosePlan", |
4 | "defaultMessage": "!!!Support the development of Franz", | 4 | "defaultMessage": "!!!Choose your plan", |
5 | "file": "src/components/subscription/SubscriptionForm.js", | 5 | "file": "src/components/subscription/SubscriptionForm.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 14, | 7 | "line": 13, |
8 | "column": 21 | 8 | "column": 21 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 17, | 11 | "line": 16, |
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 | 12 | "column": 3 |
39 | } | 13 | } |
40 | }, | 14 | }, |
41 | { | 15 | { |
42 | "id": "subscription.type.month", | 16 | "id": "settings.account.headlineUpgradeAccount", |
43 | "defaultMessage": "!!!month", | 17 | "defaultMessage": "!!!Upgrade your account and get the full Franz experience", |
44 | "file": "src/components/subscription/SubscriptionForm.js", | 18 | "file": "src/components/subscription/SubscriptionForm.js", |
45 | "start": { | 19 | "start": { |
46 | "line": 26, | 20 | "line": 17, |
47 | "column": 15 | 21 | "column": 18 |
48 | }, | 22 | }, |
49 | "end": { | 23 | "end": { |
50 | "line": 29, | 24 | "line": 20, |
51 | "column": 3 | 25 | "column": 3 |
52 | } | 26 | } |
53 | }, | 27 | }, |
54 | { | 28 | { |
55 | "id": "subscription.type.year", | 29 | "id": "subscription.teaser.intro", |
56 | "defaultMessage": "!!!year", | 30 | "defaultMessage": "!!!Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", |
57 | "file": "src/components/subscription/SubscriptionForm.js", | 31 | "file": "src/components/subscription/SubscriptionForm.js", |
58 | "start": { | 32 | "start": { |
59 | "line": 30, | 33 | "line": 21, |
60 | "column": 14 | 34 | "column": 14 |
61 | }, | 35 | }, |
62 | "end": { | 36 | "end": { |
63 | "line": 33, | 37 | "line": 24, |
64 | "column": 3 | 38 | "column": 3 |
65 | } | 39 | } |
66 | }, | 40 | }, |
67 | { | 41 | { |
68 | "id": "subscription.includedFeatures", | 42 | "id": "subscription.teaser.includedFeatures", |
69 | "defaultMessage": "!!!The Ferdi Premium Supporter Account includes", | 43 | "defaultMessage": "!!!Paid Franz Plans include:", |
70 | "file": "src/components/subscription/SubscriptionForm.js", | 44 | "file": "src/components/subscription/SubscriptionForm.js", |
71 | "start": { | 45 | "start": { |
72 | "line": 34, | 46 | "line": 25, |
73 | "column": 20 | 47 | "column": 20 |
74 | }, | 48 | }, |
75 | "end": { | 49 | "end": { |
76 | "line": 37, | 50 | "line": 28, |
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.workspaces", | ||
134 | "defaultMessage": "!!!Organize your services in workspaces", | ||
135 | "file": "src/components/subscription/SubscriptionForm.js", | ||
136 | "start": { | ||
137 | "line": 54, | ||
138 | "column": 14 | ||
139 | }, | ||
140 | "end": { | ||
141 | "line": 57, | ||
142 | "column": 3 | ||
143 | } | ||
144 | }, | ||
145 | { | ||
146 | "id": "subscription.features.ads", | ||
147 | "defaultMessage": "!!!No ads, ever!", | ||
148 | "file": "src/components/subscription/SubscriptionForm.js", | ||
149 | "start": { | ||
150 | "line": 58, | ||
151 | "column": 7 | ||
152 | }, | ||
153 | "end": { | ||
154 | "line": 61, | ||
155 | "column": 3 | ||
156 | } | ||
157 | }, | ||
158 | { | ||
159 | "id": "subscription.features.comingSoon", | ||
160 | "defaultMessage": "!!!coming soon", | ||
161 | "file": "src/components/subscription/SubscriptionForm.js", | ||
162 | "start": { | ||
163 | "line": 62, | ||
164 | "column": 14 | ||
165 | }, | ||
166 | "end": { | ||
167 | "line": 65, | ||
168 | "column": 3 | ||
169 | } | ||
170 | }, | ||
171 | { | ||
172 | "id": "subscription.euTaxInfo", | ||
173 | "defaultMessage": "!!!EU residents: local sales tax may apply", | ||
174 | "file": "src/components/subscription/SubscriptionForm.js", | ||
175 | "start": { | ||
176 | "line": 66, | ||
177 | "column": 13 | ||
178 | }, | ||
179 | "end": { | ||
180 | "line": 69, | ||
181 | "column": 3 | 51 | "column": 3 |
182 | } | 52 | } |
183 | } | 53 | } |
diff --git a/src/i18n/messages/src/components/subscription/TrialForm.json b/src/i18n/messages/src/components/subscription/TrialForm.json new file mode 100644 index 000000000..8b387ba36 --- /dev/null +++ b/src/i18n/messages/src/components/subscription/TrialForm.json | |||
@@ -0,0 +1,93 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "subscription.cta.activateTrial", | ||
4 | "defaultMessage": "!!!Yes, start the free Franz Professional trial", | ||
5 | "file": "src/components/subscription/TrialForm.js", | ||
6 | "start": { | ||
7 | "line": 14, | ||
8 | "column": 21 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 17, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "subscription.cta.allOptions", | ||
17 | "defaultMessage": "!!!See all options", | ||
18 | "file": "src/components/subscription/TrialForm.js", | ||
19 | "start": { | ||
20 | "line": 18, | ||
21 | "column": 20 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 21, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "settings.account.headlineTrialUpgrade", | ||
30 | "defaultMessage": "!!!Get the free 14 day Franz Professional Trial", | ||
31 | "file": "src/components/subscription/TrialForm.js", | ||
32 | "start": { | ||
33 | "line": 22, | ||
34 | "column": 18 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 25, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "subscription.includedProFeatures", | ||
43 | "defaultMessage": "!!!The Franz Professional Plan includes:", | ||
44 | "file": "src/components/subscription/TrialForm.js", | ||
45 | "start": { | ||
46 | "line": 26, | ||
47 | "column": 20 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 29, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "pricing.trial.terms.headline", | ||
56 | "defaultMessage": "!!!No strings attached", | ||
57 | "file": "src/components/subscription/TrialForm.js", | ||
58 | "start": { | ||
59 | "line": 30, | ||
60 | "column": 29 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 33, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "pricing.trial.terms.noCreditCard", | ||
69 | "defaultMessage": "!!!No credit card required", | ||
70 | "file": "src/components/subscription/TrialForm.js", | ||
71 | "start": { | ||
72 | "line": 34, | ||
73 | "column": 16 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 37, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "pricing.trial.terms.automaticTrialEnd", | ||
82 | "defaultMessage": "!!!Your free trial ends automatically after 14 days", | ||
83 | "file": "src/components/subscription/TrialForm.js", | ||
84 | "start": { | ||
85 | "line": 38, | ||
86 | "column": 21 | ||
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/ui/ActivateTrialButton/index.json b/src/i18n/messages/src/components/ui/ActivateTrialButton/index.json new file mode 100644 index 000000000..6370e4bb9 --- /dev/null +++ b/src/i18n/messages/src/components/ui/ActivateTrialButton/index.json | |||
@@ -0,0 +1,93 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "feature.delayApp.upgrade.action", | ||
4 | "defaultMessage": "!!!Get a Franz Supporter License", | ||
5 | "file": "src/components/ui/ActivateTrialButton/index.js", | ||
6 | "start": { | ||
7 | "line": 12, | ||
8 | "column": 10 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 15, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "feature.delayApp.trial.action", | ||
17 | "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional", | ||
18 | "file": "src/components/ui/ActivateTrialButton/index.js", | ||
19 | "start": { | ||
20 | "line": 16, | ||
21 | "column": 15 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 19, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "feature.delayApp.upgrade.actionShort", | ||
30 | "defaultMessage": "!!!Upgrade account", | ||
31 | "file": "src/components/ui/ActivateTrialButton/index.js", | ||
32 | "start": { | ||
33 | "line": 20, | ||
34 | "column": 15 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 23, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "feature.delayApp.trial.actionShort", | ||
43 | "defaultMessage": "!!!Activate the free Franz Professional trial", | ||
44 | "file": "src/components/ui/ActivateTrialButton/index.js", | ||
45 | "start": { | ||
46 | "line": 24, | ||
47 | "column": 20 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 27, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "pricing.trial.terms.headline", | ||
56 | "defaultMessage": "!!!No strings attached", | ||
57 | "file": "src/components/ui/ActivateTrialButton/index.js", | ||
58 | "start": { | ||
59 | "line": 28, | ||
60 | "column": 29 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 31, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "pricing.trial.terms.noCreditCard", | ||
69 | "defaultMessage": "!!!No credit card required", | ||
70 | "file": "src/components/ui/ActivateTrialButton/index.js", | ||
71 | "start": { | ||
72 | "line": 32, | ||
73 | "column": 16 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 35, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "pricing.trial.terms.automaticTrialEnd", | ||
82 | "defaultMessage": "!!!Your free trial ends automatically after 14 days", | ||
83 | "file": "src/components/ui/ActivateTrialButton/index.js", | ||
84 | "start": { | ||
85 | "line": 36, | ||
86 | "column": 21 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 39, | ||
90 | "column": 3 | ||
91 | } | ||
92 | } | ||
93 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/components/ui/FeatureList.json b/src/i18n/messages/src/components/ui/FeatureList.json new file mode 100644 index 000000000..497e299a4 --- /dev/null +++ b/src/i18n/messages/src/components/ui/FeatureList.json | |||
@@ -0,0 +1,132 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "pricing.features.unlimitedServices", | ||
4 | "defaultMessage": "!!!Add unlimited services", | ||
5 | "file": "src/components/ui/FeatureList.js", | ||
6 | "start": { | ||
7 | "line": 8, | ||
8 | "column": 21 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 11, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "pricing.features.spellchecker", | ||
17 | "defaultMessage": "!!!Spellchecker support", | ||
18 | "file": "src/components/ui/FeatureList.js", | ||
19 | "start": { | ||
20 | "line": 12, | ||
21 | "column": 16 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 15, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "pricing.features.workspaces", | ||
30 | "defaultMessage": "!!!Workspaces", | ||
31 | "file": "src/components/ui/FeatureList.js", | ||
32 | "start": { | ||
33 | "line": 16, | ||
34 | "column": 14 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 19, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "pricing.features.customWebsites", | ||
43 | "defaultMessage": "!!!Add Custom Websites", | ||
44 | "file": "src/components/ui/FeatureList.js", | ||
45 | "start": { | ||
46 | "line": 20, | ||
47 | "column": 18 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 23, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "pricing.features.onPremise", | ||
56 | "defaultMessage": "!!!On-premise & other Hosted Services", | ||
57 | "file": "src/components/ui/FeatureList.js", | ||
58 | "start": { | ||
59 | "line": 24, | ||
60 | "column": 13 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 27, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "pricing.features.thirdPartyServices", | ||
69 | "defaultMessage": "!!!Install 3rd party services", | ||
70 | "file": "src/components/ui/FeatureList.js", | ||
71 | "start": { | ||
72 | "line": 28, | ||
73 | "column": 22 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 31, | ||
77 | "column": 3 | ||
78 | } | ||
79 | }, | ||
80 | { | ||
81 | "id": "pricing.features.serviceProxies", | ||
82 | "defaultMessage": "!!!Service Proxies", | ||
83 | "file": "src/components/ui/FeatureList.js", | ||
84 | "start": { | ||
85 | "line": 32, | ||
86 | "column": 18 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 35, | ||
90 | "column": 3 | ||
91 | } | ||
92 | }, | ||
93 | { | ||
94 | "id": "pricing.features.teamManagement", | ||
95 | "defaultMessage": "!!!Team Management", | ||
96 | "file": "src/components/ui/FeatureList.js", | ||
97 | "start": { | ||
98 | "line": 36, | ||
99 | "column": 18 | ||
100 | }, | ||
101 | "end": { | ||
102 | "line": 39, | ||
103 | "column": 3 | ||
104 | } | ||
105 | }, | ||
106 | { | ||
107 | "id": "pricing.features.appDelays", | ||
108 | "defaultMessage": "!!!No Waiting Screens", | ||
109 | "file": "src/components/ui/FeatureList.js", | ||
110 | "start": { | ||
111 | "line": 40, | ||
112 | "column": 13 | ||
113 | }, | ||
114 | "end": { | ||
115 | "line": 43, | ||
116 | "column": 3 | ||
117 | } | ||
118 | }, | ||
119 | { | ||
120 | "id": "pricing.features.adFree", | ||
121 | "defaultMessage": "!!!Forever ad-free", | ||
122 | "file": "src/components/ui/FeatureList.js", | ||
123 | "start": { | ||
124 | "line": 44, | ||
125 | "column": 10 | ||
126 | }, | ||
127 | "end": { | ||
128 | "line": 47, | ||
129 | "column": 3 | ||
130 | } | ||
131 | } | ||
132 | ] \ 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 index 582d546fa..320d3ca3e 100644 --- a/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json +++ b/src/i18n/messages/src/components/ui/PremiumFeatureContainer/index.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Upgrade account", | 4 | "defaultMessage": "!!!Upgrade account", |
5 | "file": "src/components/ui/PremiumFeatureContainer/index.js", | 5 | "file": "src/components/ui/PremiumFeatureContainer/index.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 14, | 7 | "line": 15, |
8 | "column": 10 | 8 | "column": 10 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 17, | 11 | "line": 18, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | } | 14 | } |
diff --git a/src/i18n/messages/src/components/ui/UpgradeButton/index.json b/src/i18n/messages/src/components/ui/UpgradeButton/index.json new file mode 100644 index 000000000..f270f5a65 --- /dev/null +++ b/src/i18n/messages/src/components/ui/UpgradeButton/index.json | |||
@@ -0,0 +1,15 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "global.upgradeButton.upgradeToPro", | ||
4 | "defaultMessage": "!!!Upgrade to Franz Professional", | ||
5 | "file": "src/components/ui/UpgradeButton/index.js", | ||
6 | "start": { | ||
7 | "line": 12, | ||
8 | "column": 16 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 15, | ||
12 | "column": 3 | ||
13 | } | ||
14 | } | ||
15 | ] \ 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 index 7645ae2c2..d0a243ec0 100644 --- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json +++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json | |||
@@ -1,14 +1,14 @@ | |||
1 | [ | 1 | [ |
2 | { | 2 | { |
3 | "id": "settings.app.form.autoLaunchOnStart", | 3 | "id": "settings.app.form.autoLaunchOnStart", |
4 | "defaultMessage": "!!!Launch Ferdi on start", | 4 | "defaultMessage": "!!!Launch Franz on start", |
5 | "file": "src/containers/settings/EditSettingsScreen.js", | 5 | "file": "src/containers/settings/EditSettingsScreen.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 24, | 7 | "line": 26, |
8 | "column": 21 | 8 | "column": 21 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 27, | 11 | "line": 29, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,63 +17,50 @@ | |||
17 | "defaultMessage": "!!!Open in background", | 17 | "defaultMessage": "!!!Open in background", |
18 | "file": "src/containers/settings/EditSettingsScreen.js", | 18 | "file": "src/containers/settings/EditSettingsScreen.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 28, | 20 | "line": 30, |
21 | "column": 26 | 21 | "column": 26 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 31, | 24 | "line": 33, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
28 | { | 28 | { |
29 | "id": "settings.app.form.runInBackground", | 29 | "id": "settings.app.form.runInBackground", |
30 | "defaultMessage": "!!!Keep Ferdi in background when closing the window", | 30 | "defaultMessage": "!!!Keep Franz in background when closing the window", |
31 | "file": "src/containers/settings/EditSettingsScreen.js", | 31 | "file": "src/containers/settings/EditSettingsScreen.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 32, | 33 | "line": 34, |
34 | "column": 19 | 34 | "column": 19 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 35, | 37 | "line": 37, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
41 | { | 41 | { |
42 | "id": "settings.app.form.enableSystemTray", | 42 | "id": "settings.app.form.enableSystemTray", |
43 | "defaultMessage": "!!!Show Ferdi in system tray", | 43 | "defaultMessage": "!!!Show Franz in system tray", |
44 | "file": "src/containers/settings/EditSettingsScreen.js", | 44 | "file": "src/containers/settings/EditSettingsScreen.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 36, | 46 | "line": 38, |
47 | "column": 20 | 47 | "column": 20 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 39, | 50 | "line": 41, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
54 | { | 54 | { |
55 | "id": "settings.app.form.minimizeToSystemTray", | 55 | "id": "settings.app.form.minimizeToSystemTray", |
56 | "defaultMessage": "!!!Minimize Ferdi to system tray", | 56 | "defaultMessage": "!!!Minimize Franz to system tray", |
57 | "file": "src/containers/settings/EditSettingsScreen.js", | 57 | "file": "src/containers/settings/EditSettingsScreen.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 40, | 59 | "line": 42, |
60 | "column": 24 | 60 | "column": 24 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 43, | 63 | "line": 45, |
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "settings.app.form.server", | ||
69 | "defaultMessage": "!!!Server", | ||
70 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
71 | "start": { | ||
72 | "line": 44, | ||
73 | "column": 10 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 47, | ||
77 | "column": 3 | 64 | "column": 3 |
78 | } | 65 | } |
79 | }, | 66 | }, |
@@ -82,11 +69,11 @@ | |||
82 | "defaultMessage": "!!!Language", | 69 | "defaultMessage": "!!!Language", |
83 | "file": "src/containers/settings/EditSettingsScreen.js", | 70 | "file": "src/containers/settings/EditSettingsScreen.js", |
84 | "start": { | 71 | "start": { |
85 | "line": 48, | 72 | "line": 46, |
86 | "column": 12 | 73 | "column": 12 |
87 | }, | 74 | }, |
88 | "end": { | 75 | "end": { |
89 | "line": 51, | 76 | "line": 49, |
90 | "column": 3 | 77 | "column": 3 |
91 | } | 78 | } |
92 | }, | 79 | }, |
@@ -95,11 +82,11 @@ | |||
95 | "defaultMessage": "!!!Dark Mode", | 82 | "defaultMessage": "!!!Dark Mode", |
96 | "file": "src/containers/settings/EditSettingsScreen.js", | 83 | "file": "src/containers/settings/EditSettingsScreen.js", |
97 | "start": { | 84 | "start": { |
98 | "line": 52, | 85 | "line": 50, |
99 | "column": 12 | 86 | "column": 12 |
100 | }, | 87 | }, |
101 | "end": { | 88 | "end": { |
102 | "line": 55, | 89 | "line": 53, |
103 | "column": 3 | 90 | "column": 3 |
104 | } | 91 | } |
105 | }, | 92 | }, |
@@ -108,11 +95,11 @@ | |||
108 | "defaultMessage": "!!!Display disabled services tabs", | 95 | "defaultMessage": "!!!Display disabled services tabs", |
109 | "file": "src/containers/settings/EditSettingsScreen.js", | 96 | "file": "src/containers/settings/EditSettingsScreen.js", |
110 | "start": { | 97 | "start": { |
111 | "line": 56, | 98 | "line": 54, |
112 | "column": 24 | 99 | "column": 24 |
113 | }, | 100 | }, |
114 | "end": { | 101 | "end": { |
115 | "line": 59, | 102 | "line": 57, |
116 | "column": 3 | 103 | "column": 3 |
117 | } | 104 | } |
118 | }, | 105 | }, |
@@ -121,11 +108,11 @@ | |||
121 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", | 108 | "defaultMessage": "!!!Show unread message badge when notifications are disabled", |
122 | "file": "src/containers/settings/EditSettingsScreen.js", | 109 | "file": "src/containers/settings/EditSettingsScreen.js", |
123 | "start": { | 110 | "start": { |
124 | "line": 60, | 111 | "line": 58, |
125 | "column": 29 | 112 | "column": 29 |
126 | }, | 113 | }, |
127 | "end": { | 114 | "end": { |
128 | "line": 63, | 115 | "line": 61, |
129 | "column": 3 | 116 | "column": 3 |
130 | } | 117 | } |
131 | }, | 118 | }, |
@@ -134,11 +121,11 @@ | |||
134 | "defaultMessage": "!!!Enable spell checking", | 121 | "defaultMessage": "!!!Enable spell checking", |
135 | "file": "src/containers/settings/EditSettingsScreen.js", | 122 | "file": "src/containers/settings/EditSettingsScreen.js", |
136 | "start": { | 123 | "start": { |
137 | "line": 64, | 124 | "line": 62, |
138 | "column": 23 | 125 | "column": 23 |
139 | }, | 126 | }, |
140 | "end": { | 127 | "end": { |
141 | "line": 67, | 128 | "line": 65, |
142 | "column": 3 | 129 | "column": 3 |
143 | } | 130 | } |
144 | }, | 131 | }, |
@@ -147,11 +134,11 @@ | |||
147 | "defaultMessage": "!!!Enable GPU Acceleration", | 134 | "defaultMessage": "!!!Enable GPU Acceleration", |
148 | "file": "src/containers/settings/EditSettingsScreen.js", | 135 | "file": "src/containers/settings/EditSettingsScreen.js", |
149 | "start": { | 136 | "start": { |
150 | "line": 68, | 137 | "line": 66, |
151 | "column": 25 | 138 | "column": 25 |
152 | }, | 139 | }, |
153 | "end": { | 140 | "end": { |
154 | "line": 71, | 141 | "line": 69, |
155 | "column": 3 | 142 | "column": 3 |
156 | } | 143 | } |
157 | }, | 144 | }, |
@@ -160,11 +147,37 @@ | |||
160 | "defaultMessage": "!!!Include beta versions", | 147 | "defaultMessage": "!!!Include beta versions", |
161 | "file": "src/containers/settings/EditSettingsScreen.js", | 148 | "file": "src/containers/settings/EditSettingsScreen.js", |
162 | "start": { | 149 | "start": { |
163 | "line": 72, | 150 | "line": 70, |
164 | "column": 8 | 151 | "column": 8 |
165 | }, | 152 | }, |
166 | "end": { | 153 | "end": { |
167 | "line": 75, | 154 | "line": 73, |
155 | "column": 3 | ||
156 | } | ||
157 | }, | ||
158 | { | ||
159 | "id": "settings.app.form.enableTodos", | ||
160 | "defaultMessage": "!!!Enable Franz Todos", | ||
161 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
162 | "start": { | ||
163 | "line": 74, | ||
164 | "column": 15 | ||
165 | }, | ||
166 | "end": { | ||
167 | "line": 77, | ||
168 | "column": 3 | ||
169 | } | ||
170 | }, | ||
171 | { | ||
172 | "id": "settings.app.form.keepAllWorkspacesLoaded", | ||
173 | "defaultMessage": "!!!Keep all workspaces loaded", | ||
174 | "file": "src/containers/settings/EditSettingsScreen.js", | ||
175 | "start": { | ||
176 | "line": 78, | ||
177 | "column": 27 | ||
178 | }, | ||
179 | "end": { | ||
180 | "line": 81, | ||
168 | "column": 3 | 181 | "column": 3 |
169 | } | 182 | } |
170 | } | 183 | } |
diff --git a/src/i18n/messages/src/features/delayApp/Component.json b/src/i18n/messages/src/features/delayApp/Component.json index 2a3bd1fb0..77fabf236 100644 --- a/src/i18n/messages/src/features/delayApp/Component.json +++ b/src/i18n/messages/src/features/delayApp/Component.json | |||
@@ -4,24 +4,50 @@ | |||
4 | "defaultMessage": "!!!Please purchase license to skip waiting", | 4 | "defaultMessage": "!!!Please purchase license to skip waiting", |
5 | "file": "src/features/delayApp/Component.js", | 5 | "file": "src/features/delayApp/Component.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 13, | 7 | "line": 14, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 16, | 11 | "line": 17, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
15 | { | 15 | { |
16 | "id": "feature.delayApp.action", | 16 | "id": "feature.delayApp.trial.headline", |
17 | "defaultMessage": "!!!Get a Ferdi Supporter License", | 17 | "defaultMessage": "!!!Get the free Franz Professional 14 day trial and skip the line", |
18 | "file": "src/features/delayApp/Component.js", | 18 | "file": "src/features/delayApp/Component.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 17, | 20 | "line": 18, |
21 | "column": 17 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 21, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "feature.delayApp.upgrade.action", | ||
30 | "defaultMessage": "!!!Get a Franz Supporter License", | ||
31 | "file": "src/features/delayApp/Component.js", | ||
32 | "start": { | ||
33 | "line": 22, | ||
21 | "column": 10 | 34 | "column": 10 |
22 | }, | 35 | }, |
23 | "end": { | 36 | "end": { |
24 | "line": 20, | 37 | "line": 25, |
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "feature.delayApp.trial.action", | ||
43 | "defaultMessage": "!!!Yes, I want the free 14 day trial of Franz Professional", | ||
44 | "file": "src/features/delayApp/Component.js", | ||
45 | "start": { | ||
46 | "line": 26, | ||
47 | "column": 15 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 29, | ||
25 | "column": 3 | 51 | "column": 3 |
26 | } | 52 | } |
27 | }, | 53 | }, |
@@ -30,11 +56,11 @@ | |||
30 | "defaultMessage": "!!!Ferdi will continue in {seconds} seconds.", | 56 | "defaultMessage": "!!!Ferdi will continue in {seconds} seconds.", |
31 | "file": "src/features/delayApp/Component.js", | 57 | "file": "src/features/delayApp/Component.js", |
32 | "start": { | 58 | "start": { |
33 | "line": 21, | 59 | "line": 30, |
34 | "column": 8 | 60 | "column": 8 |
35 | }, | 61 | }, |
36 | "end": { | 62 | "end": { |
37 | "line": 24, | 63 | "line": 33, |
38 | "column": 3 | 64 | "column": 3 |
39 | } | 65 | } |
40 | } | 66 | } |
diff --git a/src/i18n/messages/src/features/serviceLimit/components/AnnouncementScreen.json b/src/i18n/messages/src/features/serviceLimit/components/AnnouncementScreen.json new file mode 100644 index 000000000..e6e3cef99 --- /dev/null +++ b/src/i18n/messages/src/features/serviceLimit/components/AnnouncementScreen.json | |||
@@ -0,0 +1,15 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "feature.announcements.changelog.headline", | ||
4 | "defaultMessage": "!!!Changes in Franz {version}", | ||
5 | "file": "src/features/serviceLimit/components/AnnouncementScreen.js", | ||
6 | "start": { | ||
7 | "line": 20, | ||
8 | "column": 12 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 23, | ||
12 | "column": 3 | ||
13 | } | ||
14 | } | ||
15 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/features/serviceLimit/components/LimitReachedInfobox.json b/src/i18n/messages/src/features/serviceLimit/components/LimitReachedInfobox.json new file mode 100644 index 000000000..e35ad8dd8 --- /dev/null +++ b/src/i18n/messages/src/features/serviceLimit/components/LimitReachedInfobox.json | |||
@@ -0,0 +1,28 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "feature.serviceLimit.limitReached", | ||
4 | "defaultMessage": "!!!You have added {amount} of {limit} services. Please upgrade your account to add more services.", | ||
5 | "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", | ||
6 | "start": { | ||
7 | "line": 9, | ||
8 | "column": 16 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 12, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "premiumFeature.button.upgradeAccount", | ||
17 | "defaultMessage": "!!!Upgrade account", | ||
18 | "file": "src/features/serviceLimit/components/LimitReachedInfobox.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/features/shareFranz/Component.json b/src/i18n/messages/src/features/shareFranz/Component.json index a4ddd37b6..402865ec5 100644 --- a/src/i18n/messages/src/features/shareFranz/Component.json +++ b/src/i18n/messages/src/features/shareFranz/Component.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Ferdi is better together!", | 4 | "defaultMessage": "!!!Ferdi is better together!", |
5 | "file": "src/features/shareFranz/Component.js", | 5 | "file": "src/features/shareFranz/Component.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 14, | 7 | "line": 17, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 17, | 11 | "line": 20, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", | 17 | "defaultMessage": "!!!Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", |
18 | "file": "src/features/shareFranz/Component.js", | 18 | "file": "src/features/shareFranz/Component.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 18, | 20 | "line": 21, |
21 | "column": 8 | 21 | "column": 8 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 21, | 24 | "line": 24, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Share as email", | 30 | "defaultMessage": "!!!Share as email", |
31 | "file": "src/features/shareFranz/Component.js", | 31 | "file": "src/features/shareFranz/Component.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 22, | 33 | "line": 25, |
34 | "column": 16 | 34 | "column": 16 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 25, | 37 | "line": 28, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Share on Facebook", | 43 | "defaultMessage": "!!!Share on Facebook", |
44 | "file": "src/features/shareFranz/Component.js", | 44 | "file": "src/features/shareFranz/Component.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 26, | 46 | "line": 29, |
47 | "column": 19 | 47 | "column": 19 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 29, | 50 | "line": 32, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Share on Twitter", | 56 | "defaultMessage": "!!!Share on Twitter", |
57 | "file": "src/features/shareFranz/Component.js", | 57 | "file": "src/features/shareFranz/Component.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 30, | 59 | "line": 33, |
60 | "column": 18 | 60 | "column": 18 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 33, | 63 | "line": 36, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 69 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
70 | "file": "src/features/shareFranz/Component.js", | 70 | "file": "src/features/shareFranz/Component.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 34, | 72 | "line": 37, |
73 | "column": 18 | 73 | "column": 18 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 37, | 76 | "line": 40, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", | 82 | "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", |
83 | "file": "src/features/shareFranz/Component.js", | 83 | "file": "src/features/shareFranz/Component.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 38, | 85 | "line": 41, |
86 | "column": 20 | 86 | "column": 20 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 41, | 89 | "line": 44, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | } | 92 | } |
diff --git a/src/i18n/messages/src/features/todos/components/TodosWebview.json b/src/i18n/messages/src/features/todos/components/TodosWebview.json new file mode 100644 index 000000000..7f230e82a --- /dev/null +++ b/src/i18n/messages/src/features/todos/components/TodosWebview.json | |||
@@ -0,0 +1,41 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "feature.todos.premium.info", | ||
4 | "defaultMessage": "!!!Franz Todos are available to premium users now!", | ||
5 | "file": "src/features/todos/components/TodosWebview.js", | ||
6 | "start": { | ||
7 | "line": 15, | ||
8 | "column": 15 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 18, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "feature.todos.premium.upgrade", | ||
17 | "defaultMessage": "!!!Upgrade Account", | ||
18 | "file": "src/features/todos/components/TodosWebview.js", | ||
19 | "start": { | ||
20 | "line": 19, | ||
21 | "column": 14 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 22, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "feature.todos.premium.rollout", | ||
30 | "defaultMessage": "!!!Everyone else will have to wait a little longer.", | ||
31 | "file": "src/features/todos/components/TodosWebview.js", | ||
32 | "start": { | ||
33 | "line": 23, | ||
34 | "column": 15 | ||
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/workspaces/components/WorkspaceDrawer.json b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json index e91bd85f8..9f0935620 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspaceDrawer.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Workspaces", | 4 | "defaultMessage": "!!!Workspaces", |
5 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 5 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 15, | 7 | "line": 16, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 18, | 11 | "line": 19, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!All services", | 17 | "defaultMessage": "!!!All services", |
18 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 18 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 19, | 20 | "line": 20, |
21 | "column": 15 | 21 | "column": 15 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 22, | 24 | "line": 23, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Workspaces settings", | 30 | "defaultMessage": "!!!Workspaces settings", |
31 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 31 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 23, | 33 | "line": 24, |
34 | "column": 29 | 34 | "column": 29 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 26, | 37 | "line": 27, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Info about workspace feature", | 43 | "defaultMessage": "!!!Info about workspace feature", |
44 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 44 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 27, | 46 | "line": 28, |
47 | "column": 24 | 47 | "column": 24 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 30, | 50 | "line": 31, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Create your first workspace", | 56 | "defaultMessage": "!!!Create your first workspace", |
57 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 57 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 31, | 59 | "line": 32, |
60 | "column": 25 | 60 | "column": 25 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 34, | 63 | "line": 35, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Reactivate premium account", | 69 | "defaultMessage": "!!!Reactivate premium account", |
70 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 70 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 35, | 72 | "line": 36, |
73 | "column": 28 | 73 | "column": 28 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 38, | 76 | "line": 39, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!add new workspace", | 82 | "defaultMessage": "!!!add new workspace", |
83 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 83 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 39, | 85 | "line": 40, |
86 | "column": 24 | 86 | "column": 24 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 42, | 89 | "line": 43, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Premium feature", | 95 | "defaultMessage": "!!!Premium feature", |
96 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", | 96 | "file": "src/features/workspaces/components/WorkspaceDrawer.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 43, | 98 | "line": 44, |
99 | "column": 23 | 99 | "column": 23 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 46, | 102 | "line": 47, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | } | 105 | } |
diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json index 127bf136b..4111ba760 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Your workspaces", | 4 | "defaultMessage": "!!!Your workspaces", |
5 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 5 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 17, | 7 | "line": 19, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 20, | 11 | "line": 22, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!You haven't added any workspaces yet.", | 17 | "defaultMessage": "!!!You haven't added any workspaces yet.", |
18 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 18 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 21, | 20 | "line": 23, |
21 | "column": 19 | 21 | "column": 19 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 24, | 24 | "line": 26, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Could not load your workspaces", | 30 | "defaultMessage": "!!!Could not load your workspaces", |
31 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 31 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 25, | 33 | "line": 27, |
34 | "column": 27 | 34 | "column": 27 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 28, | 37 | "line": 30, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Try again", | 43 | "defaultMessage": "!!!Try again", |
44 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 44 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 29, | 46 | "line": 31, |
47 | "column": 23 | 47 | "column": 23 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 32, | 50 | "line": 34, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Your changes have been saved", | 56 | "defaultMessage": "!!!Your changes have been saved", |
57 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 57 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 33, | 59 | "line": 35, |
60 | "column": 15 | 60 | "column": 15 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 36, | 63 | "line": 38, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Workspace has been deleted", | 69 | "defaultMessage": "!!!Workspace has been deleted", |
70 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 70 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 37, | 72 | "line": 39, |
73 | "column": 15 | 73 | "column": 15 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 40, | 76 | "line": 42, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Info about workspace feature", | 82 | "defaultMessage": "!!!Info about workspace feature", |
83 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 83 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 41, | 85 | "line": 43, |
86 | "column": 24 | 86 | "column": 24 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 44, | 89 | "line": 46, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Less is More: Introducing Ferdi Workspaces", | 95 | "defaultMessage": "!!!Less is More: Introducing Ferdi Workspaces", |
96 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", | 96 | "file": "src/features/workspaces/components/WorkspacesDashboard.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 45, | 98 | "line": 47, |
99 | "column": 28 | 99 | "column": 28 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 48, | 102 | "line": 50, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | } | 105 | } |
diff --git a/src/i18n/messages/src/helpers/plan-helpers.json b/src/i18n/messages/src/helpers/plan-helpers.json new file mode 100644 index 000000000..df8ee19e3 --- /dev/null +++ b/src/i18n/messages/src/helpers/plan-helpers.json | |||
@@ -0,0 +1,54 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "pricing.plan.pro", | ||
4 | "defaultMessage": "!!!Franz Professional", | ||
5 | "file": "src/helpers/plan-helpers.js", | ||
6 | "start": { | ||
7 | "line": 5, | ||
8 | "column": 15 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 8, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "pricing.plan.personal", | ||
17 | "defaultMessage": "!!!Franz Personal", | ||
18 | "file": "src/helpers/plan-helpers.js", | ||
19 | "start": { | ||
20 | "line": 9, | ||
21 | "column": 20 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 12, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "pricing.plan.free", | ||
30 | "defaultMessage": "!!!Franz Free", | ||
31 | "file": "src/helpers/plan-helpers.js", | ||
32 | "start": { | ||
33 | "line": 13, | ||
34 | "column": 16 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 16, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "pricing.plan.legacy", | ||
43 | "defaultMessage": "!!!Franz Premium", | ||
44 | "file": "src/helpers/plan-helpers.js", | ||
45 | "start": { | ||
46 | "line": 17, | ||
47 | "column": 18 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 20, | ||
51 | "column": 3 | ||
52 | } | ||
53 | } | ||
54 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/helpers/pricing-helpers.json b/src/i18n/messages/src/helpers/pricing-helpers.json new file mode 100644 index 000000000..4030a3e3b --- /dev/null +++ b/src/i18n/messages/src/helpers/pricing-helpers.json | |||
@@ -0,0 +1,80 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "pricing.plan.pro-yearly", | ||
4 | "defaultMessage": "!!!Franz Professional Yearly", | ||
5 | "file": "src/helpers/pricing-helpers.js", | ||
6 | "start": { | ||
7 | "line": 5, | ||
8 | "column": 22 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 8, | ||
12 | "column": 3 | ||
13 | } | ||
14 | }, | ||
15 | { | ||
16 | "id": "pricing.plan.pro-monthly", | ||
17 | "defaultMessage": "!!!Franz Professional Monthly", | ||
18 | "file": "src/helpers/pricing-helpers.js", | ||
19 | "start": { | ||
20 | "line": 9, | ||
21 | "column": 23 | ||
22 | }, | ||
23 | "end": { | ||
24 | "line": 12, | ||
25 | "column": 3 | ||
26 | } | ||
27 | }, | ||
28 | { | ||
29 | "id": "pricing.plan.personal-yearly", | ||
30 | "defaultMessage": "!!!Franz Personal Yearly", | ||
31 | "file": "src/helpers/pricing-helpers.js", | ||
32 | "start": { | ||
33 | "line": 13, | ||
34 | "column": 27 | ||
35 | }, | ||
36 | "end": { | ||
37 | "line": 16, | ||
38 | "column": 3 | ||
39 | } | ||
40 | }, | ||
41 | { | ||
42 | "id": "pricing.plan.personal-monthly", | ||
43 | "defaultMessage": "!!!Franz Personal Monthly", | ||
44 | "file": "src/helpers/pricing-helpers.js", | ||
45 | "start": { | ||
46 | "line": 17, | ||
47 | "column": 28 | ||
48 | }, | ||
49 | "end": { | ||
50 | "line": 20, | ||
51 | "column": 3 | ||
52 | } | ||
53 | }, | ||
54 | { | ||
55 | "id": "pricing.plan.free", | ||
56 | "defaultMessage": "!!!Franz Free", | ||
57 | "file": "src/helpers/pricing-helpers.js", | ||
58 | "start": { | ||
59 | "line": 21, | ||
60 | "column": 16 | ||
61 | }, | ||
62 | "end": { | ||
63 | "line": 24, | ||
64 | "column": 3 | ||
65 | } | ||
66 | }, | ||
67 | { | ||
68 | "id": "pricing.plan.legacy", | ||
69 | "defaultMessage": "!!!Franz Premium", | ||
70 | "file": "src/helpers/pricing-helpers.js", | ||
71 | "start": { | ||
72 | "line": 25, | ||
73 | "column": 18 | ||
74 | }, | ||
75 | "end": { | ||
76 | "line": 28, | ||
77 | "column": 3 | ||
78 | } | ||
79 | } | ||
80 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/i18n/globalMessages.json b/src/i18n/messages/src/i18n/globalMessages.json index f94dcdf17..903de64cb 100644 --- a/src/i18n/messages/src/i18n/globalMessages.json +++ b/src/i18n/messages/src/i18n/globalMessages.json | |||
@@ -76,5 +76,18 @@ | |||
76 | "line": 27, | 76 | "line": 27, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | ||
80 | { | ||
81 | "id": "global.franzProRequired", | ||
82 | "defaultMessage": "!!!Franz Professional Required", | ||
83 | "file": "src/i18n/globalMessages.js", | ||
84 | "start": { | ||
85 | "line": 28, | ||
86 | "column": 15 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 31, | ||
90 | "column": 3 | ||
91 | } | ||
79 | } | 92 | } |
80 | ] \ No newline at end of file | 93 | ] \ No newline at end of file |
diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json index a41c80c1c..26850c5b3 100644 --- a/src/i18n/messages/src/lib/Menu.json +++ b/src/i18n/messages/src/lib/Menu.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Edit", | 4 | "defaultMessage": "!!!Edit", |
5 | "file": "src/lib/Menu.js", | 5 | "file": "src/lib/Menu.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 14, | 7 | "line": 17, |
8 | "column": 8 | 8 | "column": 8 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 17, | 11 | "line": 20, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Undo", | 17 | "defaultMessage": "!!!Undo", |
18 | "file": "src/lib/Menu.js", | 18 | "file": "src/lib/Menu.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 18, | 20 | "line": 21, |
21 | "column": 8 | 21 | "column": 8 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 21, | 24 | "line": 24, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!!Redo", | 30 | "defaultMessage": "!!!Redo", |
31 | "file": "src/lib/Menu.js", | 31 | "file": "src/lib/Menu.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 22, | 33 | "line": 25, |
34 | "column": 8 | 34 | "column": 8 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 25, | 37 | "line": 28, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Cut", | 43 | "defaultMessage": "!!!Cut", |
44 | "file": "src/lib/Menu.js", | 44 | "file": "src/lib/Menu.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 26, | 46 | "line": 29, |
47 | "column": 7 | 47 | "column": 7 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 29, | 50 | "line": 32, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Copy", | 56 | "defaultMessage": "!!!Copy", |
57 | "file": "src/lib/Menu.js", | 57 | "file": "src/lib/Menu.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 30, | 59 | "line": 33, |
60 | "column": 8 | 60 | "column": 8 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 33, | 63 | "line": 36, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Paste", | 69 | "defaultMessage": "!!!Paste", |
70 | "file": "src/lib/Menu.js", | 70 | "file": "src/lib/Menu.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 34, | 72 | "line": 37, |
73 | "column": 9 | 73 | "column": 9 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 37, | 76 | "line": 40, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Paste And Match Style", | 82 | "defaultMessage": "!!!Paste And Match Style", |
83 | "file": "src/lib/Menu.js", | 83 | "file": "src/lib/Menu.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 38, | 85 | "line": 41, |
86 | "column": 22 | 86 | "column": 22 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 41, | 89 | "line": 44, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Delete", | 95 | "defaultMessage": "!!!Delete", |
96 | "file": "src/lib/Menu.js", | 96 | "file": "src/lib/Menu.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 42, | 98 | "line": 45, |
99 | "column": 10 | 99 | "column": 10 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 45, | 102 | "line": 48, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | }, | 105 | }, |
@@ -108,11 +108,11 @@ | |||
108 | "defaultMessage": "!!!Select All", | 108 | "defaultMessage": "!!!Select All", |
109 | "file": "src/lib/Menu.js", | 109 | "file": "src/lib/Menu.js", |
110 | "start": { | 110 | "start": { |
111 | "line": 46, | 111 | "line": 49, |
112 | "column": 13 | 112 | "column": 13 |
113 | }, | 113 | }, |
114 | "end": { | 114 | "end": { |
115 | "line": 49, | 115 | "line": 52, |
116 | "column": 3 | 116 | "column": 3 |
117 | } | 117 | } |
118 | }, | 118 | }, |
@@ -121,11 +121,11 @@ | |||
121 | "defaultMessage": "!!!Speech", | 121 | "defaultMessage": "!!!Speech", |
122 | "file": "src/lib/Menu.js", | 122 | "file": "src/lib/Menu.js", |
123 | "start": { | 123 | "start": { |
124 | "line": 50, | 124 | "line": 53, |
125 | "column": 10 | 125 | "column": 10 |
126 | }, | 126 | }, |
127 | "end": { | 127 | "end": { |
128 | "line": 53, | 128 | "line": 56, |
129 | "column": 3 | 129 | "column": 3 |
130 | } | 130 | } |
131 | }, | 131 | }, |
@@ -134,11 +134,11 @@ | |||
134 | "defaultMessage": "!!!Start Speaking", | 134 | "defaultMessage": "!!!Start Speaking", |
135 | "file": "src/lib/Menu.js", | 135 | "file": "src/lib/Menu.js", |
136 | "start": { | 136 | "start": { |
137 | "line": 54, | 137 | "line": 57, |
138 | "column": 17 | 138 | "column": 17 |
139 | }, | 139 | }, |
140 | "end": { | 140 | "end": { |
141 | "line": 57, | 141 | "line": 60, |
142 | "column": 3 | 142 | "column": 3 |
143 | } | 143 | } |
144 | }, | 144 | }, |
@@ -147,11 +147,11 @@ | |||
147 | "defaultMessage": "!!!Stop Speaking", | 147 | "defaultMessage": "!!!Stop Speaking", |
148 | "file": "src/lib/Menu.js", | 148 | "file": "src/lib/Menu.js", |
149 | "start": { | 149 | "start": { |
150 | "line": 58, | 150 | "line": 61, |
151 | "column": 16 | 151 | "column": 16 |
152 | }, | 152 | }, |
153 | "end": { | 153 | "end": { |
154 | "line": 61, | 154 | "line": 64, |
155 | "column": 3 | 155 | "column": 3 |
156 | } | 156 | } |
157 | }, | 157 | }, |
@@ -160,11 +160,11 @@ | |||
160 | "defaultMessage": "!!!Start Dictation", | 160 | "defaultMessage": "!!!Start Dictation", |
161 | "file": "src/lib/Menu.js", | 161 | "file": "src/lib/Menu.js", |
162 | "start": { | 162 | "start": { |
163 | "line": 62, | 163 | "line": 65, |
164 | "column": 18 | 164 | "column": 18 |
165 | }, | 165 | }, |
166 | "end": { | 166 | "end": { |
167 | "line": 65, | 167 | "line": 68, |
168 | "column": 3 | 168 | "column": 3 |
169 | } | 169 | } |
170 | }, | 170 | }, |
@@ -173,11 +173,11 @@ | |||
173 | "defaultMessage": "!!!Emoji & Symbols", | 173 | "defaultMessage": "!!!Emoji & Symbols", |
174 | "file": "src/lib/Menu.js", | 174 | "file": "src/lib/Menu.js", |
175 | "start": { | 175 | "start": { |
176 | "line": 66, | 176 | "line": 69, |
177 | "column": 16 | 177 | "column": 16 |
178 | }, | 178 | }, |
179 | "end": { | 179 | "end": { |
180 | "line": 69, | 180 | "line": 72, |
181 | "column": 3 | 181 | "column": 3 |
182 | } | 182 | } |
183 | }, | 183 | }, |
@@ -186,11 +186,11 @@ | |||
186 | "defaultMessage": "!!!Actual Size", | 186 | "defaultMessage": "!!!Actual Size", |
187 | "file": "src/lib/Menu.js", | 187 | "file": "src/lib/Menu.js", |
188 | "start": { | 188 | "start": { |
189 | "line": 70, | 189 | "line": 73, |
190 | "column": 13 | 190 | "column": 13 |
191 | }, | 191 | }, |
192 | "end": { | 192 | "end": { |
193 | "line": 73, | 193 | "line": 76, |
194 | "column": 3 | 194 | "column": 3 |
195 | } | 195 | } |
196 | }, | 196 | }, |
@@ -199,11 +199,11 @@ | |||
199 | "defaultMessage": "!!!Zoom In", | 199 | "defaultMessage": "!!!Zoom In", |
200 | "file": "src/lib/Menu.js", | 200 | "file": "src/lib/Menu.js", |
201 | "start": { | 201 | "start": { |
202 | "line": 74, | 202 | "line": 77, |
203 | "column": 10 | 203 | "column": 10 |
204 | }, | 204 | }, |
205 | "end": { | 205 | "end": { |
206 | "line": 77, | 206 | "line": 80, |
207 | "column": 3 | 207 | "column": 3 |
208 | } | 208 | } |
209 | }, | 209 | }, |
@@ -212,11 +212,11 @@ | |||
212 | "defaultMessage": "!!!Zoom Out", | 212 | "defaultMessage": "!!!Zoom Out", |
213 | "file": "src/lib/Menu.js", | 213 | "file": "src/lib/Menu.js", |
214 | "start": { | 214 | "start": { |
215 | "line": 78, | 215 | "line": 81, |
216 | "column": 11 | 216 | "column": 11 |
217 | }, | 217 | }, |
218 | "end": { | 218 | "end": { |
219 | "line": 81, | 219 | "line": 84, |
220 | "column": 3 | 220 | "column": 3 |
221 | } | 221 | } |
222 | }, | 222 | }, |
@@ -225,11 +225,11 @@ | |||
225 | "defaultMessage": "!!!Enter Full Screen", | 225 | "defaultMessage": "!!!Enter Full Screen", |
226 | "file": "src/lib/Menu.js", | 226 | "file": "src/lib/Menu.js", |
227 | "start": { | 227 | "start": { |
228 | "line": 82, | 228 | "line": 85, |
229 | "column": 19 | 229 | "column": 19 |
230 | }, | 230 | }, |
231 | "end": { | 231 | "end": { |
232 | "line": 85, | 232 | "line": 88, |
233 | "column": 3 | 233 | "column": 3 |
234 | } | 234 | } |
235 | }, | 235 | }, |
@@ -238,11 +238,11 @@ | |||
238 | "defaultMessage": "!!!Exit Full Screen", | 238 | "defaultMessage": "!!!Exit Full Screen", |
239 | "file": "src/lib/Menu.js", | 239 | "file": "src/lib/Menu.js", |
240 | "start": { | 240 | "start": { |
241 | "line": 86, | 241 | "line": 89, |
242 | "column": 18 | 242 | "column": 18 |
243 | }, | 243 | }, |
244 | "end": { | 244 | "end": { |
245 | "line": 89, | 245 | "line": 92, |
246 | "column": 3 | 246 | "column": 3 |
247 | } | 247 | } |
248 | }, | 248 | }, |
@@ -251,11 +251,11 @@ | |||
251 | "defaultMessage": "!!!Toggle Full Screen", | 251 | "defaultMessage": "!!!Toggle Full Screen", |
252 | "file": "src/lib/Menu.js", | 252 | "file": "src/lib/Menu.js", |
253 | "start": { | 253 | "start": { |
254 | "line": 90, | 254 | "line": 93, |
255 | "column": 20 | 255 | "column": 20 |
256 | }, | 256 | }, |
257 | "end": { | 257 | "end": { |
258 | "line": 93, | 258 | "line": 96, |
259 | "column": 3 | 259 | "column": 3 |
260 | } | 260 | } |
261 | }, | 261 | }, |
@@ -264,11 +264,24 @@ | |||
264 | "defaultMessage": "!!!Toggle Developer Tools", | 264 | "defaultMessage": "!!!Toggle Developer Tools", |
265 | "file": "src/lib/Menu.js", | 265 | "file": "src/lib/Menu.js", |
266 | "start": { | 266 | "start": { |
267 | "line": 94, | 267 | "line": 97, |
268 | "column": 18 | 268 | "column": 18 |
269 | }, | 269 | }, |
270 | "end": { | 270 | "end": { |
271 | "line": 97, | 271 | "line": 100, |
272 | "column": 3 | ||
273 | } | ||
274 | }, | ||
275 | { | ||
276 | "id": "menu.view.toggleTodosDevTools", | ||
277 | "defaultMessage": "!!!Toggle Todos Developer Tools", | ||
278 | "file": "src/lib/Menu.js", | ||
279 | "start": { | ||
280 | "line": 101, | ||
281 | "column": 23 | ||
282 | }, | ||
283 | "end": { | ||
284 | "line": 104, | ||
272 | "column": 3 | 285 | "column": 3 |
273 | } | 286 | } |
274 | }, | 287 | }, |
@@ -277,11 +290,11 @@ | |||
277 | "defaultMessage": "!!!Toggle Service Developer Tools", | 290 | "defaultMessage": "!!!Toggle Service Developer Tools", |
278 | "file": "src/lib/Menu.js", | 291 | "file": "src/lib/Menu.js", |
279 | "start": { | 292 | "start": { |
280 | "line": 98, | 293 | "line": 105, |
281 | "column": 25 | 294 | "column": 25 |
282 | }, | 295 | }, |
283 | "end": { | 296 | "end": { |
284 | "line": 101, | 297 | "line": 108, |
285 | "column": 3 | 298 | "column": 3 |
286 | } | 299 | } |
287 | }, | 300 | }, |
@@ -290,11 +303,11 @@ | |||
290 | "defaultMessage": "!!!Reload Service", | 303 | "defaultMessage": "!!!Reload Service", |
291 | "file": "src/lib/Menu.js", | 304 | "file": "src/lib/Menu.js", |
292 | "start": { | 305 | "start": { |
293 | "line": 102, | 306 | "line": 109, |
294 | "column": 17 | 307 | "column": 17 |
295 | }, | 308 | }, |
296 | "end": { | 309 | "end": { |
297 | "line": 105, | 310 | "line": 112, |
298 | "column": 3 | 311 | "column": 3 |
299 | } | 312 | } |
300 | }, | 313 | }, |
@@ -303,11 +316,11 @@ | |||
303 | "defaultMessage": "!!!Reload Franz", | 316 | "defaultMessage": "!!!Reload Franz", |
304 | "file": "src/lib/Menu.js", | 317 | "file": "src/lib/Menu.js", |
305 | "start": { | 318 | "start": { |
306 | "line": 106, | 319 | "line": 113, |
307 | "column": 15 | 320 | "column": 15 |
308 | }, | 321 | }, |
309 | "end": { | 322 | "end": { |
310 | "line": 109, | 323 | "line": 116, |
311 | "column": 3 | 324 | "column": 3 |
312 | } | 325 | } |
313 | }, | 326 | }, |
@@ -316,11 +329,11 @@ | |||
316 | "defaultMessage": "!!!Minimize", | 329 | "defaultMessage": "!!!Minimize", |
317 | "file": "src/lib/Menu.js", | 330 | "file": "src/lib/Menu.js", |
318 | "start": { | 331 | "start": { |
319 | "line": 110, | 332 | "line": 117, |
320 | "column": 12 | 333 | "column": 12 |
321 | }, | 334 | }, |
322 | "end": { | 335 | "end": { |
323 | "line": 113, | 336 | "line": 120, |
324 | "column": 3 | 337 | "column": 3 |
325 | } | 338 | } |
326 | }, | 339 | }, |
@@ -329,11 +342,11 @@ | |||
329 | "defaultMessage": "!!!Close", | 342 | "defaultMessage": "!!!Close", |
330 | "file": "src/lib/Menu.js", | 343 | "file": "src/lib/Menu.js", |
331 | "start": { | 344 | "start": { |
332 | "line": 114, | 345 | "line": 121, |
333 | "column": 9 | 346 | "column": 9 |
334 | }, | 347 | }, |
335 | "end": { | 348 | "end": { |
336 | "line": 117, | 349 | "line": 124, |
337 | "column": 3 | 350 | "column": 3 |
338 | } | 351 | } |
339 | }, | 352 | }, |
@@ -342,11 +355,11 @@ | |||
342 | "defaultMessage": "!!!Learn More", | 355 | "defaultMessage": "!!!Learn More", |
343 | "file": "src/lib/Menu.js", | 356 | "file": "src/lib/Menu.js", |
344 | "start": { | 357 | "start": { |
345 | "line": 118, | 358 | "line": 125, |
346 | "column": 13 | 359 | "column": 13 |
347 | }, | 360 | }, |
348 | "end": { | 361 | "end": { |
349 | "line": 121, | 362 | "line": 128, |
350 | "column": 3 | 363 | "column": 3 |
351 | } | 364 | } |
352 | }, | 365 | }, |
@@ -355,11 +368,11 @@ | |||
355 | "defaultMessage": "!!!Changelog", | 368 | "defaultMessage": "!!!Changelog", |
356 | "file": "src/lib/Menu.js", | 369 | "file": "src/lib/Menu.js", |
357 | "start": { | 370 | "start": { |
358 | "line": 122, | 371 | "line": 129, |
359 | "column": 13 | 372 | "column": 13 |
360 | }, | 373 | }, |
361 | "end": { | 374 | "end": { |
362 | "line": 125, | 375 | "line": 132, |
363 | "column": 3 | 376 | "column": 3 |
364 | } | 377 | } |
365 | }, | 378 | }, |
@@ -368,11 +381,11 @@ | |||
368 | "defaultMessage": "!!!Support", | 381 | "defaultMessage": "!!!Support", |
369 | "file": "src/lib/Menu.js", | 382 | "file": "src/lib/Menu.js", |
370 | "start": { | 383 | "start": { |
371 | "line": 126, | 384 | "line": 133, |
372 | "column": 11 | 385 | "column": 11 |
373 | }, | 386 | }, |
374 | "end": { | 387 | "end": { |
375 | "line": 129, | 388 | "line": 136, |
376 | "column": 3 | 389 | "column": 3 |
377 | } | 390 | } |
378 | }, | 391 | }, |
@@ -381,24 +394,24 @@ | |||
381 | "defaultMessage": "!!!Copy Debug Information", | 394 | "defaultMessage": "!!!Copy Debug Information", |
382 | "file": "src/lib/Menu.js", | 395 | "file": "src/lib/Menu.js", |
383 | "start": { | 396 | "start": { |
384 | "line": 130, | 397 | "line": 137, |
385 | "column": 13 | 398 | "column": 13 |
386 | }, | 399 | }, |
387 | "end": { | 400 | "end": { |
388 | "line": 133, | 401 | "line": 140, |
389 | "column": 3 | 402 | "column": 3 |
390 | } | 403 | } |
391 | }, | 404 | }, |
392 | { | 405 | { |
393 | "id": "menu.help.debugInfoCopiedHeadline", | 406 | "id": "menu.help.debugInfoCopiedHeadline", |
394 | "defaultMessage": "!!!Ferdi Debug Information", | 407 | "defaultMessage": "!!!Franz Debug Information", |
395 | "file": "src/lib/Menu.js", | 408 | "file": "src/lib/Menu.js", |
396 | "start": { | 409 | "start": { |
397 | "line": 134, | 410 | "line": 141, |
398 | "column": 27 | 411 | "column": 27 |
399 | }, | 412 | }, |
400 | "end": { | 413 | "end": { |
401 | "line": 137, | 414 | "line": 144, |
402 | "column": 3 | 415 | "column": 3 |
403 | } | 416 | } |
404 | }, | 417 | }, |
@@ -407,11 +420,11 @@ | |||
407 | "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", | 420 | "defaultMessage": "!!!Your Debug Information has been copied to your clipboard.", |
408 | "file": "src/lib/Menu.js", | 421 | "file": "src/lib/Menu.js", |
409 | "start": { | 422 | "start": { |
410 | "line": 138, | 423 | "line": 145, |
411 | "column": 23 | 424 | "column": 23 |
412 | }, | 425 | }, |
413 | "end": { | 426 | "end": { |
414 | "line": 141, | 427 | "line": 148, |
415 | "column": 3 | 428 | "column": 3 |
416 | } | 429 | } |
417 | }, | 430 | }, |
@@ -420,11 +433,11 @@ | |||
420 | "defaultMessage": "!!!Terms of Service", | 433 | "defaultMessage": "!!!Terms of Service", |
421 | "file": "src/lib/Menu.js", | 434 | "file": "src/lib/Menu.js", |
422 | "start": { | 435 | "start": { |
423 | "line": 142, | 436 | "line": 149, |
424 | "column": 7 | 437 | "column": 7 |
425 | }, | 438 | }, |
426 | "end": { | 439 | "end": { |
427 | "line": 145, | 440 | "line": 152, |
428 | "column": 3 | 441 | "column": 3 |
429 | } | 442 | } |
430 | }, | 443 | }, |
@@ -433,11 +446,11 @@ | |||
433 | "defaultMessage": "!!!Privacy Statement", | 446 | "defaultMessage": "!!!Privacy Statement", |
434 | "file": "src/lib/Menu.js", | 447 | "file": "src/lib/Menu.js", |
435 | "start": { | 448 | "start": { |
436 | "line": 146, | 449 | "line": 153, |
437 | "column": 11 | 450 | "column": 11 |
438 | }, | 451 | }, |
439 | "end": { | 452 | "end": { |
440 | "line": 149, | 453 | "line": 156, |
441 | "column": 3 | 454 | "column": 3 |
442 | } | 455 | } |
443 | }, | 456 | }, |
@@ -446,11 +459,11 @@ | |||
446 | "defaultMessage": "!!!File", | 459 | "defaultMessage": "!!!File", |
447 | "file": "src/lib/Menu.js", | 460 | "file": "src/lib/Menu.js", |
448 | "start": { | 461 | "start": { |
449 | "line": 150, | 462 | "line": 157, |
450 | "column": 8 | 463 | "column": 8 |
451 | }, | 464 | }, |
452 | "end": { | 465 | "end": { |
453 | "line": 153, | 466 | "line": 160, |
454 | "column": 3 | 467 | "column": 3 |
455 | } | 468 | } |
456 | }, | 469 | }, |
@@ -459,11 +472,11 @@ | |||
459 | "defaultMessage": "!!!View", | 472 | "defaultMessage": "!!!View", |
460 | "file": "src/lib/Menu.js", | 473 | "file": "src/lib/Menu.js", |
461 | "start": { | 474 | "start": { |
462 | "line": 154, | 475 | "line": 161, |
463 | "column": 8 | 476 | "column": 8 |
464 | }, | 477 | }, |
465 | "end": { | 478 | "end": { |
466 | "line": 157, | 479 | "line": 164, |
467 | "column": 3 | 480 | "column": 3 |
468 | } | 481 | } |
469 | }, | 482 | }, |
@@ -472,11 +485,11 @@ | |||
472 | "defaultMessage": "!!!Services", | 485 | "defaultMessage": "!!!Services", |
473 | "file": "src/lib/Menu.js", | 486 | "file": "src/lib/Menu.js", |
474 | "start": { | 487 | "start": { |
475 | "line": 158, | 488 | "line": 165, |
476 | "column": 12 | 489 | "column": 12 |
477 | }, | 490 | }, |
478 | "end": { | 491 | "end": { |
479 | "line": 161, | 492 | "line": 168, |
480 | "column": 3 | 493 | "column": 3 |
481 | } | 494 | } |
482 | }, | 495 | }, |
@@ -485,11 +498,11 @@ | |||
485 | "defaultMessage": "!!!Window", | 498 | "defaultMessage": "!!!Window", |
486 | "file": "src/lib/Menu.js", | 499 | "file": "src/lib/Menu.js", |
487 | "start": { | 500 | "start": { |
488 | "line": 162, | 501 | "line": 169, |
489 | "column": 10 | 502 | "column": 10 |
490 | }, | 503 | }, |
491 | "end": { | 504 | "end": { |
492 | "line": 165, | 505 | "line": 172, |
493 | "column": 3 | 506 | "column": 3 |
494 | } | 507 | } |
495 | }, | 508 | }, |
@@ -498,11 +511,11 @@ | |||
498 | "defaultMessage": "!!!Help", | 511 | "defaultMessage": "!!!Help", |
499 | "file": "src/lib/Menu.js", | 512 | "file": "src/lib/Menu.js", |
500 | "start": { | 513 | "start": { |
501 | "line": 166, | 514 | "line": 173, |
502 | "column": 8 | 515 | "column": 8 |
503 | }, | 516 | }, |
504 | "end": { | 517 | "end": { |
505 | "line": 169, | 518 | "line": 176, |
506 | "column": 3 | 519 | "column": 3 |
507 | } | 520 | } |
508 | }, | 521 | }, |
@@ -511,11 +524,11 @@ | |||
511 | "defaultMessage": "!!!About Franz", | 524 | "defaultMessage": "!!!About Franz", |
512 | "file": "src/lib/Menu.js", | 525 | "file": "src/lib/Menu.js", |
513 | "start": { | 526 | "start": { |
514 | "line": 170, | 527 | "line": 177, |
515 | "column": 9 | 528 | "column": 9 |
516 | }, | 529 | }, |
517 | "end": { | 530 | "end": { |
518 | "line": 173, | 531 | "line": 180, |
519 | "column": 3 | 532 | "column": 3 |
520 | } | 533 | } |
521 | }, | 534 | }, |
@@ -524,11 +537,11 @@ | |||
524 | "defaultMessage": "!!!What's new?", | 537 | "defaultMessage": "!!!What's new?", |
525 | "file": "src/lib/Menu.js", | 538 | "file": "src/lib/Menu.js", |
526 | "start": { | 539 | "start": { |
527 | "line": 174, | 540 | "line": 181, |
528 | "column": 16 | 541 | "column": 16 |
529 | }, | 542 | }, |
530 | "end": { | 543 | "end": { |
531 | "line": 177, | 544 | "line": 184, |
532 | "column": 3 | 545 | "column": 3 |
533 | } | 546 | } |
534 | }, | 547 | }, |
@@ -537,11 +550,11 @@ | |||
537 | "defaultMessage": "!!!Settings", | 550 | "defaultMessage": "!!!Settings", |
538 | "file": "src/lib/Menu.js", | 551 | "file": "src/lib/Menu.js", |
539 | "start": { | 552 | "start": { |
540 | "line": 178, | 553 | "line": 185, |
541 | "column": 12 | 554 | "column": 12 |
542 | }, | 555 | }, |
543 | "end": { | 556 | "end": { |
544 | "line": 181, | 557 | "line": 188, |
545 | "column": 3 | 558 | "column": 3 |
546 | } | 559 | } |
547 | }, | 560 | }, |
@@ -550,11 +563,11 @@ | |||
550 | "defaultMessage": "!!!Check for updates", | 563 | "defaultMessage": "!!!Check for updates", |
551 | "file": "src/lib/Menu.js", | 564 | "file": "src/lib/Menu.js", |
552 | "start": { | 565 | "start": { |
553 | "line": 182, | 566 | "line": 189, |
554 | "column": 19 | 567 | "column": 19 |
555 | }, | 568 | }, |
556 | "end": { | 569 | "end": { |
557 | "line": 185, | 570 | "line": 192, |
558 | "column": 3 | 571 | "column": 3 |
559 | } | 572 | } |
560 | }, | 573 | }, |
@@ -563,11 +576,11 @@ | |||
563 | "defaultMessage": "!!!Hide", | 576 | "defaultMessage": "!!!Hide", |
564 | "file": "src/lib/Menu.js", | 577 | "file": "src/lib/Menu.js", |
565 | "start": { | 578 | "start": { |
566 | "line": 186, | 579 | "line": 193, |
567 | "column": 8 | 580 | "column": 8 |
568 | }, | 581 | }, |
569 | "end": { | 582 | "end": { |
570 | "line": 189, | 583 | "line": 196, |
571 | "column": 3 | 584 | "column": 3 |
572 | } | 585 | } |
573 | }, | 586 | }, |
@@ -576,11 +589,11 @@ | |||
576 | "defaultMessage": "!!!Hide Others", | 589 | "defaultMessage": "!!!Hide Others", |
577 | "file": "src/lib/Menu.js", | 590 | "file": "src/lib/Menu.js", |
578 | "start": { | 591 | "start": { |
579 | "line": 190, | 592 | "line": 197, |
580 | "column": 14 | 593 | "column": 14 |
581 | }, | 594 | }, |
582 | "end": { | 595 | "end": { |
583 | "line": 193, | 596 | "line": 200, |
584 | "column": 3 | 597 | "column": 3 |
585 | } | 598 | } |
586 | }, | 599 | }, |
@@ -589,11 +602,11 @@ | |||
589 | "defaultMessage": "!!!Unhide", | 602 | "defaultMessage": "!!!Unhide", |
590 | "file": "src/lib/Menu.js", | 603 | "file": "src/lib/Menu.js", |
591 | "start": { | 604 | "start": { |
592 | "line": 194, | 605 | "line": 201, |
593 | "column": 10 | 606 | "column": 10 |
594 | }, | 607 | }, |
595 | "end": { | 608 | "end": { |
596 | "line": 197, | 609 | "line": 204, |
597 | "column": 3 | 610 | "column": 3 |
598 | } | 611 | } |
599 | }, | 612 | }, |
@@ -602,11 +615,11 @@ | |||
602 | "defaultMessage": "!!!Quit", | 615 | "defaultMessage": "!!!Quit", |
603 | "file": "src/lib/Menu.js", | 616 | "file": "src/lib/Menu.js", |
604 | "start": { | 617 | "start": { |
605 | "line": 198, | 618 | "line": 205, |
606 | "column": 8 | 619 | "column": 8 |
607 | }, | 620 | }, |
608 | "end": { | 621 | "end": { |
609 | "line": 201, | 622 | "line": 208, |
610 | "column": 3 | 623 | "column": 3 |
611 | } | 624 | } |
612 | }, | 625 | }, |
@@ -615,11 +628,11 @@ | |||
615 | "defaultMessage": "!!!Add New Service...", | 628 | "defaultMessage": "!!!Add New Service...", |
616 | "file": "src/lib/Menu.js", | 629 | "file": "src/lib/Menu.js", |
617 | "start": { | 630 | "start": { |
618 | "line": 202, | 631 | "line": 209, |
619 | "column": 17 | 632 | "column": 17 |
620 | }, | 633 | }, |
621 | "end": { | 634 | "end": { |
622 | "line": 205, | 635 | "line": 212, |
623 | "column": 3 | 636 | "column": 3 |
624 | } | 637 | } |
625 | }, | 638 | }, |
@@ -628,11 +641,11 @@ | |||
628 | "defaultMessage": "!!!Add New Workspace...", | 641 | "defaultMessage": "!!!Add New Workspace...", |
629 | "file": "src/lib/Menu.js", | 642 | "file": "src/lib/Menu.js", |
630 | "start": { | 643 | "start": { |
631 | "line": 206, | 644 | "line": 213, |
632 | "column": 19 | 645 | "column": 19 |
633 | }, | 646 | }, |
634 | "end": { | 647 | "end": { |
635 | "line": 209, | 648 | "line": 216, |
636 | "column": 3 | 649 | "column": 3 |
637 | } | 650 | } |
638 | }, | 651 | }, |
@@ -641,11 +654,11 @@ | |||
641 | "defaultMessage": "!!!Open workspace drawer", | 654 | "defaultMessage": "!!!Open workspace drawer", |
642 | "file": "src/lib/Menu.js", | 655 | "file": "src/lib/Menu.js", |
643 | "start": { | 656 | "start": { |
644 | "line": 210, | 657 | "line": 217, |
645 | "column": 23 | 658 | "column": 23 |
646 | }, | 659 | }, |
647 | "end": { | 660 | "end": { |
648 | "line": 213, | 661 | "line": 220, |
649 | "column": 3 | 662 | "column": 3 |
650 | } | 663 | } |
651 | }, | 664 | }, |
@@ -654,11 +667,11 @@ | |||
654 | "defaultMessage": "!!!Close workspace drawer", | 667 | "defaultMessage": "!!!Close workspace drawer", |
655 | "file": "src/lib/Menu.js", | 668 | "file": "src/lib/Menu.js", |
656 | "start": { | 669 | "start": { |
657 | "line": 214, | 670 | "line": 221, |
658 | "column": 24 | 671 | "column": 24 |
659 | }, | 672 | }, |
660 | "end": { | 673 | "end": { |
661 | "line": 217, | 674 | "line": 224, |
662 | "column": 3 | 675 | "column": 3 |
663 | } | 676 | } |
664 | }, | 677 | }, |
@@ -667,11 +680,11 @@ | |||
667 | "defaultMessage": "!!!Activate next service...", | 680 | "defaultMessage": "!!!Activate next service...", |
668 | "file": "src/lib/Menu.js", | 681 | "file": "src/lib/Menu.js", |
669 | "start": { | 682 | "start": { |
670 | "line": 218, | 683 | "line": 225, |
671 | "column": 23 | 684 | "column": 23 |
672 | }, | 685 | }, |
673 | "end": { | 686 | "end": { |
674 | "line": 221, | 687 | "line": 228, |
675 | "column": 3 | 688 | "column": 3 |
676 | } | 689 | } |
677 | }, | 690 | }, |
@@ -680,11 +693,11 @@ | |||
680 | "defaultMessage": "!!!Activate previous service...", | 693 | "defaultMessage": "!!!Activate previous service...", |
681 | "file": "src/lib/Menu.js", | 694 | "file": "src/lib/Menu.js", |
682 | "start": { | 695 | "start": { |
683 | "line": 222, | 696 | "line": 229, |
684 | "column": 27 | 697 | "column": 27 |
685 | }, | 698 | }, |
686 | "end": { | 699 | "end": { |
687 | "line": 225, | 700 | "line": 232, |
688 | "column": 3 | 701 | "column": 3 |
689 | } | 702 | } |
690 | }, | 703 | }, |
@@ -693,11 +706,11 @@ | |||
693 | "defaultMessage": "!!!Disable notifications & audio", | 706 | "defaultMessage": "!!!Disable notifications & audio", |
694 | "file": "src/lib/Menu.js", | 707 | "file": "src/lib/Menu.js", |
695 | "start": { | 708 | "start": { |
696 | "line": 226, | 709 | "line": 233, |
697 | "column": 11 | 710 | "column": 11 |
698 | }, | 711 | }, |
699 | "end": { | 712 | "end": { |
700 | "line": 229, | 713 | "line": 236, |
701 | "column": 3 | 714 | "column": 3 |
702 | } | 715 | } |
703 | }, | 716 | }, |
@@ -706,11 +719,11 @@ | |||
706 | "defaultMessage": "!!!Enable notifications & audio", | 719 | "defaultMessage": "!!!Enable notifications & audio", |
707 | "file": "src/lib/Menu.js", | 720 | "file": "src/lib/Menu.js", |
708 | "start": { | 721 | "start": { |
709 | "line": 230, | 722 | "line": 237, |
710 | "column": 13 | 723 | "column": 13 |
711 | }, | 724 | }, |
712 | "end": { | 725 | "end": { |
713 | "line": 233, | 726 | "line": 240, |
714 | "column": 3 | 727 | "column": 3 |
715 | } | 728 | } |
716 | }, | 729 | }, |
@@ -719,11 +732,11 @@ | |||
719 | "defaultMessage": "!!!Workspaces", | 732 | "defaultMessage": "!!!Workspaces", |
720 | "file": "src/lib/Menu.js", | 733 | "file": "src/lib/Menu.js", |
721 | "start": { | 734 | "start": { |
722 | "line": 234, | 735 | "line": 241, |
723 | "column": 14 | 736 | "column": 14 |
724 | }, | 737 | }, |
725 | "end": { | 738 | "end": { |
726 | "line": 237, | 739 | "line": 244, |
727 | "column": 3 | 740 | "column": 3 |
728 | } | 741 | } |
729 | }, | 742 | }, |
@@ -732,11 +745,63 @@ | |||
732 | "defaultMessage": "!!!Default", | 745 | "defaultMessage": "!!!Default", |
733 | "file": "src/lib/Menu.js", | 746 | "file": "src/lib/Menu.js", |
734 | "start": { | 747 | "start": { |
735 | "line": 238, | 748 | "line": 245, |
736 | "column": 20 | 749 | "column": 20 |
737 | }, | 750 | }, |
738 | "end": { | 751 | "end": { |
739 | "line": 241, | 752 | "line": 248, |
753 | "column": 3 | ||
754 | } | ||
755 | }, | ||
756 | { | ||
757 | "id": "menu.todos", | ||
758 | "defaultMessage": "!!!Todos", | ||
759 | "file": "src/lib/Menu.js", | ||
760 | "start": { | ||
761 | "line": 249, | ||
762 | "column": 9 | ||
763 | }, | ||
764 | "end": { | ||
765 | "line": 252, | ||
766 | "column": 3 | ||
767 | } | ||
768 | }, | ||
769 | { | ||
770 | "id": "menu.Todoss.openTodosDrawer", | ||
771 | "defaultMessage": "!!!Open Todos drawer", | ||
772 | "file": "src/lib/Menu.js", | ||
773 | "start": { | ||
774 | "line": 253, | ||
775 | "column": 19 | ||
776 | }, | ||
777 | "end": { | ||
778 | "line": 256, | ||
779 | "column": 3 | ||
780 | } | ||
781 | }, | ||
782 | { | ||
783 | "id": "menu.Todoss.closeTodosDrawer", | ||
784 | "defaultMessage": "!!!Close Todos drawer", | ||
785 | "file": "src/lib/Menu.js", | ||
786 | "start": { | ||
787 | "line": 257, | ||
788 | "column": 20 | ||
789 | }, | ||
790 | "end": { | ||
791 | "line": 260, | ||
792 | "column": 3 | ||
793 | } | ||
794 | }, | ||
795 | { | ||
796 | "id": "menu.todos.enableTodos", | ||
797 | "defaultMessage": "!!!Enable Todos", | ||
798 | "file": "src/lib/Menu.js", | ||
799 | "start": { | ||
800 | "line": 261, | ||
801 | "column": 15 | ||
802 | }, | ||
803 | "end": { | ||
804 | "line": 264, | ||
740 | "column": 3 | 805 | "column": 3 |
741 | } | 806 | } |
742 | } | 807 | } |
diff --git a/src/index.html b/src/index.html index f29aa2686..7f223b662 100644 --- a/src/index.html +++ b/src/index.html | |||
@@ -1,7 +1,7 @@ | |||
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html lang="en"> | 2 | <html lang="en"> |
3 | <head> | 3 | <head> |
4 | <title>Franz</title> | 4 | <title>Ferdi</title> |
5 | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> | 5 | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> |
6 | <link rel="stylesheet" type="text/css" href="./styles/main.css" /> | 6 | <link rel="stylesheet" type="text/css" href="./styles/main.css" /> |
7 | <script type="text/javascript" src="./app.js"></script> | 7 | <script type="text/javascript" src="./app.js"></script> |
@@ -35,11 +35,16 @@ | |||
35 | const originalReloadBehaviour = window._onLiveReloadFileChanged; | 35 | const originalReloadBehaviour = window._onLiveReloadFileChanged; |
36 | 36 | ||
37 | window._onLiveReloadFileChanged = (file) => { | 37 | window._onLiveReloadFileChanged = (file) => { |
38 | if (!file.path.includes('/build/webview/') && !file.path.includes('/build/index.js') && !file.path.includes('/build/electron/')) { | 38 | const isTodoPreloadPath = file.path.includes('/build/features/todos/preload.js'); |
39 | if (!file.path.includes('/build/webview/') && !file.path.includes('/build/index.js') && !file.path.includes('/build/electron/') && !isTodoPreloadPath) { | ||
39 | originalReloadBehaviour(file); | 40 | originalReloadBehaviour(file); |
40 | } else { | 41 | } else { |
41 | if (file.path.includes('/build/webview/')) { | 42 | if (isTodoPreloadPath) { |
42 | debug('Livereload: Reloading all webvies'); | 43 | debug('Livereload: Reloading all webviews'); |
44 | const webview = document.querySelector('webview[partition="persist:todos"]'); | ||
45 | if (webview) webview.reload(); | ||
46 | } else if (file.path.includes('/build/webview/')) { | ||
47 | debug('Livereload: Reloading all webviews'); | ||
43 | const webviews = document.querySelectorAll('webview').forEach(webview => webview.reload()); | 48 | const webviews = document.querySelectorAll('webview').forEach(webview => webview.reload()); |
44 | } else { | 49 | } else { |
45 | debug('Livereload: skip reload as only main process files have changed'); | 50 | debug('Livereload: skip reload as only main process files have changed'); |
diff --git a/src/index.js b/src/index.js index 92740aaa2..73fc6e299 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -37,7 +37,7 @@ import { asarPath } from './helpers/asar-helpers'; | |||
37 | import { isValidExternalURL } from './helpers/url-helpers'; | 37 | import { isValidExternalURL } from './helpers/url-helpers'; |
38 | /* eslint-enable import/first */ | 38 | /* eslint-enable import/first */ |
39 | 39 | ||
40 | const debug = require('debug')('Franz:App'); | 40 | const debug = require('debug')('Ferdi:App'); |
41 | 41 | ||
42 | // Keep a global reference of the window object, if you don't, the window will | 42 | // Keep a global reference of the window object, if you don't, the window will |
43 | // be closed automatically when the JavaScript object is garbage collected. | 43 | // be closed automatically when the JavaScript object is garbage collected. |
@@ -105,35 +105,6 @@ if (!gotTheLock) { | |||
105 | } | 105 | } |
106 | }); | 106 | }); |
107 | } | 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 Ferdi is already running. Exiting...'); | ||
135 | // app.exit(); | ||
136 | // } | ||
137 | 108 | ||
138 | // Fix Unity indicator issue | 109 | // Fix Unity indicator issue |
139 | // https://github.com/electron/electron/issues/9046 | 110 | // https://github.com/electron/electron/issues/9046 |
diff --git a/src/lib/Menu.js b/src/lib/Menu.js index 094caf058..b877c6555 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js | |||
@@ -7,6 +7,8 @@ import { workspaceStore } from '../features/workspaces/index'; | |||
7 | import { workspaceActions } from '../features/workspaces/actions'; | 7 | import { workspaceActions } from '../features/workspaces/actions'; |
8 | import { announcementActions } from '../features/announcements/actions'; | 8 | import { announcementActions } from '../features/announcements/actions'; |
9 | import { announcementsStore } from '../features/announcements'; | 9 | import { announcementsStore } from '../features/announcements'; |
10 | import { todosStore } from '../features/todos'; | ||
11 | import { todoActions } from '../features/todos/actions'; | ||
10 | 12 | ||
11 | const { app, Menu, dialog } = remote; | 13 | const { app, Menu, dialog } = remote; |
12 | 14 | ||
@@ -95,6 +97,10 @@ const menuItems = defineMessages({ | |||
95 | id: 'menu.view.toggleDevTools', | 97 | id: 'menu.view.toggleDevTools', |
96 | defaultMessage: '!!!Toggle Developer Tools', | 98 | defaultMessage: '!!!Toggle Developer Tools', |
97 | }, | 99 | }, |
100 | toggleTodosDevTools: { | ||
101 | id: 'menu.view.toggleTodosDevTools', | ||
102 | defaultMessage: '!!!Toggle Todos Developer Tools', | ||
103 | }, | ||
98 | toggleServiceDevTools: { | 104 | toggleServiceDevTools: { |
99 | id: 'menu.view.toggleServiceDevTools', | 105 | id: 'menu.view.toggleServiceDevTools', |
100 | defaultMessage: '!!!Toggle Service Developer Tools', | 106 | defaultMessage: '!!!Toggle Service Developer Tools', |
@@ -105,7 +111,7 @@ const menuItems = defineMessages({ | |||
105 | }, | 111 | }, |
106 | reloadFranz: { | 112 | reloadFranz: { |
107 | id: 'menu.view.reloadFranz', | 113 | id: 'menu.view.reloadFranz', |
108 | defaultMessage: '!!!Reload Franz', | 114 | defaultMessage: '!!!Reload Ferdi', |
109 | }, | 115 | }, |
110 | minimize: { | 116 | minimize: { |
111 | id: 'menu.window.minimize', | 117 | id: 'menu.window.minimize', |
@@ -169,7 +175,7 @@ const menuItems = defineMessages({ | |||
169 | }, | 175 | }, |
170 | about: { | 176 | about: { |
171 | id: 'menu.app.about', | 177 | id: 'menu.app.about', |
172 | defaultMessage: '!!!About Franz', | 178 | defaultMessage: '!!!About Ferdi', |
173 | }, | 179 | }, |
174 | announcement: { | 180 | announcement: { |
175 | id: 'menu.app.announcement', | 181 | id: 'menu.app.announcement', |
@@ -239,6 +245,22 @@ const menuItems = defineMessages({ | |||
239 | id: 'menu.workspaces.defaultWorkspace', | 245 | id: 'menu.workspaces.defaultWorkspace', |
240 | defaultMessage: '!!!Default', | 246 | defaultMessage: '!!!Default', |
241 | }, | 247 | }, |
248 | todos: { | ||
249 | id: 'menu.todos', | ||
250 | defaultMessage: '!!!Todos', | ||
251 | }, | ||
252 | openTodosDrawer: { | ||
253 | id: 'menu.Todoss.openTodosDrawer', | ||
254 | defaultMessage: '!!!Open Todos drawer', | ||
255 | }, | ||
256 | closeTodosDrawer: { | ||
257 | id: 'menu.Todoss.closeTodosDrawer', | ||
258 | defaultMessage: '!!!Close Todos drawer', | ||
259 | }, | ||
260 | enableTodos: { | ||
261 | id: 'menu.todos.enableTodos', | ||
262 | defaultMessage: '!!!Enable Todos', | ||
263 | }, | ||
242 | }); | 264 | }); |
243 | 265 | ||
244 | function getActiveWebview() { | 266 | function getActiveWebview() { |
@@ -347,6 +369,11 @@ const _templateFactory = intl => [ | |||
347 | visible: workspaceStore.isFeatureEnabled, | 369 | visible: workspaceStore.isFeatureEnabled, |
348 | }, | 370 | }, |
349 | { | 371 | { |
372 | label: intl.formatMessage(menuItems.todos), | ||
373 | submenu: [], | ||
374 | visible: todosStore.isFeatureEnabled, | ||
375 | }, | ||
376 | { | ||
350 | label: intl.formatMessage(menuItems.window), | 377 | label: intl.formatMessage(menuItems.window), |
351 | role: 'window', | 378 | role: 'window', |
352 | submenu: [ | 379 | submenu: [ |
@@ -619,6 +646,17 @@ export default class FranzMenu { | |||
619 | enabled: this.stores.user.isLoggedIn && this.stores.services.enabled.length > 0, | 646 | enabled: this.stores.user.isLoggedIn && this.stores.services.enabled.length > 0, |
620 | }); | 647 | }); |
621 | 648 | ||
649 | if (this.stores.features.features.isTodosEnabled) { | ||
650 | tpl[1].submenu.push({ | ||
651 | label: intl.formatMessage(menuItems.toggleTodosDevTools), | ||
652 | accelerator: `${cmdKey}+Shift+Alt+O`, | ||
653 | click: () => { | ||
654 | const webview = document.querySelector('webview[partition="persist:todos"]'); | ||
655 | if (webview) webview.openDevTools(); | ||
656 | }, | ||
657 | }); | ||
658 | } | ||
659 | |||
622 | tpl[1].submenu.unshift({ | 660 | tpl[1].submenu.unshift({ |
623 | label: intl.formatMessage(menuItems.reloadService), | 661 | label: intl.formatMessage(menuItems.reloadService), |
624 | id: 'reloadService', // TODO: needed? | 662 | id: 'reloadService', // TODO: needed? |
@@ -704,8 +742,8 @@ export default class FranzMenu { | |||
704 | click: () => { | 742 | click: () => { |
705 | dialog.showMessageBox({ | 743 | dialog.showMessageBox({ |
706 | type: 'info', | 744 | type: 'info', |
707 | title: 'Franz', | 745 | title: 'Franz Ferdinand', |
708 | message: 'Franz', | 746 | message: 'Ferdi', |
709 | detail: `Version: ${remote.app.getVersion()}\nRelease: ${process.versions.electron} / ${process.platform} / ${process.arch}`, | 747 | detail: `Version: ${remote.app.getVersion()}\nRelease: ${process.versions.electron} / ${process.platform} / ${process.arch}`, |
710 | }); | 748 | }); |
711 | }, | 749 | }, |
@@ -771,6 +809,10 @@ export default class FranzMenu { | |||
771 | tpl[4].submenu = this.workspacesMenu(); | 809 | tpl[4].submenu = this.workspacesMenu(); |
772 | } | 810 | } |
773 | 811 | ||
812 | if (todosStore.isFeatureEnabled) { | ||
813 | tpl[5].submenu = this.todosMenu(); | ||
814 | } | ||
815 | |||
774 | tpl[tpl.length - 1].submenu.push({ | 816 | tpl[tpl.length - 1].submenu.push({ |
775 | type: 'separator', | 817 | type: 'separator', |
776 | }, this.debugMenu()); | 818 | }, this.debugMenu()); |
@@ -882,6 +924,37 @@ export default class FranzMenu { | |||
882 | return menu; | 924 | return menu; |
883 | } | 925 | } |
884 | 926 | ||
927 | todosMenu() { | ||
928 | const { isTodosPanelVisible, isFeatureEnabledByUser } = this.stores.todos; | ||
929 | const { intl } = window.franz; | ||
930 | const menu = []; | ||
931 | |||
932 | const drawerLabel = isTodosPanelVisible ? menuItems.closeTodosDrawer : menuItems.openTodosDrawer; | ||
933 | |||
934 | menu.push({ | ||
935 | label: intl.formatMessage(drawerLabel), | ||
936 | accelerator: `${cmdKey}+T`, | ||
937 | click: () => { | ||
938 | todoActions.toggleTodosPanel(); | ||
939 | }, | ||
940 | enabled: this.stores.user.isLoggedIn && isFeatureEnabledByUser, | ||
941 | }, { | ||
942 | type: 'separator', | ||
943 | }); | ||
944 | |||
945 | if (!isFeatureEnabledByUser) { | ||
946 | menu.push({ | ||
947 | label: intl.formatMessage(menuItems.enableTodos), | ||
948 | click: () => { | ||
949 | todoActions.toggleTodosFeatureVisibility(); | ||
950 | }, | ||
951 | }); | ||
952 | } | ||
953 | |||
954 | return menu; | ||
955 | } | ||
956 | |||
957 | |||
885 | debugMenu() { | 958 | debugMenu() { |
886 | const { intl } = window.ferdi; | 959 | const { intl } = window.ferdi; |
887 | 960 | ||
diff --git a/src/models/Service.js b/src/models/Service.js index bcf24b7d6..b48233237 100644 --- a/src/models/Service.js +++ b/src/models/Service.js | |||
@@ -2,7 +2,12 @@ import { computed, observable, autorun } from 'mobx'; | |||
2 | import path from 'path'; | 2 | import path from 'path'; |
3 | import normalizeUrl from 'normalize-url'; | 3 | import normalizeUrl from 'normalize-url'; |
4 | 4 | ||
5 | const debug = require('debug')('Franz:Service'); | 5 | const debug = require('debug')('Ferdi:Service'); |
6 | |||
7 | export const RESTRICTION_TYPES = { | ||
8 | SERVICE_LIMIT: 0, | ||
9 | CUSTOM_URL: 1, | ||
10 | }; | ||
6 | 11 | ||
7 | export default class Service { | 12 | export default class Service { |
8 | id = ''; | 13 | id = ''; |
@@ -59,6 +64,12 @@ export default class Service { | |||
59 | 64 | ||
60 | @observable errorMessage = ''; | 65 | @observable errorMessage = ''; |
61 | 66 | ||
67 | @observable isUsingCustomUrl = false; | ||
68 | |||
69 | @observable isServiceAccessRestricted = false; | ||
70 | |||
71 | @observable restrictionType = null; | ||
72 | |||
62 | constructor(data, recipe) { | 73 | constructor(data, recipe) { |
63 | if (!data) { | 74 | if (!data) { |
64 | console.error('Service config not valid'); | 75 | console.error('Service config not valid'); |
@@ -111,6 +122,10 @@ export default class Service { | |||
111 | this.unreadDirectMessageCount = 0; | 122 | this.unreadDirectMessageCount = 0; |
112 | this.unreadIndirectMessageCount = 0; | 123 | this.unreadIndirectMessageCount = 0; |
113 | } | 124 | } |
125 | |||
126 | if (this.recipe.hasCustomUrl && this.customUrl) { | ||
127 | this.isUsingCustomUrl = true; | ||
128 | } | ||
114 | }); | 129 | }); |
115 | } | 130 | } |
116 | 131 | ||
diff --git a/src/models/User.js b/src/models/User.js index d12aef278..5a614efbe 100644 --- a/src/models/User.js +++ b/src/models/User.js | |||
@@ -20,6 +20,10 @@ export default class User { | |||
20 | 20 | ||
21 | @observable isSubscriptionOwner = false; | 21 | @observable isSubscriptionOwner = false; |
22 | 22 | ||
23 | @observable hasSubscription = true; | ||
24 | |||
25 | @observable hadSubscription = false; | ||
26 | |||
23 | @observable isPremium = true; | 27 | @observable isPremium = true; |
24 | 28 | ||
25 | @observable beta = false; | 29 | @observable beta = false; |
@@ -32,6 +36,9 @@ export default class User { | |||
32 | 36 | ||
33 | @observable locale = false; | 37 | @observable locale = false; |
34 | 38 | ||
39 | @observable team = {}; | ||
40 | |||
41 | |||
35 | constructor(data) { | 42 | constructor(data) { |
36 | if (!data.id) { | 43 | if (!data.id) { |
37 | throw Error('User requires Id'); | 44 | throw Error('User requires Id'); |
@@ -47,8 +54,13 @@ export default class User { | |||
47 | this.beta = data.beta || this.beta; | 54 | this.beta = data.beta || this.beta; |
48 | this.donor = data.donor || this.donor; | 55 | this.donor = data.donor || this.donor; |
49 | this.isDonor = data.isDonor || this.isDonor; | 56 | this.isDonor = data.isDonor || this.isDonor; |
50 | this.isSubscriptionOwner = data.isSubscriptionOwner || this.isSubscriptionOwner; | ||
51 | this.isMiner = data.isMiner || this.isMiner; | 57 | this.isMiner = data.isMiner || this.isMiner; |
52 | this.locale = data.locale || this.locale; | 58 | this.locale = data.locale || this.locale; |
59 | |||
60 | this.isSubscriptionOwner = data.isSubscriptionOwner || this.isSubscriptionOwner; | ||
61 | this.hasSubscription = data.hasSubscription || this.hasSubscription; | ||
62 | this.hadSubscription = data.hadSubscription || this.hadSubscription; | ||
63 | |||
64 | this.team = data.team || this.team; | ||
53 | } | 65 | } |
54 | } | 66 | } |
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 2bfcdf640..5bae6e8d4 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -23,7 +23,7 @@ import { getLocale } from '../helpers/i18n-helpers'; | |||
23 | import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; | 23 | import { getServiceIdsFromPartitions, removeServicePartitionDirectory } from '../helpers/service-helpers.js'; |
24 | import { isValidExternalURL } from '../helpers/url-helpers'; | 24 | import { isValidExternalURL } from '../helpers/url-helpers'; |
25 | 25 | ||
26 | const debug = require('debug')('Franz:AppStore'); | 26 | const debug = require('debug')('Ferdi:AppStore'); |
27 | 27 | ||
28 | const { app, systemPreferences, screen } = remote; | 28 | const { app, systemPreferences, screen } = remote; |
29 | 29 | ||
@@ -31,7 +31,7 @@ const mainWindow = remote.getCurrentWindow(); | |||
31 | 31 | ||
32 | const defaultLocale = DEFAULT_APP_SETTINGS.locale; | 32 | const defaultLocale = DEFAULT_APP_SETTINGS.locale; |
33 | const autoLauncher = new AutoLaunch({ | 33 | const autoLauncher = new AutoLaunch({ |
34 | name: 'Franz', | 34 | name: 'Ferdi', |
35 | }); | 35 | }); |
36 | 36 | ||
37 | export default class AppStore extends Store { | 37 | export default class AppStore extends Store { |
@@ -95,6 +95,7 @@ export default class AppStore extends Store { | |||
95 | this._offlineCheck.bind(this), | 95 | this._offlineCheck.bind(this), |
96 | this._setLocale.bind(this), | 96 | this._setLocale.bind(this), |
97 | this._muteAppHandler.bind(this), | 97 | this._muteAppHandler.bind(this), |
98 | this._handleFullScreen.bind(this), | ||
98 | ]); | 99 | ]); |
99 | } | 100 | } |
100 | 101 | ||
@@ -347,6 +348,8 @@ export default class AppStore extends Store { | |||
347 | this.locale = this._getDefaultLocale(); | 348 | this.locale = this._getDefaultLocale(); |
348 | } | 349 | } |
349 | 350 | ||
351 | moment.locale(this.locale); | ||
352 | |||
350 | debug(`Set locale to "${this.locale}"`); | 353 | debug(`Set locale to "${this.locale}"`); |
351 | } | 354 | } |
352 | 355 | ||
@@ -367,6 +370,16 @@ export default class AppStore extends Store { | |||
367 | } | 370 | } |
368 | } | 371 | } |
369 | 372 | ||
373 | _handleFullScreen() { | ||
374 | const body = document.querySelector('body'); | ||
375 | |||
376 | if (this.isFullScreen) { | ||
377 | body.classList.add('isFullScreen'); | ||
378 | } else { | ||
379 | body.classList.remove('isFullScreen'); | ||
380 | } | ||
381 | } | ||
382 | |||
370 | // Helpers | 383 | // Helpers |
371 | _appStartsCounter() { | 384 | _appStartsCounter() { |
372 | this.actions.settings.update({ | 385 | this.actions.settings.update({ |
diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js index e7832088b..cf28b6bec 100644 --- a/src/stores/FeaturesStore.js +++ b/src/stores/FeaturesStore.js | |||
@@ -16,6 +16,9 @@ import workspaces from '../features/workspaces'; | |||
16 | import shareFranz from '../features/shareFranz'; | 16 | import shareFranz from '../features/shareFranz'; |
17 | import announcements from '../features/announcements'; | 17 | import announcements from '../features/announcements'; |
18 | import settingsWS from '../features/settingsWS'; | 18 | import settingsWS from '../features/settingsWS'; |
19 | import serviceLimit from '../features/serviceLimit'; | ||
20 | import communityRecipes from '../features/communityRecipes'; | ||
21 | import todos from '../features/todos'; | ||
19 | 22 | ||
20 | import { DEFAULT_FEATURES_CONFIG } from '../config'; | 23 | import { DEFAULT_FEATURES_CONFIG } from '../config'; |
21 | 24 | ||
@@ -75,5 +78,8 @@ export default class FeaturesStore extends Store { | |||
75 | shareFranz(this.stores, this.actions); | 78 | shareFranz(this.stores, this.actions); |
76 | announcements(this.stores, this.actions); | 79 | announcements(this.stores, this.actions); |
77 | settingsWS(this.stores, this.actions); | 80 | settingsWS(this.stores, this.actions); |
81 | serviceLimit(this.stores, this.actions); | ||
82 | communityRecipes(this.stores, this.actions); | ||
83 | todos(this.stores, this.actions); | ||
78 | } | 84 | } |
79 | } | 85 | } |
diff --git a/src/stores/RecipesStore.js b/src/stores/RecipesStore.js index d51192078..7f91049df 100644 --- a/src/stores/RecipesStore.js +++ b/src/stores/RecipesStore.js | |||
@@ -5,7 +5,7 @@ import CachedRequest from './lib/CachedRequest'; | |||
5 | import Request from './lib/Request'; | 5 | import Request from './lib/Request'; |
6 | import { matchRoute } from '../helpers/routing-helpers'; | 6 | import { matchRoute } from '../helpers/routing-helpers'; |
7 | 7 | ||
8 | const debug = require('debug')('Franz:RecipeStore'); | 8 | const debug = require('debug')('Ferdi:RecipeStore'); |
9 | 9 | ||
10 | export default class RecipesStore extends Store { | 10 | export default class RecipesStore extends Store { |
11 | @observable allRecipesRequest = new CachedRequest(this.api.recipes, 'all'); | 11 | @observable allRecipesRequest = new CachedRequest(this.api.recipes, 'all'); |
diff --git a/src/stores/RequestStore.js b/src/stores/RequestStore.js index 9254e3223..2587d4eef 100644 --- a/src/stores/RequestStore.js +++ b/src/stores/RequestStore.js | |||
@@ -3,7 +3,7 @@ import ms from 'ms'; | |||
3 | 3 | ||
4 | import Store from './lib/Store'; | 4 | import Store from './lib/Store'; |
5 | 5 | ||
6 | const debug = require('debug')('Franz:RequestsStore'); | 6 | const debug = require('debug')('Ferdi:RequestsStore'); |
7 | 7 | ||
8 | export default class RequestStore extends Store { | 8 | export default class RequestStore extends Store { |
9 | @observable userInfoRequest; | 9 | @observable userInfoRequest; |
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index 6c6b7589f..374daf333 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js | |||
@@ -12,8 +12,10 @@ import Request from './lib/Request'; | |||
12 | import CachedRequest from './lib/CachedRequest'; | 12 | import CachedRequest from './lib/CachedRequest'; |
13 | import { matchRoute } from '../helpers/routing-helpers'; | 13 | import { matchRoute } from '../helpers/routing-helpers'; |
14 | import { workspaceStore } from '../features/workspaces'; | 14 | import { workspaceStore } from '../features/workspaces'; |
15 | import { serviceLimitStore } from '../features/serviceLimit'; | ||
16 | import { RESTRICTION_TYPES } from '../models/Service'; | ||
15 | 17 | ||
16 | const debug = require('debug')('Franz:ServiceStore'); | 18 | const debug = require('debug')('Ferdi:ServiceStore'); |
17 | 19 | ||
18 | export default class ServicesStore extends Store { | 20 | export default class ServicesStore extends Store { |
19 | @observable allServicesRequest = new CachedRequest(this.api.services, 'all'); | 21 | @observable allServicesRequest = new CachedRequest(this.api.services, 'all'); |
@@ -74,6 +76,7 @@ export default class ServicesStore extends Store { | |||
74 | this._saveActiveService.bind(this), | 76 | this._saveActiveService.bind(this), |
75 | this._logoutReaction.bind(this), | 77 | this._logoutReaction.bind(this), |
76 | this._handleMuteSettings.bind(this), | 78 | this._handleMuteSettings.bind(this), |
79 | this._restrictServiceAccess.bind(this), | ||
77 | ]); | 80 | ]); |
78 | 81 | ||
79 | // Just bind this | 82 | // Just bind this |
@@ -97,7 +100,10 @@ export default class ServicesStore extends Store { | |||
97 | if (this.stores.user.isLoggedIn) { | 100 | if (this.stores.user.isLoggedIn) { |
98 | const services = this.allServicesRequest.execute().result; | 101 | const services = this.allServicesRequest.execute().result; |
99 | if (services) { | 102 | if (services) { |
100 | return observable(services.slice().slice().sort((a, b) => a.order - b.order)); | 103 | return observable(services.slice().slice().sort((a, b) => a.order - b.order).map((s, index) => { |
104 | s.index = index; | ||
105 | return s; | ||
106 | })); | ||
101 | } | 107 | } |
102 | } | 108 | } |
103 | return []; | 109 | return []; |
@@ -115,9 +121,10 @@ export default class ServicesStore extends Store { | |||
115 | // This is just used to avoid unnecessary rerendering of resource-heavy webviews | 121 | // This is just used to avoid unnecessary rerendering of resource-heavy webviews |
116 | @computed get allDisplayedUnordered() { | 122 | @computed get allDisplayedUnordered() { |
117 | const { showDisabledServices } = this.stores.settings.all.app; | 123 | const { showDisabledServices } = this.stores.settings.all.app; |
124 | const { keepAllWorkspacesLoaded } = this.stores.workspaces.settings; | ||
118 | const services = this.allServicesRequest.execute().result || []; | 125 | const services = this.allServicesRequest.execute().result || []; |
119 | const filteredServices = showDisabledServices ? services : services.filter(service => service.isEnabled); | 126 | const filteredServices = showDisabledServices ? services : services.filter(service => service.isEnabled); |
120 | return workspaceStore.filterServicesByActiveWorkspace(filteredServices); | 127 | return keepAllWorkspacesLoaded ? filteredServices : workspaceStore.filterServicesByActiveWorkspace(filteredServices); |
121 | } | 128 | } |
122 | 129 | ||
123 | @computed get filtered() { | 130 | @computed get filtered() { |
@@ -152,6 +159,8 @@ export default class ServicesStore extends Store { | |||
152 | 159 | ||
153 | // Actions | 160 | // Actions |
154 | @action async _createService({ recipeId, serviceData, redirect = true }) { | 161 | @action async _createService({ recipeId, serviceData, redirect = true }) { |
162 | if (serviceLimitStore.userHasReachedServiceLimit) return; | ||
163 | |||
155 | const data = this._cleanUpTeamIdAndCustomUrl(recipeId, serviceData); | 164 | const data = this._cleanUpTeamIdAndCustomUrl(recipeId, serviceData); |
156 | 165 | ||
157 | const response = await this.createServiceRequest.execute(recipeId, data)._promise; | 166 | const response = await this.createServiceRequest.execute(recipeId, data)._promise; |
@@ -391,8 +400,17 @@ export default class ServicesStore extends Store { | |||
391 | } | 400 | } |
392 | 401 | ||
393 | if (service.isNotificationEnabled) { | 402 | if (service.isNotificationEnabled) { |
394 | const title = typeof args[0].title === 'string' ? args[0].title : service.name; | 403 | let title = `Notification from ${service.name}`; |
395 | options.body = typeof options.body === 'string' ? options.body : ''; | 404 | if (!this.stores.settings.all.app.privateNotifications) { |
405 | options.body = typeof options.body === 'string' ? options.body : ''; | ||
406 | title = typeof args[0].title === 'string' ? args[0].title : service.name; | ||
407 | } else { | ||
408 | // Remove message data from notification in private mode | ||
409 | options.body = ''; | ||
410 | options.icon = '/assets/img/notification-badge.gif'; | ||
411 | } | ||
412 | |||
413 | console.log(title, options); | ||
396 | 414 | ||
397 | this.actions.app.notify({ | 415 | this.actions.app.notify({ |
398 | notificationId: args[0].notificationId, | 416 | notificationId: args[0].notificationId, |
@@ -430,6 +448,9 @@ export default class ServicesStore extends Store { | |||
430 | redirect: false, | 448 | redirect: false, |
431 | }); | 449 | }); |
432 | } | 450 | } |
451 | } else if (channel === 'feature:todos') { | ||
452 | Object.assign(args[0].data, { serviceId }); | ||
453 | this.actions.todos.handleHostMessage(args[0]); | ||
433 | } | 454 | } |
434 | } | 455 | } |
435 | 456 | ||
@@ -666,6 +687,35 @@ export default class ServicesStore extends Store { | |||
666 | return serviceData; | 687 | return serviceData; |
667 | } | 688 | } |
668 | 689 | ||
690 | _restrictServiceAccess() { | ||
691 | const { features } = this.stores.features; | ||
692 | const { userHasReachedServiceLimit, serviceLimit } = this.stores.serviceLimit; | ||
693 | |||
694 | this.all.map((service, index) => { | ||
695 | if (userHasReachedServiceLimit) { | ||
696 | service.isServiceAccessRestricted = index >= serviceLimit; | ||
697 | |||
698 | if (service.isServiceAccessRestricted) { | ||
699 | service.restrictionType = RESTRICTION_TYPES.SERVICE_LIMIT; | ||
700 | |||
701 | debug('Restricting access to server due to service limit'); | ||
702 | } | ||
703 | } | ||
704 | |||
705 | if (service.isUsingCustomUrl) { | ||
706 | service.isServiceAccessRestricted = !features.isCustomUrlIncludedInCurrentPlan; | ||
707 | |||
708 | if (service.isServiceAccessRestricted) { | ||
709 | service.restrictionType = RESTRICTION_TYPES.CUSTOM_URL; | ||
710 | |||
711 | debug('Restricting access to server due to custom url'); | ||
712 | } | ||
713 | } | ||
714 | |||
715 | return service; | ||
716 | }); | ||
717 | } | ||
718 | |||
669 | // Helper | 719 | // Helper |
670 | _initializeServiceRecipeInWebview(serviceId) { | 720 | _initializeServiceRecipeInWebview(serviceId) { |
671 | const service = this.one(serviceId); | 721 | const service = this.one(serviceId); |
diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js index bc01291d8..6c7b586a5 100644 --- a/src/stores/SettingsStore.js +++ b/src/stores/SettingsStore.js | |||
@@ -13,7 +13,7 @@ import { API } from '../environment'; | |||
13 | import { DEFAULT_APP_SETTINGS, FILE_SYSTEM_SETTINGS_TYPES } from '../config'; | 13 | import { DEFAULT_APP_SETTINGS, FILE_SYSTEM_SETTINGS_TYPES } from '../config'; |
14 | import { SPELLCHECKER_LOCALES } from '../i18n/languages'; | 14 | import { SPELLCHECKER_LOCALES } from '../i18n/languages'; |
15 | 15 | ||
16 | const debug = require('debug')('Franz:SettingsStore'); | 16 | const debug = require('debug')('Ferdi:SettingsStore'); |
17 | 17 | ||
18 | export default class SettingsStore extends Store { | 18 | export default class SettingsStore extends Store { |
19 | @observable appSettingsRequest = new CachedRequest(this.api.local, 'getAppSettings'); | 19 | @observable appSettingsRequest = new CachedRequest(this.api.local, 'getAppSettings'); |
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index d813e97b1..61b7d4adf 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js | |||
@@ -2,13 +2,17 @@ import { observable, computed, action } from 'mobx'; | |||
2 | import moment from 'moment'; | 2 | import moment from 'moment'; |
3 | import jwt from 'jsonwebtoken'; | 3 | import jwt from 'jsonwebtoken'; |
4 | import localStorage from 'mobx-localstorage'; | 4 | import localStorage from 'mobx-localstorage'; |
5 | import ms from 'ms'; | ||
5 | 6 | ||
6 | import { isDevMode } from '../environment'; | 7 | import { isDevMode } from '../environment'; |
7 | import Store from './lib/Store'; | 8 | import Store from './lib/Store'; |
8 | import Request from './lib/Request'; | 9 | import Request from './lib/Request'; |
9 | import CachedRequest from './lib/CachedRequest'; | 10 | import CachedRequest from './lib/CachedRequest'; |
11 | import { sleep } from '../helpers/async-helpers'; | ||
12 | import { getPlan } from '../helpers/plan-helpers'; | ||
13 | import { PLANS } from '../config'; | ||
10 | 14 | ||
11 | const debug = require('debug')('Franz:UserStore'); | 15 | const debug = require('debug')('Ferdi:UserStore'); |
12 | 16 | ||
13 | // TODO: split stores into UserStore and AuthStore | 17 | // TODO: split stores into UserStore and AuthStore |
14 | export default class UserStore extends Store { | 18 | export default class UserStore extends Store { |
@@ -36,6 +40,8 @@ export default class UserStore extends Store { | |||
36 | 40 | ||
37 | @observable passwordRequest = new Request(this.api.user, 'password'); | 41 | @observable passwordRequest = new Request(this.api.user, 'password'); |
38 | 42 | ||
43 | @observable activateTrialRequest = new Request(this.api.user, 'activateTrial'); | ||
44 | |||
39 | @observable inviteRequest = new Request(this.api.user, 'invite'); | 45 | @observable inviteRequest = new Request(this.api.user, 'invite'); |
40 | 46 | ||
41 | @observable getUserInfoRequest = new CachedRequest(this.api.user, 'getInfo'); | 47 | @observable getUserInfoRequest = new CachedRequest(this.api.user, 'getInfo'); |
@@ -56,7 +62,9 @@ export default class UserStore extends Store { | |||
56 | 62 | ||
57 | @observable accountType; | 63 | @observable accountType; |
58 | 64 | ||
59 | @observable hasCompletedSignup = null; | 65 | @observable hasCompletedSignup = false; |
66 | |||
67 | @observable hasActivatedTrial = false; | ||
60 | 68 | ||
61 | @observable userData = {}; | 69 | @observable userData = {}; |
62 | 70 | ||
@@ -76,6 +84,7 @@ export default class UserStore extends Store { | |||
76 | this.actions.user.retrievePassword.listen(this._retrievePassword.bind(this)); | 84 | this.actions.user.retrievePassword.listen(this._retrievePassword.bind(this)); |
77 | this.actions.user.logout.listen(this._logout.bind(this)); | 85 | this.actions.user.logout.listen(this._logout.bind(this)); |
78 | this.actions.user.signup.listen(this._signup.bind(this)); | 86 | this.actions.user.signup.listen(this._signup.bind(this)); |
87 | this.actions.user.activateTrial.listen(this._activateTrial.bind(this)); | ||
79 | this.actions.user.invite.listen(this._invite.bind(this)); | 88 | this.actions.user.invite.listen(this._invite.bind(this)); |
80 | this.actions.user.update.listen(this._update.bind(this)); | 89 | this.actions.user.update.listen(this._update.bind(this)); |
81 | this.actions.user.resetStatus.listen(this._resetStatus.bind(this)); | 90 | this.actions.user.resetStatus.listen(this._resetStatus.bind(this)); |
@@ -86,6 +95,7 @@ export default class UserStore extends Store { | |||
86 | this.registerReactions([ | 95 | this.registerReactions([ |
87 | // this._requireAuthenticatedUser, | 96 | // this._requireAuthenticatedUser, |
88 | this._getUserData.bind(this), | 97 | this._getUserData.bind(this), |
98 | this._resetTrialActivationState.bind(this), | ||
89 | ]); | 99 | ]); |
90 | } | 100 | } |
91 | 101 | ||
@@ -141,8 +151,33 @@ export default class UserStore extends Store { | |||
141 | return this.getUserInfoRequest.execute().result || {}; | 151 | return this.getUserInfoRequest.execute().result || {}; |
142 | } | 152 | } |
143 | 153 | ||
154 | @computed get team() { | ||
155 | return this.data.team || null; | ||
156 | } | ||
157 | |||
144 | @computed get isPremium() { | 158 | @computed get isPremium() { |
145 | return !!this.data.isPremium; | 159 | return true; |
160 | } | ||
161 | |||
162 | @computed get isPremiumOverride() { | ||
163 | return ((!this.team || !this.team.plan) && this.isPremium) || (this.team.state === 'expired' && this.isPremium); | ||
164 | } | ||
165 | |||
166 | @computed get isPersonal() { | ||
167 | if (!this.team || !this.team.plan) return false; | ||
168 | const plan = getPlan(this.team.plan); | ||
169 | |||
170 | return plan === PLANS.PERSONAL; | ||
171 | } | ||
172 | |||
173 | @computed get isPro() { | ||
174 | return true; | ||
175 | // if (this.isPremiumOverride) return true; | ||
176 | |||
177 | // if (!this.team || (!this.team.plan || this.team.state === 'expired')) return false; | ||
178 | // const plan = getPlan(this.team.plan); | ||
179 | |||
180 | // return plan === PLANS.PRO || plan === PLANS.LEGACY; | ||
146 | } | 181 | } |
147 | 182 | ||
148 | @computed get legacyServices() { | 183 | @computed get legacyServices() { |
@@ -190,6 +225,21 @@ export default class UserStore extends Store { | |||
190 | this.actionStatus = request.result.status || []; | 225 | this.actionStatus = request.result.status || []; |
191 | } | 226 | } |
192 | 227 | ||
228 | @action async _activateTrial({ planId }) { | ||
229 | debug('activate trial', planId); | ||
230 | |||
231 | this.activateTrialRequest.execute({ | ||
232 | plan: planId, | ||
233 | }); | ||
234 | |||
235 | await this.activateTrialRequest._promise; | ||
236 | |||
237 | this.hasActivatedTrial = true; | ||
238 | |||
239 | this.stores.features.featuresRequest.invalidate({ immediately: true }); | ||
240 | this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); | ||
241 | } | ||
242 | |||
193 | @action async _invite({ invites }) { | 243 | @action async _invite({ invites }) { |
194 | const data = invites.filter(invite => invite.email !== ''); | 244 | const data = invites.filter(invite => invite.email !== ''); |
195 | 245 | ||
@@ -305,6 +355,14 @@ export default class UserStore extends Store { | |||
305 | } | 355 | } |
306 | } | 356 | } |
307 | 357 | ||
358 | async _resetTrialActivationState() { | ||
359 | if (this.hasActivatedTrial) { | ||
360 | await sleep(ms('12s')); | ||
361 | |||
362 | this.hasActivatedTrial = false; | ||
363 | } | ||
364 | } | ||
365 | |||
308 | // Helpers | 366 | // Helpers |
309 | _parseToken(authToken) { | 367 | _parseToken(authToken) { |
310 | try { | 368 | try { |
@@ -334,6 +392,15 @@ export default class UserStore extends Store { | |||
334 | } | 392 | } |
335 | } | 393 | } |
336 | 394 | ||
395 | getAuthURL(url) { | ||
396 | const parsedUrl = new URL(url); | ||
397 | const params = new URLSearchParams(parsedUrl.search.slice(1)); | ||
398 | |||
399 | params.append('authToken', this.authToken); | ||
400 | |||
401 | return `${parsedUrl.origin}${parsedUrl.pathname}?${params.toString()}`; | ||
402 | } | ||
403 | |||
337 | async _migrateUserLocale() { | 404 | async _migrateUserLocale() { |
338 | await this.getUserInfoRequest._promise; | 405 | await this.getUserInfoRequest._promise; |
339 | 406 | ||
diff --git a/src/stores/index.js b/src/stores/index.js index 1912418a2..10dd56665 100644 --- a/src/stores/index.js +++ b/src/stores/index.js | |||
@@ -12,6 +12,9 @@ import RequestStore from './RequestStore'; | |||
12 | import GlobalErrorStore from './GlobalErrorStore'; | 12 | import GlobalErrorStore from './GlobalErrorStore'; |
13 | import { workspaceStore } from '../features/workspaces'; | 13 | import { workspaceStore } from '../features/workspaces'; |
14 | import { announcementsStore } from '../features/announcements'; | 14 | import { announcementsStore } from '../features/announcements'; |
15 | import { serviceLimitStore } from '../features/serviceLimit'; | ||
16 | import { communityRecipesStore } from '../features/communityRecipes'; | ||
17 | import { todosStore } from '../features/todos'; | ||
15 | 18 | ||
16 | export default (api, actions, router) => { | 19 | export default (api, actions, router) => { |
17 | const stores = {}; | 20 | const stores = {}; |
@@ -31,6 +34,9 @@ export default (api, actions, router) => { | |||
31 | globalError: new GlobalErrorStore(stores, api, actions), | 34 | globalError: new GlobalErrorStore(stores, api, actions), |
32 | workspaces: workspaceStore, | 35 | workspaces: workspaceStore, |
33 | announcements: announcementsStore, | 36 | announcements: announcementsStore, |
37 | serviceLimit: serviceLimitStore, | ||
38 | communityRecipes: communityRecipesStore, | ||
39 | todos: todosStore, | ||
34 | }); | 40 | }); |
35 | // Initialize all stores | 41 | // Initialize all stores |
36 | Object.keys(stores).forEach((name) => { | 42 | Object.keys(stores).forEach((name) => { |
diff --git a/src/styles/auth.scss b/src/styles/auth.scss index cbc720559..44c752677 100644 --- a/src/styles/auth.scss +++ b/src/styles/auth.scss | |||
@@ -9,7 +9,7 @@ | |||
9 | } | 9 | } |
10 | 10 | ||
11 | .auth__logo.auth__logo--sm { | 11 | .auth__logo.auth__logo--sm { |
12 | border: 4px solid $dark-theme-black; | 12 | border: none; |
13 | box-shadow: 0 0 6px rgba($dark-theme-black, .5); | 13 | box-shadow: 0 0 6px rgba($dark-theme-black, .5); |
14 | } | 14 | } |
15 | 15 | ||
diff --git a/src/styles/layout.scss b/src/styles/layout.scss index 9f226b61c..b18bd6dcf 100644 --- a/src/styles/layout.scss +++ b/src/styles/layout.scss | |||
@@ -32,14 +32,22 @@ html { overflow: hidden; } | |||
32 | .app-loader .app-loader__title { color: $dark-theme-gray-lightest; } | 32 | .app-loader .app-loader__title { color: $dark-theme-gray-lightest; } |
33 | } | 33 | } |
34 | 34 | ||
35 | body.win32:not(.isFullScreen) .app .app__content { | ||
36 | height: calc(100% - 28px); | ||
37 | } | ||
38 | |||
35 | .app { | 39 | .app { |
36 | display: flex; | 40 | .app__content { |
37 | flex-direction: column; | 41 | display: flex; |
42 | width: calc(100% + 300px); | ||
43 | } | ||
38 | 44 | ||
39 | .app__content { display: flex; } | 45 | .app__main-content { |
46 | display: flex; | ||
47 | width: 100%; | ||
48 | } | ||
40 | 49 | ||
41 | .app__service { | 50 | .app__service { |
42 | // position: relative; | ||
43 | display: flex; | 51 | display: flex; |
44 | flex: 1; | 52 | flex: 1; |
45 | flex-direction: column; | 53 | flex-direction: column; |
diff --git a/src/styles/recipes.scss b/src/styles/recipes.scss index 84222e1fe..5bdc60a57 100644 --- a/src/styles/recipes.scss +++ b/src/styles/recipes.scss | |||
@@ -2,6 +2,7 @@ | |||
2 | 2 | ||
3 | .theme__dark .recipe-teaser { | 3 | .theme__dark .recipe-teaser { |
4 | background-color: $dark-theme-gray-dark; | 4 | background-color: $dark-theme-gray-dark; |
5 | color: $dark-theme-text-color; | ||
5 | 6 | ||
6 | &:hover { background-color: $dark-theme-gray; } | 7 | &:hover { background-color: $dark-theme-gray; } |
7 | } | 8 | } |
@@ -12,7 +13,7 @@ | |||
12 | display: flex; | 13 | display: flex; |
13 | flex-flow: row wrap; | 14 | flex-flow: row wrap; |
14 | height: auto; | 15 | height: auto; |
15 | min-height: 70%; | 16 | // min-height: 70%; |
16 | 17 | ||
17 | &.recipes__list--disabled { | 18 | &.recipes__list--disabled { |
18 | filter: grayscale(100%); | 19 | filter: grayscale(100%); |
diff --git a/src/styles/reset.scss b/src/styles/reset.scss index f46ede4a2..d87ce652a 100644 --- a/src/styles/reset.scss +++ b/src/styles/reset.scss | |||
@@ -51,7 +51,6 @@ button { | |||
51 | padding: 0; | 51 | padding: 0; |
52 | 52 | ||
53 | &:focus { outline: 0; } | 53 | &:focus { outline: 0; } |
54 | .theme__dark & { color: $dark-theme-gray-smoke; } | ||
55 | } | 54 | } |
56 | 55 | ||
57 | html { | 56 | html { |
diff --git a/src/styles/settings.scss b/src/styles/settings.scss index 1baff8b54..bb95ab5d2 100644 --- a/src/styles/settings.scss +++ b/src/styles/settings.scss | |||
@@ -1,45 +1,39 @@ | |||
1 | @import './config.scss'; | 1 | @import './config.scss'; |
2 | 2 | ||
3 | %headline { | 3 | %headline { |
4 | color: $theme-gray-light; | 4 | color: #FFF; |
5 | font-size: 20px; | 5 | font-size: 20px; |
6 | font-weight: 400; | 6 | font-weight: 400; |
7 | letter-spacing: -1px; | 7 | letter-spacing: -1px; |
8 | 8 | ||
9 | a { color: $theme-gray-light; } | 9 | a { color: #FFF } |
10 | } | 10 | } |
11 | 11 | ||
12 | %headline__dark { | 12 | %headline__dark { |
13 | color: $dark-theme-gray-lightest; | 13 | color: #FFF; |
14 | font-size: 20px; | ||
15 | font-weight: 400; | ||
16 | letter-spacing: -1px; | ||
14 | 17 | ||
15 | a { color: $dark-theme-gray-lightest; } | 18 | a { color: #FFF } |
16 | } | 19 | } |
17 | 20 | ||
18 | .theme__dark { | 21 | .theme__dark { |
19 | .settings-wrapper { background: rgba($dark-theme-black, .8); } | 22 | .settings-wrapper { background: rgba($dark-theme-black, .8); } |
20 | 23 | ||
21 | .settings { | 24 | .settings { |
22 | background: $dark-theme-gray-darkest; | ||
23 | box-shadow: 0 20px 50px rgba($dark-theme-black, .5); | ||
24 | |||
25 | .settings__header { | 25 | .settings__header { |
26 | background: $dark-theme-gray-darker; | 26 | .mdi { color: #FFF } |
27 | 27 | } | |
28 | h1, | ||
29 | .settings__header-item { @extend %headline__dark; } | ||
30 | 28 | ||
31 | .separator { border-right: 1px solid $dark-theme-gray-dark; } | 29 | .settings__main { |
32 | .mdi { color: $dark-theme-gray-lightest; } | 30 | background: $dark-theme-gray-darkest; |
33 | } | 31 | } |
34 | 32 | ||
35 | .settings__body::-webkit-scrollbar-thumb { background: $dark-theme-gray; } | 33 | .settings__body::-webkit-scrollbar-thumb { background: $dark-theme-gray; } |
36 | 34 | ||
37 | .settings__close { | 35 | .settings__close { |
38 | background: $dark-theme-gray-darker; | 36 | color: #FFF; |
39 | border-left: none; | ||
40 | color: $dark-theme-gray-lightest; | ||
41 | |||
42 | &:hover { background: darken($dark-theme-gray-darker, 5%); } | ||
43 | } | 37 | } |
44 | 38 | ||
45 | &__settings-group h3 { color: $dark-theme-gray-lightest; } | 39 | &__settings-group h3 { color: $dark-theme-gray-lightest; } |
@@ -76,6 +70,11 @@ | |||
76 | 70 | ||
77 | .settings-navigation__link { | 71 | .settings-navigation__link { |
78 | color: $dark-theme-gray-lightest; | 72 | color: $dark-theme-gray-lightest; |
73 | border-bottom: 1px solid darken($dark-theme-gray-darker, 3%); | ||
74 | |||
75 | &:last-child { | ||
76 | border: 0, | ||
77 | } | ||
79 | 78 | ||
80 | .badge { | 79 | .badge { |
81 | background: $dark-theme-gray-lighter; | 80 | background: $dark-theme-gray-lighter; |
@@ -129,15 +128,14 @@ | |||
129 | } | 128 | } |
130 | 129 | ||
131 | .settings { | 130 | .settings { |
132 | background: #FFF; | ||
133 | border-radius: $theme-border-radius; | 131 | border-radius: $theme-border-radius; |
134 | box-shadow: 0 20px 50px rgba(black, .5); | 132 | // box-shadow: 0 20px 50px rgba(black, .5); |
135 | display: flex; | 133 | display: flex; |
136 | height: 100%; | 134 | height: 100%; |
137 | max-height: 720px; | 135 | max-height: 720px; |
138 | max-width: 900px; | 136 | max-width: 900px; |
139 | min-height: 400px; | 137 | min-height: 400px; |
140 | overflow: hidden; | 138 | // overflow: hidden; |
141 | position: relative; | 139 | position: relative; |
142 | width: 100%; | 140 | width: 100%; |
143 | z-index: 9999; | 141 | z-index: 9999; |
@@ -147,25 +145,32 @@ | |||
147 | flex: 1; | 145 | flex: 1; |
148 | flex-direction: column; | 146 | flex-direction: column; |
149 | height: auto; | 147 | height: auto; |
148 | border-radius: $theme-border-radius; | ||
149 | overflow: hidden; | ||
150 | box-shadow: 0 20px 50px rgba($dark-theme-black, .5); | ||
151 | background: #FFF; | ||
150 | } | 152 | } |
151 | 153 | ||
152 | .settings__header { | 154 | .settings__header { |
153 | align-items: center; | 155 | align-items: center; |
154 | background: $theme-gray-lighter; | 156 | background: $theme-brand-primary; |
155 | display: flex; | 157 | display: flex; |
156 | height: 50px; | 158 | height: 50px; |
157 | padding: 0 40px; | 159 | padding: 0 40px; |
158 | width: calc(100% - 60px); | 160 | width: calc(100% - 60px); |
161 | color: #FFF; | ||
159 | 162 | ||
160 | h1 { | 163 | h1 { |
161 | @extend %headline; | 164 | @extend %headline; |
162 | margin: 0; | 165 | margin: 0; |
163 | } | 166 | } |
164 | 167 | ||
165 | .settings__header-item { @extend %headline; } | 168 | .settings__header-item { |
169 | @extend %headline; | ||
170 | } | ||
166 | 171 | ||
167 | .separator { | 172 | .separator { |
168 | border-right: 1px solid darken($theme-gray-lighter, 10%); | 173 | border-right: 1px solid darken($theme-brand-primary, 8%); |
169 | height: 100%; | 174 | height: 100%; |
170 | margin: 0 15px; | 175 | margin: 0 15px; |
171 | transform: skew(15deg) rotate(2deg); | 176 | transform: skew(15deg) rotate(2deg); |
@@ -218,17 +223,18 @@ | |||
218 | } | 223 | } |
219 | 224 | ||
220 | .settings__close { | 225 | .settings__close { |
221 | background: $theme-gray-lighter; | 226 | background: $theme-brand-primary; |
222 | border-left: 1px solid darken($theme-gray-lighter, 5%); | 227 | border-left: 1px solid darken($theme-brand-primary, 8%); |
223 | color: $theme-gray-light; | 228 | color: #FFF; |
224 | font-size: 20px; | 229 | font-size: 20px; |
225 | height: 50px; | 230 | height: 50px; |
226 | padding: 0 20px; | 231 | padding: 0 20px; |
227 | position: absolute; | 232 | position: absolute; |
228 | right: 0; | 233 | right: 0; |
229 | transition: background $theme-transition-time; | 234 | transition: background $theme-transition-time; |
235 | border-top-right-radius: $theme-border-radius; | ||
230 | 236 | ||
231 | &:hover { background: darken($theme-gray-lighter, 5%); } | 237 | &:hover { background: darken($theme-brand-primary, 5%); } |
232 | } | 238 | } |
233 | 239 | ||
234 | .search-input { margin-bottom: 30px; } | 240 | .search-input { margin-bottom: 30px; } |
@@ -360,6 +366,7 @@ | |||
360 | .account__subscription-button { margin-left: auto; } | 366 | .account__subscription-button { margin-left: auto; } |
361 | .franz-form__button { white-space: nowrap; } | 367 | .franz-form__button { white-space: nowrap; } |
362 | div { height: auto; } | 368 | div { height: auto; } |
369 | [data-type="franz-button"] div { height: 100% } | ||
363 | 370 | ||
364 | .invoices { | 371 | .invoices { |
365 | width: 100%; | 372 | width: 100%; |
@@ -413,7 +420,13 @@ | |||
413 | background: $theme-gray-lightest; | 420 | background: $theme-gray-lightest; |
414 | flex-direction: column; | 421 | flex-direction: column; |
415 | height: auto; | 422 | height: auto; |
416 | width: 200px; | 423 | width: 240px; |
424 | height: calc(100% - 100px); | ||
425 | align-self: center; | ||
426 | border-top-left-radius: $theme-border-radius;; | ||
427 | border-bottom-left-radius: $theme-border-radius;; | ||
428 | overflow: hidden; | ||
429 | box-shadow: 0 20px 50px rgba($dark-theme-black, .5); | ||
417 | 430 | ||
418 | .settings-navigation__link { | 431 | .settings-navigation__link { |
419 | align-items: center; | 432 | align-items: center; |
@@ -425,6 +438,7 @@ | |||
425 | padding: 0 20px; | 438 | padding: 0 20px; |
426 | text-decoration: none; | 439 | text-decoration: none; |
427 | transition: background $theme-transition-time, color $theme-transition-time; | 440 | transition: background $theme-transition-time, color $theme-transition-time; |
441 | border-bottom: 1px solid darken($theme-gray-lightest, 3%); | ||
428 | 442 | ||
429 | &:hover { | 443 | &:hover { |
430 | background: darken($theme-gray-lightest, 5%); | 444 | background: darken($theme-gray-lightest, 5%); |
diff --git a/src/webview/contextMenu.js b/src/webview/contextMenu.js index a4a6ab899..ec5833848 100644 --- a/src/webview/contextMenu.js +++ b/src/webview/contextMenu.js | |||
@@ -8,7 +8,7 @@ import { | |||
8 | import { isDevMode, isMac } from '../environment'; | 8 | import { isDevMode, isMac } from '../environment'; |
9 | import { SPELLCHECKER_LOCALES } from '../i18n/languages'; | 9 | import { SPELLCHECKER_LOCALES } from '../i18n/languages'; |
10 | 10 | ||
11 | const debug = require('debug')('Franz:contextMenu'); | 11 | const debug = require('debug')('Ferdi:contextMenu'); |
12 | 12 | ||
13 | const { Menu } = remote; | 13 | const { Menu } = remote; |
14 | 14 | ||
@@ -39,6 +39,23 @@ const buildMenuTpl = (props, suggestions, isSpellcheckEnabled, defaultSpellcheck | |||
39 | { | 39 | { |
40 | type: 'separator', | 40 | type: 'separator', |
41 | }, { | 41 | }, { |
42 | id: 'createTodo', | ||
43 | label: `Create todo: "${textSelection.length > 15 ? `${textSelection.slice(0, 15)}...` : textSelection}"`, | ||
44 | visible: hasText, | ||
45 | click() { | ||
46 | debug('Create todo from selected text', textSelection); | ||
47 | ipcRenderer.sendToHost('feature:todos', { | ||
48 | action: 'todos:create', | ||
49 | data: { | ||
50 | title: textSelection, | ||
51 | url: window.location.href, | ||
52 | }, | ||
53 | }); | ||
54 | }, | ||
55 | }, | ||
56 | { | ||
57 | type: 'separator', | ||
58 | }, { | ||
42 | id: 'lookup', | 59 | id: 'lookup', |
43 | label: `Look Up "${textSelection.length > 15 ? `${textSelection.slice(0, 15)}...` : textSelection}"`, | 60 | label: `Look Up "${textSelection.length > 15 ? `${textSelection.slice(0, 15)}...` : textSelection}"`, |
44 | visible: isMac && props.mediaType === 'none' && hasText, | 61 | visible: isMac && props.mediaType === 'none' && hasText, |
diff --git a/src/webview/darkmode.js b/src/webview/darkmode.js index 73c7007c6..ab629435c 100644 --- a/src/webview/darkmode.js +++ b/src/webview/darkmode.js | |||
@@ -3,7 +3,7 @@ | |||
3 | import path from 'path'; | 3 | import path from 'path'; |
4 | import fs from 'fs-extra'; | 4 | import fs from 'fs-extra'; |
5 | 5 | ||
6 | const debug = require('debug')('Franz:DarkMode'); | 6 | const debug = require('debug')('Ferdi:DarkMode'); |
7 | 7 | ||
8 | const chars = [...'abcdefghijklmnopqrstuvwxyz']; | 8 | const chars = [...'abcdefghijklmnopqrstuvwxyz']; |
9 | 9 | ||
diff --git a/src/webview/notifications.js b/src/webview/notifications.js index f8fe53e1b..021f05cc3 100644 --- a/src/webview/notifications.js +++ b/src/webview/notifications.js | |||
@@ -1,7 +1,7 @@ | |||
1 | import { ipcRenderer } from 'electron'; | 1 | import { ipcRenderer } from 'electron'; |
2 | import uuidV1 from 'uuid/v1'; | 2 | import uuidV1 from 'uuid/v1'; |
3 | 3 | ||
4 | const debug = require('debug')('Franz:Notifications'); | 4 | const debug = require('debug')('Ferdi:Notifications'); |
5 | 5 | ||
6 | class Notification { | 6 | class Notification { |
7 | static permission = 'granted'; | 7 | static permission = 'granted'; |
diff --git a/src/webview/recipe.js b/src/webview/recipe.js index c223b73de..e00566283 100644 --- a/src/webview/recipe.js +++ b/src/webview/recipe.js | |||
@@ -13,7 +13,7 @@ import './notifications'; | |||
13 | 13 | ||
14 | import { DEFAULT_APP_SETTINGS } from '../config'; | 14 | import { DEFAULT_APP_SETTINGS } from '../config'; |
15 | 15 | ||
16 | const debug = require('debug')('Franz:Plugin'); | 16 | const debug = require('debug')('Ferdi:Plugin'); |
17 | 17 | ||
18 | class RecipeController { | 18 | class RecipeController { |
19 | @observable settings = { | 19 | @observable settings = { |
diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js index 9158b3b94..1b2d60faf 100644 --- a/src/webview/spellchecker.js +++ b/src/webview/spellchecker.js | |||
@@ -5,7 +5,7 @@ import path from 'path'; | |||
5 | import { DICTIONARY_PATH } from '../config'; | 5 | import { DICTIONARY_PATH } from '../config'; |
6 | import { SPELLCHECKER_LOCALES } from '../i18n/languages'; | 6 | import { SPELLCHECKER_LOCALES } from '../i18n/languages'; |
7 | 7 | ||
8 | const debug = require('debug')('Franz:spellchecker'); | 8 | const debug = require('debug')('Ferdi:spellchecker'); |
9 | 9 | ||
10 | let provider; | 10 | let provider; |
11 | let currentDict; | 11 | let currentDict; |