diff options
author | Stefan Malzner <stefan@adlk.io> | 2018-03-20 11:28:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-20 11:28:04 +0100 |
commit | 0f554020c0e45302b7c9c0006f82faaacdcdd83b (patch) | |
tree | b4c054632d8034cadf25e6aed686371a61de77ea /src | |
parent | Merge pull request #713 from meetfranz/develop (diff) | |
parent | Update changelog [ci skip] (diff) | |
download | ferdium-app-0f554020c0e45302b7c9c0006f82faaacdcdd83b.tar.gz ferdium-app-0f554020c0e45302b7c9c0006f82faaacdcdd83b.tar.zst ferdium-app-0f554020c0e45302b7c9c0006f82faaacdcdd83b.zip |
Merge pull request #808 from meetfranz/release/5.0.0-beta.17v5.0.0-beta.17
Franz 5.0.0 beta.17
Diffstat (limited to 'src')
46 files changed, 2126 insertions, 416 deletions
diff --git a/src/I18n.js b/src/I18n.js index ae3ba2fa9..4ee34157c 100644 --- a/src/I18n.js +++ b/src/I18n.js | |||
@@ -9,11 +9,18 @@ import UserStore from './stores/UserStore'; | |||
9 | 9 | ||
10 | @inject('stores') @observer | 10 | @inject('stores') @observer |
11 | export default class I18N extends Component { | 11 | export default class I18N extends Component { |
12 | componentDidUpdate() { | ||
13 | window.franz.menu.rebuild(); | ||
14 | } | ||
15 | |||
12 | render() { | 16 | render() { |
13 | const { stores, children } = this.props; | 17 | const { stores, children } = this.props; |
14 | const { locale } = stores.app; | 18 | const { locale } = stores.app; |
15 | return ( | 19 | return ( |
16 | <IntlProvider {...{ locale, key: locale, messages: translations[locale] }}> | 20 | <IntlProvider |
21 | {...{ locale, key: locale, messages: translations[locale] }} | ||
22 | ref={(intlProvider) => { window.franz.intl = intlProvider ? intlProvider.getChildContext().intl : null; }} | ||
23 | > | ||
17 | {children} | 24 | {children} |
18 | </IntlProvider> | 25 | </IntlProvider> |
19 | ); | 26 | ); |
diff --git a/src/api/server/LocalApi.js b/src/api/server/LocalApi.js index aa3a7d655..4d2497c61 100644 --- a/src/api/server/LocalApi.js +++ b/src/api/server/LocalApi.js | |||
@@ -3,6 +3,8 @@ 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')('LocalApi'); | ||
7 | |||
6 | const { session } = remote; | 8 | const { session } = remote; |
7 | 9 | ||
8 | export default class LocalApi { | 10 | export default class LocalApi { |
@@ -13,7 +15,7 @@ export default class LocalApi { | |||
13 | du(partitionsDir, (err, size) => { | 15 | du(partitionsDir, (err, size) => { |
14 | if (err) reject(err); | 16 | if (err) reject(err); |
15 | 17 | ||
16 | console.debug('LocalApi::getAppCacheSize resolves', size); | 18 | debug('LocalApi::getAppCacheSize resolves', size); |
17 | resolve(size); | 19 | resolve(size); |
18 | }); | 20 | }); |
19 | }); | 21 | }); |
@@ -22,14 +24,14 @@ export default class LocalApi { | |||
22 | async clearCache(serviceId) { | 24 | async clearCache(serviceId) { |
23 | const s = session.fromPartition(`persist:service-${serviceId}`); | 25 | const s = session.fromPartition(`persist:service-${serviceId}`); |
24 | 26 | ||
25 | console.debug('LocalApi::clearCache resolves', serviceId); | 27 | debug('LocalApi::clearCache resolves', serviceId); |
26 | return new Promise(resolve => s.clearCache(resolve)); | 28 | return new Promise(resolve => s.clearCache(resolve)); |
27 | } | 29 | } |
28 | 30 | ||
29 | async clearAppCache() { | 31 | async clearAppCache() { |
30 | const s = session.defaultSession; | 32 | const s = session.defaultSession; |
31 | 33 | ||
32 | console.debug('LocalApi::clearCache clearAppCache'); | 34 | debug('LocalApi::clearCache clearAppCache'); |
33 | return new Promise(resolve => s.clearCache(resolve)); | 35 | return new Promise(resolve => s.clearCache(resolve)); |
34 | } | 36 | } |
35 | } | 37 | } |
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js index 8f3297d13..353faa7f4 100644 --- a/src/api/server/ServerApi.js +++ b/src/api/server/ServerApi.js | |||
@@ -27,6 +27,8 @@ import { | |||
27 | removeServicePartitionDirectory, | 27 | removeServicePartitionDirectory, |
28 | } from '../../helpers/service-helpers.js'; | 28 | } from '../../helpers/service-helpers.js'; |
29 | 29 | ||
30 | const debug = require('debug')('ServerApi'); | ||
31 | |||
30 | module.paths.unshift( | 32 | module.paths.unshift( |
31 | getDevRecipeDirectory(), | 33 | getDevRecipeDirectory(), |
32 | getRecipeDirectory(), | 34 | getRecipeDirectory(), |
@@ -55,7 +57,7 @@ export default class ServerApi { | |||
55 | } | 57 | } |
56 | const u = await request.json(); | 58 | const u = await request.json(); |
57 | 59 | ||
58 | console.debug('ServerApi::login resolves', u); | 60 | debug('ServerApi::login resolves', u); |
59 | return u.token; | 61 | return u.token; |
60 | } | 62 | } |
61 | 63 | ||
@@ -69,7 +71,7 @@ export default class ServerApi { | |||
69 | } | 71 | } |
70 | const u = await request.json(); | 72 | const u = await request.json(); |
71 | 73 | ||
72 | console.debug('ServerApi::signup resolves', u); | 74 | debug('ServerApi::signup resolves', u); |
73 | return u.token; | 75 | return u.token; |
74 | } | 76 | } |
75 | 77 | ||
@@ -82,7 +84,7 @@ export default class ServerApi { | |||
82 | throw request; | 84 | throw request; |
83 | } | 85 | } |
84 | 86 | ||
85 | console.debug('ServerApi::inviteUser'); | 87 | debug('ServerApi::inviteUser'); |
86 | return true; | 88 | return true; |
87 | } | 89 | } |
88 | 90 | ||
@@ -98,7 +100,7 @@ export default class ServerApi { | |||
98 | } | 100 | } |
99 | const r = await request.json(); | 101 | const r = await request.json(); |
100 | 102 | ||
101 | console.debug('ServerApi::retrievePassword'); | 103 | debug('ServerApi::retrievePassword'); |
102 | return r; | 104 | return r; |
103 | } | 105 | } |
104 | 106 | ||
@@ -112,7 +114,7 @@ export default class ServerApi { | |||
112 | const data = await request.json(); | 114 | const data = await request.json(); |
113 | 115 | ||
114 | const user = new UserModel(data); | 116 | const user = new UserModel(data); |
115 | console.debug('ServerApi::userInfo resolves', user); | 117 | debug('ServerApi::userInfo resolves', user); |
116 | 118 | ||
117 | return user; | 119 | return user; |
118 | } | 120 | } |
@@ -128,7 +130,7 @@ export default class ServerApi { | |||
128 | const updatedData = await request.json(); | 130 | const updatedData = await request.json(); |
129 | 131 | ||
130 | const user = Object.assign(updatedData, { data: new UserModel(updatedData.data) }); | 132 | const user = Object.assign(updatedData, { data: new UserModel(updatedData.data) }); |
131 | console.debug('ServerApi::updateUserInfo resolves', user); | 133 | debug('ServerApi::updateUserInfo resolves', user); |
132 | return user; | 134 | return user; |
133 | } | 135 | } |
134 | 136 | ||
@@ -141,7 +143,7 @@ export default class ServerApi { | |||
141 | } | 143 | } |
142 | const data = await request.json(); | 144 | const data = await request.json(); |
143 | 145 | ||
144 | console.debug('ServerApi::deleteAccount resolves', data); | 146 | debug('ServerApi::deleteAccount resolves', data); |
145 | return data; | 147 | return data; |
146 | } | 148 | } |
147 | 149 | ||
@@ -157,7 +159,7 @@ export default class ServerApi { | |||
157 | 159 | ||
158 | let services = await this._mapServiceModels(data); | 160 | let services = await this._mapServiceModels(data); |
159 | services = services.filter(service => service !== null); | 161 | services = services.filter(service => service !== null); |
160 | console.debug('ServerApi::getServices resolves', services); | 162 | debug('ServerApi::getServices resolves', services); |
161 | return services; | 163 | return services; |
162 | } | 164 | } |
163 | 165 | ||
@@ -181,7 +183,7 @@ export default class ServerApi { | |||
181 | 183 | ||
182 | const service = Object.assign(serviceData, { data: await this._prepareServiceModel(serviceData.data) }); | 184 | const service = Object.assign(serviceData, { data: await this._prepareServiceModel(serviceData.data) }); |
183 | 185 | ||
184 | console.debug('ServerApi::createService resolves', service); | 186 | debug('ServerApi::createService resolves', service); |
185 | return service; | 187 | return service; |
186 | } | 188 | } |
187 | 189 | ||
@@ -205,7 +207,7 @@ export default class ServerApi { | |||
205 | 207 | ||
206 | const service = Object.assign(serviceData, { data: await this._prepareServiceModel(serviceData.data) }); | 208 | const service = Object.assign(serviceData, { data: await this._prepareServiceModel(serviceData.data) }); |
207 | 209 | ||
208 | console.debug('ServerApi::updateService resolves', service); | 210 | debug('ServerApi::updateService resolves', service); |
209 | return service; | 211 | return service; |
210 | } | 212 | } |
211 | 213 | ||
@@ -240,7 +242,7 @@ export default class ServerApi { | |||
240 | throw request; | 242 | throw request; |
241 | } | 243 | } |
242 | const serviceData = await request.json(); | 244 | const serviceData = await request.json(); |
243 | console.debug('ServerApi::reorderService resolves', serviceData); | 245 | debug('ServerApi::reorderService resolves', serviceData); |
244 | return serviceData; | 246 | return serviceData; |
245 | } | 247 | } |
246 | 248 | ||
@@ -255,7 +257,7 @@ export default class ServerApi { | |||
255 | 257 | ||
256 | removeServicePartitionDirectory(id, true); | 258 | removeServicePartitionDirectory(id, true); |
257 | 259 | ||
258 | console.debug('ServerApi::deleteService resolves', data); | 260 | debug('ServerApi::deleteService resolves', data); |
259 | return data; | 261 | return data; |
260 | } | 262 | } |
261 | 263 | ||
@@ -277,7 +279,7 @@ export default class ServerApi { | |||
277 | 279 | ||
278 | this.recipes = this.recipes.concat(this._getDevRecipes()); | 280 | this.recipes = this.recipes.concat(this._getDevRecipes()); |
279 | 281 | ||
280 | console.debug('StubServerApi::getInstalledRecipes resolves', this.recipes); | 282 | debug('StubServerApi::getInstalledRecipes resolves', this.recipes); |
281 | return this.recipes; | 283 | return this.recipes; |
282 | } | 284 | } |
283 | 285 | ||
@@ -290,7 +292,7 @@ export default class ServerApi { | |||
290 | throw request; | 292 | throw request; |
291 | } | 293 | } |
292 | const recipes = await request.json(); | 294 | const recipes = await request.json(); |
293 | console.debug('ServerApi::getRecipeUpdates resolves', recipes); | 295 | debug('ServerApi::getRecipeUpdates resolves', recipes); |
294 | return recipes; | 296 | return recipes; |
295 | } | 297 | } |
296 | 298 | ||
@@ -305,7 +307,7 @@ export default class ServerApi { | |||
305 | const data = await request.json(); | 307 | const data = await request.json(); |
306 | 308 | ||
307 | const recipePreviews = this._mapRecipePreviewModel(data); | 309 | const recipePreviews = this._mapRecipePreviewModel(data); |
308 | console.debug('ServerApi::getRecipes resolves', recipePreviews); | 310 | debug('ServerApi::getRecipes resolves', recipePreviews); |
309 | 311 | ||
310 | return recipePreviews; | 312 | return recipePreviews; |
311 | } | 313 | } |
@@ -322,7 +324,7 @@ export default class ServerApi { | |||
322 | // data = this._addLocalRecipesToPreviews(data); | 324 | // data = this._addLocalRecipesToPreviews(data); |
323 | 325 | ||
324 | const recipePreviews = this._mapRecipePreviewModel(data); | 326 | const recipePreviews = this._mapRecipePreviewModel(data); |
325 | console.debug('ServerApi::getFeaturedRecipes resolves', recipePreviews); | 327 | debug('ServerApi::getFeaturedRecipes resolves', recipePreviews); |
326 | return recipePreviews; | 328 | return recipePreviews; |
327 | } | 329 | } |
328 | 330 | ||
@@ -336,7 +338,7 @@ export default class ServerApi { | |||
336 | const data = await request.json(); | 338 | const data = await request.json(); |
337 | 339 | ||
338 | const recipePreviews = this._mapRecipePreviewModel(data); | 340 | const recipePreviews = this._mapRecipePreviewModel(data); |
339 | console.debug('ServerApi::searchRecipePreviews resolves', recipePreviews); | 341 | debug('ServerApi::searchRecipePreviews resolves', recipePreviews); |
340 | return recipePreviews; | 342 | return recipePreviews; |
341 | } | 343 | } |
342 | 344 | ||
@@ -350,7 +352,7 @@ export default class ServerApi { | |||
350 | 352 | ||
351 | fs.ensureDirSync(recipeTempDirectory); | 353 | fs.ensureDirSync(recipeTempDirectory); |
352 | const res = await fetch(packageUrl); | 354 | const res = await fetch(packageUrl); |
353 | console.debug('Recipe downloaded', recipeId); | 355 | debug('Recipe downloaded', recipeId); |
354 | const buffer = await res.buffer(); | 356 | const buffer = await res.buffer(); |
355 | fs.writeFileSync(archivePath, buffer); | 357 | fs.writeFileSync(archivePath, buffer); |
356 | 358 | ||
@@ -392,7 +394,7 @@ export default class ServerApi { | |||
392 | const data = await request.json(); | 394 | const data = await request.json(); |
393 | 395 | ||
394 | const plan = new PlanModel(data); | 396 | const plan = new PlanModel(data); |
395 | console.debug('ServerApi::getPlans resolves', plan); | 397 | debug('ServerApi::getPlans resolves', plan); |
396 | return plan; | 398 | return plan; |
397 | } | 399 | } |
398 | 400 | ||
@@ -408,7 +410,7 @@ export default class ServerApi { | |||
408 | } | 410 | } |
409 | const data = await request.json(); | 411 | const data = await request.json(); |
410 | 412 | ||
411 | console.debug('ServerApi::getHostedPage resolves', data); | 413 | debug('ServerApi::getHostedPage resolves', data); |
412 | return data; | 414 | return data; |
413 | } | 415 | } |
414 | 416 | ||
@@ -421,7 +423,7 @@ export default class ServerApi { | |||
421 | } | 423 | } |
422 | const data = await request.json(); | 424 | const data = await request.json(); |
423 | 425 | ||
424 | console.debug('ServerApi::getPaymentDashboardUrl resolves', data); | 426 | debug('ServerApi::getPaymentDashboardUrl resolves', data); |
425 | return data; | 427 | return data; |
426 | } | 428 | } |
427 | 429 | ||
@@ -434,7 +436,7 @@ export default class ServerApi { | |||
434 | } | 436 | } |
435 | const data = await request.json(); | 437 | const data = await request.json(); |
436 | const orders = this._mapOrderModels(data); | 438 | const orders = this._mapOrderModels(data); |
437 | console.debug('ServerApi::getSubscriptionOrders resolves', orders); | 439 | debug('ServerApi::getSubscriptionOrders resolves', orders); |
438 | return orders; | 440 | return orders; |
439 | } | 441 | } |
440 | 442 | ||
@@ -451,7 +453,7 @@ export default class ServerApi { | |||
451 | } | 453 | } |
452 | const data = await request.json(); | 454 | const data = await request.json(); |
453 | const news = this._mapNewsModels(data); | 455 | const news = this._mapNewsModels(data); |
454 | console.debug('ServerApi::getLatestNews resolves', news); | 456 | debug('ServerApi::getLatestNews resolves', news); |
455 | return news; | 457 | return news; |
456 | } | 458 | } |
457 | 459 | ||
@@ -465,7 +467,7 @@ export default class ServerApi { | |||
465 | throw request; | 467 | throw request; |
466 | } | 468 | } |
467 | 469 | ||
468 | console.debug('ServerApi::hideNews resolves', id); | 470 | debug('ServerApi::hideNews resolves', id); |
469 | } | 471 | } |
470 | 472 | ||
471 | // Health Check | 473 | // Health Check |
@@ -476,7 +478,7 @@ export default class ServerApi { | |||
476 | if (!request.ok) { | 478 | if (!request.ok) { |
477 | throw request; | 479 | throw request; |
478 | } | 480 | } |
479 | console.debug('ServerApi::healthCheck resolves'); | 481 | debug('ServerApi::healthCheck resolves'); |
480 | } | 482 | } |
481 | 483 | ||
482 | async getLegacyServices() { | 484 | async getLegacyServices() { |
@@ -502,7 +504,7 @@ export default class ServerApi { | |||
502 | return service; | 504 | return service; |
503 | })); | 505 | })); |
504 | 506 | ||
505 | console.debug('ServerApi::getLegacyServices resolves', services); | 507 | debug('ServerApi::getLegacyServices resolves', services); |
506 | return services; | 508 | return services; |
507 | } | 509 | } |
508 | } catch (err) { | 510 | } catch (err) { |
@@ -535,7 +537,7 @@ export default class ServerApi { | |||
535 | 537 | ||
536 | return new ServiceModel(service, recipe); | 538 | return new ServiceModel(service, recipe); |
537 | } catch (e) { | 539 | } catch (e) { |
538 | console.debug(e); | 540 | debug(e); |
539 | return null; | 541 | return null; |
540 | } | 542 | } |
541 | } | 543 | } |
@@ -553,7 +555,7 @@ export default class ServerApi { | |||
553 | 555 | ||
554 | await this.getRecipePackage(recipeId); | 556 | await this.getRecipePackage(recipeId); |
555 | 557 | ||
556 | console.debug('Rerun ServerAPI::getInstalledRecipes'); | 558 | debug('Rerun ServerAPI::getInstalledRecipes'); |
557 | await this.getInstalledRecipes(); | 559 | await this.getInstalledRecipes(); |
558 | 560 | ||
559 | recipe = this.recipes.find(r => r.id === recipeId); | 561 | recipe = this.recipes.find(r => r.id === recipeId); |
@@ -653,7 +655,7 @@ export default class ServerApi { | |||
653 | 655 | ||
654 | return recipes; | 656 | return recipes; |
655 | } catch (err) { | 657 | } catch (err) { |
656 | console.debug('Could not load dev recipes'); | 658 | debug('Could not load dev recipes'); |
657 | return false; | 659 | return false; |
658 | } | 660 | } |
659 | } | 661 | } |
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index 20dc2f764..66aef1730 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js | |||
@@ -2,10 +2,13 @@ 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 { TitleBar } from 'electron-react-titlebar'; | ||
5 | 6 | ||
6 | import InfoBar from '../ui/InfoBar'; | 7 | import InfoBar from '../ui/InfoBar'; |
7 | import globalMessages from '../../i18n/globalMessages'; | 8 | import globalMessages from '../../i18n/globalMessages'; |
8 | 9 | ||
10 | import { isWindows } from '../../environment'; | ||
11 | |||
9 | function createMarkup(HTMLString) { | 12 | function createMarkup(HTMLString) { |
10 | return { __html: HTMLString }; | 13 | return { __html: HTMLString }; |
11 | } | 14 | } |
@@ -87,64 +90,67 @@ export default class AppLayout extends Component { | |||
87 | return ( | 90 | return ( |
88 | <div> | 91 | <div> |
89 | <div className="app"> | 92 | <div className="app"> |
90 | {sidebar} | 93 | {isWindows && <TitleBar menu={window.franz.menu.template} icon={'assets/images/logo.svg'} />} |
91 | <div className="app__service"> | 94 | <div className="app__content"> |
92 | {news.length > 0 && news.map(item => ( | 95 | {sidebar} |
93 | <InfoBar | 96 | <div className="app__service"> |
94 | key={item.id} | 97 | {news.length > 0 && news.map(item => ( |
95 | position="top" | 98 | <InfoBar |
96 | type={item.type} | 99 | key={item.id} |
97 | sticky={item.sticky} | 100 | position="top" |
98 | onHide={() => removeNewsItem({ newsId: item.id })} | 101 | type={item.type} |
99 | > | 102 | sticky={item.sticky} |
100 | <span dangerouslySetInnerHTML={createMarkup(item.message)} /> | 103 | onHide={() => removeNewsItem({ newsId: item.id })} |
101 | </InfoBar> | 104 | > |
102 | ))} | 105 | <span dangerouslySetInnerHTML={createMarkup(item.message)} /> |
103 | {!isOnline && ( | 106 | </InfoBar> |
104 | <InfoBar | 107 | ))} |
105 | type="danger" | 108 | {!isOnline && ( |
106 | > | 109 | <InfoBar |
107 | <span className="mdi mdi-flash" /> | 110 | type="danger" |
108 | {intl.formatMessage(globalMessages.notConnectedToTheInternet)} | 111 | > |
109 | </InfoBar> | 112 | <span className="mdi mdi-flash" /> |
110 | )} | 113 | {intl.formatMessage(globalMessages.notConnectedToTheInternet)} |
111 | {!areRequiredRequestsSuccessful && showRequiredRequestsError && ( | 114 | </InfoBar> |
112 | <InfoBar | 115 | )} |
113 | type="danger" | 116 | {!areRequiredRequestsSuccessful && showRequiredRequestsError && ( |
114 | ctaLabel="Try again" | 117 | <InfoBar |
115 | ctaLoading={areRequiredRequestsLoading} | 118 | type="danger" |
116 | sticky | 119 | ctaLabel="Try again" |
117 | onClick={retryRequiredRequests} | 120 | ctaLoading={areRequiredRequestsLoading} |
118 | > | 121 | sticky |
119 | <span className="mdi mdi-flash" /> | 122 | onClick={retryRequiredRequests} |
120 | {intl.formatMessage(messages.requiredRequestsFailed)} | 123 | > |
121 | </InfoBar> | 124 | <span className="mdi mdi-flash" /> |
122 | )} | 125 | {intl.formatMessage(messages.requiredRequestsFailed)} |
123 | {showServicesUpdatedInfoBar && ( | 126 | </InfoBar> |
124 | <InfoBar | 127 | )} |
125 | type="primary" | 128 | {showServicesUpdatedInfoBar && ( |
126 | ctaLabel={intl.formatMessage(messages.buttonReloadServices)} | 129 | <InfoBar |
127 | onClick={reloadServicesAfterUpdate} | 130 | type="primary" |
128 | sticky | 131 | ctaLabel={intl.formatMessage(messages.buttonReloadServices)} |
129 | > | 132 | onClick={reloadServicesAfterUpdate} |
130 | <span className="mdi mdi-power-plug" /> | 133 | sticky |
131 | {intl.formatMessage(messages.servicesUpdated)} | 134 | > |
132 | </InfoBar> | 135 | <span className="mdi mdi-power-plug" /> |
133 | )} | 136 | {intl.formatMessage(messages.servicesUpdated)} |
134 | {appUpdateIsDownloaded && ( | 137 | </InfoBar> |
135 | <InfoBar | 138 | )} |
136 | type="primary" | 139 | {appUpdateIsDownloaded && ( |
137 | ctaLabel={intl.formatMessage(messages.buttonInstallUpdate)} | 140 | <InfoBar |
138 | onClick={installAppUpdate} | 141 | type="primary" |
139 | sticky | 142 | ctaLabel={intl.formatMessage(messages.buttonInstallUpdate)} |
140 | > | 143 | onClick={installAppUpdate} |
141 | <span className="mdi mdi-information" /> | 144 | sticky |
142 | {intl.formatMessage(messages.updateAvailable)} <a href="https://meetfranz.com/changelog" target="_blank"> | 145 | > |
143 | <u>{intl.formatMessage(messages.changelog)}</u> | 146 | <span className="mdi mdi-information" /> |
144 | </a> | 147 | {intl.formatMessage(messages.updateAvailable)} <a href="https://meetfranz.com/changelog" target="_blank"> |
145 | </InfoBar> | 148 | <u>{intl.formatMessage(messages.changelog)}</u> |
146 | )} | 149 | </a> |
147 | {services} | 150 | </InfoBar> |
151 | )} | ||
152 | {services} | ||
153 | </div> | ||
148 | </div> | 154 | </div> |
149 | </div> | 155 | </div> |
150 | {children} | 156 | {children} |
diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js index 7aed8fda7..638262f7f 100644 --- a/src/components/services/tabs/TabItem.js +++ b/src/components/services/tabs/TabItem.js | |||
@@ -7,7 +7,7 @@ import classnames from 'classnames'; | |||
7 | import { SortableElement } from 'react-sortable-hoc'; | 7 | import { SortableElement } from 'react-sortable-hoc'; |
8 | 8 | ||
9 | import ServiceModel from '../../../models/Service'; | 9 | import ServiceModel from '../../../models/Service'; |
10 | import { ctrlKey } from '../../../environment'; | 10 | import { isDevMode, ctrlKey } from '../../../environment'; |
11 | 11 | ||
12 | const { Menu } = remote; | 12 | const { Menu } = remote; |
13 | 13 | ||
@@ -119,10 +119,14 @@ class TabItem extends Component { | |||
119 | click: () => (service.isEnabled ? disableService() : enableService()), | 119 | click: () => (service.isEnabled ? disableService() : enableService()), |
120 | }, { | 120 | }, { |
121 | type: 'separator', | 121 | type: 'separator', |
122 | }, { | ||
123 | label: intl.formatMessage(messages.deleteService), | ||
124 | click: () => deleteService(), | ||
125 | }]; | 122 | }]; |
123 | |||
124 | if (isDevMode) { | ||
125 | menuTemplate.push({ | ||
126 | label: intl.formatMessage(messages.deleteService), | ||
127 | click: () => deleteService(), | ||
128 | }); | ||
129 | } | ||
126 | const menu = Menu.buildFromTemplate(menuTemplate); | 130 | const menu = Menu.buildFromTemplate(menuTemplate); |
127 | 131 | ||
128 | let notificationBadge = null; | 132 | let notificationBadge = null; |
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js index e4a9d60c3..075bd5e34 100644 --- a/src/containers/layout/AppLayoutContainer.js +++ b/src/containers/layout/AppLayoutContainer.js | |||
@@ -94,7 +94,7 @@ export default class AppLayoutContainer extends Component { | |||
94 | 94 | ||
95 | const servicesContainer = ( | 95 | const servicesContainer = ( |
96 | <Services | 96 | <Services |
97 | services={services.allDisplayed} | 97 | services={services.allDisplayedUnordered} |
98 | handleIPCMessage={handleIPCMessage} | 98 | handleIPCMessage={handleIPCMessage} |
99 | setWebviewReference={setWebviewReference} | 99 | setWebviewReference={setWebviewReference} |
100 | openWindow={openWindow} | 100 | openWindow={openWindow} |
diff --git a/src/environment.js b/src/environment.js index e185120c0..e1762129b 100644 --- a/src/environment.js +++ b/src/environment.js | |||
@@ -4,11 +4,17 @@ export const isDevMode = Boolean(process.execPath.match(/[\\/]electron/)); | |||
4 | export const useLiveAPI = process.env.LIVE_API; | 4 | export const useLiveAPI = process.env.LIVE_API; |
5 | export const useLocalAPI = process.env.LOCAL_API; | 5 | export const useLocalAPI = process.env.LOCAL_API; |
6 | 6 | ||
7 | export const isMac = process.platform === 'darwin'; | 7 | let platform = process.platform; |
8 | export const isWindows = process.platform === 'win32'; | 8 | if (process.env.OS_PLATFORM) { |
9 | export const isLinux = process.platform === 'linux'; | 9 | platform = process.env.OS_PLATFORM; |
10 | } | ||
11 | |||
12 | export const isMac = platform === 'darwin'; | ||
13 | export const isWindows = platform === 'win32'; | ||
14 | export const isLinux = platform === 'linux'; | ||
10 | 15 | ||
11 | export const ctrlKey = isMac ? '⌘' : 'Ctrl'; | 16 | export const ctrlKey = isMac ? '⌘' : 'Ctrl'; |
17 | export const cmdKey = isMac ? 'Cmd' : 'Ctrl'; | ||
12 | 18 | ||
13 | let api; | 19 | let api; |
14 | if (!isDevMode || (isDevMode && useLiveAPI)) { | 20 | if (!isDevMode || (isDevMode && useLiveAPI)) { |
diff --git a/src/helpers/validation-helpers.js b/src/helpers/validation-helpers.js index a8a242d54..2f762437d 100644 --- a/src/helpers/validation-helpers.js +++ b/src/helpers/validation-helpers.js | |||
@@ -1,6 +1,31 @@ | |||
1 | import { defineMessages } from 'react-intl'; | ||
2 | |||
3 | const messages = defineMessages({ | ||
4 | required: { | ||
5 | id: 'validation.required', | ||
6 | defaultMessage: '!!!Field is required', | ||
7 | }, | ||
8 | email: { | ||
9 | id: 'validation.email', | ||
10 | defaultMessage: '!!!Email not valid', | ||
11 | }, | ||
12 | url: { | ||
13 | id: 'validation.url', | ||
14 | defaultMessage: '!!!Not a valid URL', | ||
15 | }, | ||
16 | minLength: { | ||
17 | id: 'validation.minLength', | ||
18 | defaultMessage: '!!!Too few characters', | ||
19 | }, | ||
20 | oneRequired: { | ||
21 | id: 'validation.oneRequired', | ||
22 | defaultMessage: '!!!At least one is required', | ||
23 | }, | ||
24 | }); | ||
25 | |||
1 | export function required({ field }) { | 26 | export function required({ field }) { |
2 | const isValid = (field.value.trim() !== ''); | 27 | const isValid = (field.value.trim() !== ''); |
3 | return [isValid, `${field.label} is required`]; | 28 | return [isValid, window.franz.intl.formatMessage(messages.required, { field: field.label })]; |
4 | } | 29 | } |
5 | 30 | ||
6 | export function email({ field }) { | 31 | export function email({ field }) { |
@@ -13,7 +38,7 @@ export function email({ field }) { | |||
13 | isValid = true; | 38 | isValid = true; |
14 | } | 39 | } |
15 | 40 | ||
16 | return [isValid, `${field.label} not valid`]; | 41 | return [isValid, window.franz.intl.formatMessage(messages.email, { field: field.label })]; |
17 | } | 42 | } |
18 | 43 | ||
19 | export function url({ field }) { | 44 | export function url({ field }) { |
@@ -27,7 +52,7 @@ export function url({ field }) { | |||
27 | isValid = true; | 52 | isValid = true; |
28 | } | 53 | } |
29 | 54 | ||
30 | return [isValid, `${field.label} is not a valid url`]; | 55 | return [isValid, window.franz.intl.formatMessage(messages.url, { field: field.label })]; |
31 | } | 56 | } |
32 | 57 | ||
33 | export function minLength(length) { | 58 | export function minLength(length) { |
@@ -36,13 +61,13 @@ export function minLength(length) { | |||
36 | if (field.touched) { | 61 | if (field.touched) { |
37 | isValid = field.value.length >= length; | 62 | isValid = field.value.length >= length; |
38 | } | 63 | } |
39 | return [isValid, `${field.label} should be at least ${length} characters long.`]; | 64 | return [isValid, window.franz.intl.formatMessage(messages.minLength, { field: field.label, length })]; |
40 | }; | 65 | }; |
41 | } | 66 | } |
42 | 67 | ||
43 | export function oneRequired(targets) { | 68 | export function oneRequired(targets) { |
44 | return ({ field, form }) => { | 69 | return ({ field, form }) => { |
45 | const invalidFields = targets.filter(target => form.$(target).value === ''); | 70 | const invalidFields = targets.filter(target => form.$(target).value === ''); |
46 | return [targets.length !== invalidFields.length, `${field.label} is required`]; | 71 | return [targets.length !== invalidFields.length, window.franz.intl.formatMessage(messages.required, { field: field.label })]; |
47 | }; | 72 | }; |
48 | } | 73 | } |
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 524dfe0fb..be9059727 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "La teva sessió ha caducat, torna a iniciar la sessió.", | 26 | "login.serverLogout" : "La teva sessió ha caducat, torna a iniciar la sessió.", |
27 | "login.submit.label" : "Accedir", | 27 | "login.submit.label" : "Accedir", |
28 | "login.tokenExpired" : "La teva sessió ha caducat, torna a iniciar la sessió.", | 28 | "login.tokenExpired" : "La teva sessió ha caducat, torna a iniciar la sessió.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Configuració", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Edita", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Suprimeix", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Declaració de privacitat", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Correu electrònic", | 72 | "password.email.label" : "Correu electrònic", |
30 | "password.headline" : "Restablir contrasenya", | 73 | "password.headline" : "Restablir contrasenya", |
31 | "password.link.login" : "Inicia la sessió al teu compte", | 74 | "password.link.login" : "Inicia la sessió al teu compte", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Activa les notificacions", | 240 | "tabs.item.enableNotification" : "Activa les notificacions", |
198 | "tabs.item.enableService" : "Activa el servei", | 241 | "tabs.item.enableService" : "Activa el servei", |
199 | "tabs.item.reload" : "Recarrega", | 242 | "tabs.item.reload" : "Recarrega", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Inicia sessió al teu compte", | 247 | "welcome.loginButton" : "Inicia sessió al teu compte", |
201 | "welcome.signupButton" : "Crea un compte gratuït", | 248 | "welcome.signupButton" : "Crea un compte gratuït", |
202 | "welcome.slogan" : "Crea un compte gratuït" | 249 | "welcome.slogan" : "Crea un compte gratuït" |
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index 62eb4a1ee..b4142b928 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Sezenà vypršelo, je třeba se znovu přihlásit.", | 26 | "login.serverLogout" : "Sezenà vypršelo, je třeba se znovu přihlásit.", |
27 | "login.submit.label" : "Přihlásit se", | 27 | "login.submit.label" : "Přihlásit se", |
28 | "login.tokenExpired" : "Sezenà vyprÅ¡elo, prosÃm pÅ™ihlaste se znovu", | 28 | "login.tokenExpired" : "Sezenà vyprÅ¡elo, prosÃm pÅ™ihlaste se znovu", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "NastavenÃ", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Upravit", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Smazat", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Prohlášenà o ochranÄ› soukromÃ", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "E-mailová adresa", | 72 | "password.email.label" : "E-mailová adresa", |
30 | "password.headline" : "Obnovit heslo", | 73 | "password.headline" : "Obnovit heslo", |
31 | "password.link.login" : "PÅ™ihlásit se k úÄtu", | 74 | "password.link.login" : "PÅ™ihlásit se k úÄtu", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Povolit oznamovánÃ", | 240 | "tabs.item.enableNotification" : "Povolit oznamovánÃ", |
198 | "tabs.item.enableService" : "Zapnout službu", | 241 | "tabs.item.enableService" : "Zapnout službu", |
199 | "tabs.item.reload" : "Obnovit", | 242 | "tabs.item.reload" : "Obnovit", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "PÅ™ihlášenà do vaÅ¡eho úÄtu", | 247 | "welcome.loginButton" : "PÅ™ihlášenà do vaÅ¡eho úÄtu", |
201 | "welcome.signupButton" : "VytvoÅ™it úÄet zdarma", | 248 | "welcome.signupButton" : "VytvoÅ™it úÄet zdarma", |
202 | "welcome.slogan" : "Zprávy, které pracujà pro vás" | 249 | "welcome.slogan" : "Zprávy, které pracujà pro vás" |
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 7a03cce87..9aaef0465 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.", | 26 | "login.serverLogout" : "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.", |
27 | "login.submit.label" : "Anmelden", | 27 | "login.submit.label" : "Anmelden", |
28 | "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.", | 28 | "login.tokenExpired" : "Deine Sitzung ist abgelaufen, bitte melde dich erneut an.", |
29 | "menu.app.about" : "Ãœber Franz", | ||
30 | "menu.app.hide" : "Franz ausblenden", | ||
31 | "menu.app.hideOthers" : "Andere ausblenden", | ||
32 | "menu.app.quit" : "Franz Beenden", | ||
33 | "menu.app.settings" : "Einstellungen", | ||
34 | "menu.app.unhide" : "Alle einblenden", | ||
35 | "menu.edit" : "Bearbeiten", | ||
36 | "menu.edit.copy" : "Kopieren", | ||
37 | "menu.edit.cut" : "Ausschneiden", | ||
38 | "menu.edit.delete" : "Löschen", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbole", | ||
40 | "menu.edit.paste" : "Einfügen", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Einfügen und Stil anpassen", | ||
42 | "menu.edit.redo" : "Wiederholen", | ||
43 | "menu.edit.selectAll" : "Alle auswählen", | ||
44 | "menu.edit.speech" : "Sprachausgabe", | ||
45 | "menu.edit.startDictation" : "Diktat starten ...", | ||
46 | "menu.edit.startSpeaking" : "Sprachausgabe starten", | ||
47 | "menu.edit.stopSpeaking" : "Sprachausgabe stoppen", | ||
48 | "menu.edit.undo" : "Widerrufen", | ||
49 | "menu.file" : "Datei", | ||
50 | "menu.help" : "Hilfe", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Mehr erfahren", | ||
53 | "menu.help.privacy" : "Datenschutzerklärung", | ||
54 | "menu.help.support" : "Hilfe", | ||
55 | "menu.help.tos" : "Nutzungsbedingungen", | ||
56 | "menu.services" : "Dienste", | ||
57 | "menu.services.addNewService" : "Dienst hinzufügen", | ||
58 | "menu.view" : "Darstellung", | ||
59 | "menu.view.enterFullScreen" : "Vollbildmodus", | ||
60 | "menu.view.exitFullScreen" : "Vollbildmodus aus", | ||
61 | "menu.view.reloadFranz" : "Franz neu laden", | ||
62 | "menu.view.reloadService" : "Dienst neu laden", | ||
63 | "menu.view.resetZoom" : "Originalgröße", | ||
64 | "menu.view.toggleDevTools" : "Entwicklertools anzeigen", | ||
65 | "menu.view.toggleFullScreen" : "Vollbildmodus umschalten", | ||
66 | "menu.view.toggleServiceDevTools" : "Entwicklertools für Dienst anzeigen", | ||
67 | "menu.view.zoomIn" : "Vergrößern", | ||
68 | "menu.view.zoomOut" : "Verkleinern", | ||
69 | "menu.window" : "Fenster", | ||
70 | "menu.window.close" : "Schließen", | ||
71 | "menu.window.minimize" : "Minimieren", | ||
29 | "password.email.label" : "E-Mail Adresse", | 72 | "password.email.label" : "E-Mail Adresse", |
30 | "password.headline" : "Passwort zurücksetzen", | 73 | "password.headline" : "Passwort zurücksetzen", |
31 | "password.link.login" : "An deinem Konto anmelden", | 74 | "password.link.login" : "An deinem Konto anmelden", |
@@ -157,7 +200,7 @@ | |||
157 | "settings.user.form.firstname" : "Vorname", | 200 | "settings.user.form.firstname" : "Vorname", |
158 | "settings.user.form.lastname" : "Nachname", | 201 | "settings.user.form.lastname" : "Nachname", |
159 | "settings.user.form.newPassword" : "Neues Passwort", | 202 | "settings.user.form.newPassword" : "Neues Passwort", |
160 | "sidebar.addNewService" : "Neuem Dienst hinzufügen", | 203 | "sidebar.addNewService" : "Neuen Dienst hinzufügen", |
161 | "sidebar.muteApp" : "Benachrichtigungen & Audio deaktivieren", | 204 | "sidebar.muteApp" : "Benachrichtigungen & Audio deaktivieren", |
162 | "sidebar.settings" : "Einstellungen", | 205 | "sidebar.settings" : "Einstellungen", |
163 | "sidebar.unmuteApp" : "Benachrichtigungen & Audio aktivieren", | 206 | "sidebar.unmuteApp" : "Benachrichtigungen & Audio aktivieren", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Benachrichtigungen aktivieren", | 240 | "tabs.item.enableNotification" : "Benachrichtigungen aktivieren", |
198 | "tabs.item.enableService" : "Dienst aktivieren", | 241 | "tabs.item.enableService" : "Dienst aktivieren", |
199 | "tabs.item.reload" : "Neuladen", | 242 | "tabs.item.reload" : "Neuladen", |
243 | "validation.email" : "{field} ist ungültig", | ||
244 | "validation.minLength" : "{field} muss mindestens {length} Zeichen enthalten", | ||
245 | "validation.required" : "{field} wird benötigt", | ||
246 | "validation.url" : "{field} ist keine gültige URL", | ||
200 | "welcome.loginButton" : "Bei Franz einloggen", | 247 | "welcome.loginButton" : "Bei Franz einloggen", |
201 | "welcome.signupButton" : "Kostenloses Konto erstellen", | 248 | "welcome.signupButton" : "Kostenloses Konto erstellen", |
202 | "welcome.slogan" : "Kommunikation, die für dich funktioniert" | 249 | "welcome.slogan" : "Kommunikation, die für dich funktioniert" |
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index b0c465940..ae37d1f5e 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Η συνεδÏία σας Îληξε, συνδεθείτε ξανά.", | 26 | "login.serverLogout" : "Η συνεδÏία σας Îληξε, συνδεθείτε ξανά.", |
27 | "login.submit.label" : "ΣÏνδεση", | 27 | "login.submit.label" : "ΣÏνδεση", |
28 | "login.tokenExpired" : "Η συνεδÏία σας Îληξε, συνδεθείτε ξανά.", | 28 | "login.tokenExpired" : "Η συνεδÏία σας Îληξε, συνδεθείτε ξανά.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Ρυθμίσεις", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "ΕπεξεÏγασία", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "ΔιαγÏαφή", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Δήλωση αποÏÏήτου", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου", | 72 | "password.email.label" : "ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου", |
30 | "password.headline" : "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης", | 73 | "password.headline" : "ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης", |
31 | "password.link.login" : "ΣÏνδεση στο λογαÏιασμό σας", | 74 | "password.link.login" : "ΣÏνδεση στο λογαÏιασμό σας", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "ΕνεÏγοποίηση ειδοποιήσεων", | 240 | "tabs.item.enableNotification" : "ΕνεÏγοποίηση ειδοποιήσεων", |
198 | "tabs.item.enableService" : "ΕνεÏγοποίηση υπηÏεσίας", | 241 | "tabs.item.enableService" : "ΕνεÏγοποίηση υπηÏεσίας", |
199 | "tabs.item.reload" : "ΕπαναφόÏτωση", | 242 | "tabs.item.reload" : "ΕπαναφόÏτωση", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "ΣÏνδεση στο λογαÏιασμό σας", | 247 | "welcome.loginButton" : "ΣÏνδεση στο λογαÏιασμό σας", |
201 | "welcome.signupButton" : "ΔημιουÏγία δωÏεάν λογαÏιασμοÏ", | 248 | "welcome.signupButton" : "ΔημιουÏγία δωÏεάν λογαÏιασμοÏ", |
202 | "welcome.slogan" : "Επικοινωνία που λειτουÏγεί για εσάς" | 249 | "welcome.slogan" : "Επικοινωνία που λειτουÏγεί για εσάς" |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index d5c0ea441..400a9a5d8 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -199,5 +199,52 @@ | |||
199 | "service.crashHandler.action": "Reload {name}", | 199 | "service.crashHandler.action": "Reload {name}", |
200 | "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", | 200 | "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", |
201 | "service.disabledHandler.headline": "{name} is disabled", | 201 | "service.disabledHandler.headline": "{name} is disabled", |
202 | "service.disabledHandler.action": "Enable {name}" | 202 | "service.disabledHandler.action": "Enable {name}", |
203 | "menu.edit": "Edit", | ||
204 | "menu.edit.undo": "Undo", | ||
205 | "menu.edit.redo": "Redo", | ||
206 | "menu.edit.cut": "Cut", | ||
207 | "menu.edit.copy": "Copy", | ||
208 | "menu.edit.paste": "Paste", | ||
209 | "menu.edit.pasteAndMatchStyle": "Paste And Match Style", | ||
210 | "menu.edit.delete": "Delete", | ||
211 | "menu.edit.selectAll": "Select All", | ||
212 | "menu.edit.speech": "Speech", | ||
213 | "menu.edit.startSpeaking": "Start Speaking", | ||
214 | "menu.edit.stopSpeaking": "Stop Speaking", | ||
215 | "menu.edit.startDictation": "Start Dictation", | ||
216 | "menu.edit.emojiSymbols": "Emoji & Symbols", | ||
217 | "menu.view.resetZoom": "Actual Size", | ||
218 | "menu.view.zoomIn": "Zoom In", | ||
219 | "menu.view.zoomOut": "Zoom Out", | ||
220 | "menu.view.enterFullScreen": "Enter Full Screen", | ||
221 | "menu.view.exitFullScreen": "Exit Full Screen", | ||
222 | "menu.view.toggleFullScreen": "Toggle Full Screen", | ||
223 | "menu.view.toggleDevTools": "Toggle Developer Tools", | ||
224 | "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools", | ||
225 | "menu.view.reloadService": "Reload Service", | ||
226 | "menu.view.reloadFranz": "Reload Franz", | ||
227 | "menu.window.minimize": "Minimize", | ||
228 | "menu.window.close": "Close", | ||
229 | "menu.help.learnMore": "Learn More", | ||
230 | "menu.help.changelog": "Changelog", | ||
231 | "menu.help.support": "Support", | ||
232 | "menu.help.tos": "Terms of Service", | ||
233 | "menu.help.privacy": "Privacy Statement", | ||
234 | "menu.file": "File", | ||
235 | "menu.view": "View", | ||
236 | "menu.services": "Services", | ||
237 | "menu.window": "Window", | ||
238 | "menu.help": "Help", | ||
239 | "menu.app.about": "About Franz", | ||
240 | "menu.app.settings": "Settings", | ||
241 | "menu.app.hide": "Hide", | ||
242 | "menu.app.hideOthers": "Hide Others", | ||
243 | "menu.app.unhide": "Unhide", | ||
244 | "menu.app.quit": "Quit", | ||
245 | "menu.services.addNewService": "Add New Service...", | ||
246 | "validation.required": "{field} is required", | ||
247 | "validation.email": "{field} is not valid", | ||
248 | "validation.url": "{field} is not a valid URL", | ||
249 | "validation.minLength": "{field} should be at least {length} characters long" | ||
203 | } | 250 | } |
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 407266285..640f87c20 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json | |||
@@ -1,6 +1,6 @@ | |||
1 | { | 1 | { |
2 | "global.api.unhealthy" : "No se puede conectar a los servicios en lÃnea de Franz.", | 2 | "global.api.unhealthy" : "No se puede conectar a los servicios en lÃnea de Franz.", |
3 | "global.notConnectedToTheInternet" : "No estás conectado a Internet", | 3 | "global.notConnectedToTheInternet" : "No está conectado a Internet", |
4 | "import.headline" : "Importa tus servicios de Franz 4", | 4 | "import.headline" : "Importa tus servicios de Franz 4", |
5 | "import.notSupportedHeadline" : "Servicios no soportados aún en Franz 5", | 5 | "import.notSupportedHeadline" : "Servicios no soportados aún en Franz 5", |
6 | "import.skip.label" : "Quiero agregar servicios manualmente", | 6 | "import.skip.label" : "Quiero agregar servicios manualmente", |
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Tu sesión ha expirado, por favor inicia la sesión de nuevo.", | 26 | "login.serverLogout" : "Tu sesión ha expirado, por favor inicia la sesión de nuevo.", |
27 | "login.submit.label" : "Iniciar sesión", | 27 | "login.submit.label" : "Iniciar sesión", |
28 | "login.tokenExpired" : "Tu sesión expiró, por favor la inicia sesión nuevamente.", | 28 | "login.tokenExpired" : "Tu sesión expiró, por favor la inicia sesión nuevamente.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Configuración", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Editar", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Borrar", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Declaración de privacidad", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Dirección de correo electrónico", | 72 | "password.email.label" : "Dirección de correo electrónico", |
30 | "password.headline" : "Restablecer contraseña", | 73 | "password.headline" : "Restablecer contraseña", |
31 | "password.link.login" : "Iniciar sesión en tu cuenta", | 74 | "password.link.login" : "Iniciar sesión en tu cuenta", |
@@ -76,7 +119,7 @@ | |||
76 | "settings.app.form.enableMenuBar" : "mostrar a franz en La barra de menús", | 119 | "settings.app.form.enableMenuBar" : "mostrar a franz en La barra de menús", |
77 | "settings.app.form.enableSpellchecking" : "Activar corrección ortográfica", | 120 | "settings.app.form.enableSpellchecking" : "Activar corrección ortográfica", |
78 | "settings.app.form.enableSystemTray" : "Mostrar Franz en la bandeja del sistema", | 121 | "settings.app.form.enableSystemTray" : "Mostrar Franz en la bandeja del sistema", |
79 | "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock", | 122 | "settings.app.form.hideDockIcon" : "Ocultar Icono de Franz en barra de herramientas", |
80 | "settings.app.form.language" : "Idioma", | 123 | "settings.app.form.language" : "Idioma", |
81 | "settings.app.form.minimizeToSystemTray" : "Minimizar Franz a la bandeja del sistema", | 124 | "settings.app.form.minimizeToSystemTray" : "Minimizar Franz a la bandeja del sistema", |
82 | "settings.app.form.runInBackground" : "Mantener Franz en segundo plano al cerrar la ventana", | 125 | "settings.app.form.runInBackground" : "Mantener Franz en segundo plano al cerrar la ventana", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Activar notificaciones", | 240 | "tabs.item.enableNotification" : "Activar notificaciones", |
198 | "tabs.item.enableService" : "Activar servicio", | 241 | "tabs.item.enableService" : "Activar servicio", |
199 | "tabs.item.reload" : "Recargar", | 242 | "tabs.item.reload" : "Recargar", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Accede a tu cuenta", | 247 | "welcome.loginButton" : "Accede a tu cuenta", |
201 | "welcome.signupButton" : "Crear una cuenta gratuita", | 248 | "welcome.signupButton" : "Crear una cuenta gratuita", |
202 | "welcome.slogan" : "MensajerÃa que funciona para ti" | 249 | "welcome.slogan" : "MensajerÃa que funciona para ti" |
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 35a55fcc2..a40a60833 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json | |||
@@ -1,6 +1,6 @@ | |||
1 | { | 1 | { |
2 | "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz.", | 2 | "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz", |
3 | "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté(e) à Internet.", | 3 | "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté à Internet.", |
4 | "import.headline" : "Importez vos services depuis la version 4 de Franz.", | 4 | "import.headline" : "Importez vos services depuis la version 4 de Franz.", |
5 | "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par Franz 5", | 5 | "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par Franz 5", |
6 | "import.skip.label" : "Je veux ajouter des services manuellement", | 6 | "import.skip.label" : "Je veux ajouter des services manuellement", |
@@ -16,7 +16,7 @@ | |||
16 | "invite.name.label" : "Nom", | 16 | "invite.name.label" : "Nom", |
17 | "invite.skip.label" : "Je veux faire cela plus tard", | 17 | "invite.skip.label" : "Je veux faire cela plus tard", |
18 | "invite.submit.label" : "Envoyer des invitations", | 18 | "invite.submit.label" : "Envoyer des invitations", |
19 | "invite.successInfo" : "Invitations envoyées.", | 19 | "invite.successInfo" : "Invitations envoyées", |
20 | "login.email.label" : "Adresse e-mail", | 20 | "login.email.label" : "Adresse e-mail", |
21 | "login.headline" : "S'inscrire", | 21 | "login.headline" : "S'inscrire", |
22 | "login.invalidCredentials" : "E-mail ou mot de passe invalide", | 22 | "login.invalidCredentials" : "E-mail ou mot de passe invalide", |
@@ -26,11 +26,54 @@ | |||
26 | "login.serverLogout" : "Votre session a expiré. Reconnectez-vous s'il vous plaît.", | 26 | "login.serverLogout" : "Votre session a expiré. Reconnectez-vous s'il vous plaît.", |
27 | "login.submit.label" : "Connexion", | 27 | "login.submit.label" : "Connexion", |
28 | "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.", | 28 | "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Paramètres", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Éditer", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Supprimer", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Déclaration de confidentialité", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Adresse e-mail", | 72 | "password.email.label" : "Adresse e-mail", |
30 | "password.headline" : "Réinitialiser le mot de passe", | 73 | "password.headline" : "Réinitialiser le mot de passe", |
31 | "password.link.login" : "Connectez-vous à votre compte", | 74 | "password.link.login" : "Connectez-vous à votre compte", |
32 | "password.link.signup" : "Créer un compte gratuit.", | 75 | "password.link.signup" : "Créer un compte gratuit.", |
33 | "password.noUser" : "Aucun utilisateur n'a été trouvé avec cette adresse e-mail ", | 76 | "password.noUser" : "Aucun utilisateur n'a été trouvé avec cette adresse e-mail", |
34 | "password.submit.label" : "Soumettre", | 77 | "password.submit.label" : "Soumettre", |
35 | "password.successInfo" : "Merci de consulter vos e-mails", | 78 | "password.successInfo" : "Merci de consulter vos e-mails", |
36 | "pricing.headline" : "Soutenez Franz", | 79 | "pricing.headline" : "Soutenez Franz", |
@@ -94,7 +137,7 @@ | |||
94 | "settings.app.updateStatusAvailable" : "Mise à jour disponible, téléchargement en cours...", | 137 | "settings.app.updateStatusAvailable" : "Mise à jour disponible, téléchargement en cours...", |
95 | "settings.app.updateStatusSearching" : "Recherche d'une mise à jour", | 138 | "settings.app.updateStatusSearching" : "Recherche d'une mise à jour", |
96 | "settings.app.updateStatusUpToDate" : "Vous utilisez la dernière version de Franz", | 139 | "settings.app.updateStatusUpToDate" : "Vous utilisez la dernière version de Franz", |
97 | "settings.invite.headline" : "Invite 3 amis", | 140 | "settings.invite.headline" : "Invite des amis", |
98 | "settings.navigation.account" : "Compte", | 141 | "settings.navigation.account" : "Compte", |
99 | "settings.navigation.availableServices" : "Services disponibles", | 142 | "settings.navigation.availableServices" : "Services disponibles", |
100 | "settings.navigation.inviteFriends" : "Inviter des amis", | 143 | "settings.navigation.inviteFriends" : "Inviter des amis", |
@@ -138,7 +181,7 @@ | |||
138 | "settings.service.form.tabHosted" : "Hébergé", | 181 | "settings.service.form.tabHosted" : "Hébergé", |
139 | "settings.service.form.tabOnPremise" : "Auto-hébergé âï¸", | 182 | "settings.service.form.tabOnPremise" : "Auto-hébergé âï¸", |
140 | "settings.service.form.team" : "Équipe", | 183 | "settings.service.form.team" : "Équipe", |
141 | "settings.service.form.useHostedService" : "Utilisez le service hébergé {nom}.", | 184 | "settings.service.form.useHostedService" : "Utilisez le service hébergé {name}.", |
142 | "settings.service.form.yourServices" : "Vos services", | 185 | "settings.service.form.yourServices" : "Vos services", |
143 | "settings.services.deletedInfo" : "Le service a été supprimé", | 186 | "settings.services.deletedInfo" : "Le service a été supprimé", |
144 | "settings.services.discoverServices" : "Découvrir les services", | 187 | "settings.services.discoverServices" : "Découvrir les services", |
@@ -174,30 +217,34 @@ | |||
174 | "signup.password.label" : "Mot de passe", | 217 | "signup.password.label" : "Mot de passe", |
175 | "signup.submit.label" : "Créer un compte", | 218 | "signup.submit.label" : "Créer un compte", |
176 | "subscription.euTaxInfo" : "Résidents de l'UE : une taxe locale peut s'appliquer", | 219 | "subscription.euTaxInfo" : "Résidents de l'UE : une taxe locale peut s'appliquer", |
177 | "subscription.features.ads" : "No ads, ever!", | 220 | "subscription.features.ads" : "Plus de pubs !", |
178 | "subscription.features.comingSoon" : "coming soon", | 221 | "subscription.features.comingSoon" : "Bientôt disponible", |
179 | "subscription.features.customServices" : "Private services for you and your team", | 222 | "subscription.features.customServices" : "Services privés pour vous et votre équipe", |
180 | "subscription.features.encryptedSync" : "Encrypted session synchronization", | 223 | "subscription.features.encryptedSync" : "Synchronisation de session cryptée", |
181 | "subscription.features.onpremise" : "Ajouter des services locaux\/hébergés comme HipChat", | 224 | "subscription.features.onpremise" : "Ajouter des services locaux\/hébergés comme HipChat", |
182 | "subscription.features.vpn" : "Support des Proxy et VPN", | 225 | "subscription.features.vpn" : "Support des Proxy et VPN", |
183 | "subscription.includedFeatures" : "Le compte payant Supporter Premium Franz inclut", | 226 | "subscription.includedFeatures" : "Le compte payant Supporter Premium Franz inclut", |
184 | "subscription.paymentSessionError" : "Could not initialize payment form", | 227 | "subscription.paymentSessionError" : "Initialisation du paiement impossible", |
185 | "subscription.submit.label" : "I want to support the development of Franz", | 228 | "subscription.submit.label" : "Je souhaite aider au développement de Franz", |
186 | "subscription.type.free" : "free", | 229 | "subscription.type.free" : "gratuit", |
187 | "subscription.type.month" : "month", | 230 | "subscription.type.month" : "mois", |
188 | "subscription.type.year" : "year", | 231 | "subscription.type.year" : "année", |
189 | "subscriptionPopup.buttonCancel" : "Cancel", | 232 | "subscriptionPopup.buttonCancel" : "Annuler", |
190 | "subscriptionPopup.buttonDone" : "Done", | 233 | "subscriptionPopup.buttonDone" : "Terminé", |
191 | "tabs.item.deleteService" : "Delete service", | 234 | "tabs.item.deleteService" : "Supprimer le service", |
192 | "tabs.item.disableAudio" : "Désactiver l'audio", | 235 | "tabs.item.disableAudio" : "Désactiver l'audio", |
193 | "tabs.item.disableNotifications" : "Disable notifications", | 236 | "tabs.item.disableNotifications" : "Désactiver les notifications", |
194 | "tabs.item.disableService" : "Disable service", | 237 | "tabs.item.disableService" : "Désactiver le service", |
195 | "tabs.item.edit" : "Edit", | 238 | "tabs.item.edit" : "Éditer", |
196 | "tabs.item.enableAudio" : "Activer l'audio", | 239 | "tabs.item.enableAudio" : "Activer l'audio", |
197 | "tabs.item.enableNotification" : "Enable notifications", | 240 | "tabs.item.enableNotification" : "Activer les notifications", |
198 | "tabs.item.enableService" : "Activer le service", | 241 | "tabs.item.enableService" : "Activer le service", |
199 | "tabs.item.reload" : "Reload", | 242 | "tabs.item.reload" : "Recharger", |
200 | "welcome.loginButton" : "Login to your account", | 243 | "validation.email" : "{field} is not valid", |
201 | "welcome.signupButton" : "Create a free account", | 244 | "validation.minLength" : "{field} should be at least {length} characters long", |
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
247 | "welcome.loginButton" : "Se connecter sur son compte", | ||
248 | "welcome.signupButton" : "Créer un compte gratuit", | ||
202 | "welcome.slogan" : "Une messagerie qui fonctionne pour vous" | 249 | "welcome.slogan" : "Une messagerie qui fonctionne pour vous" |
203 | } | 250 | } |
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index 13b251755..80aeb0a1b 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "D'éag do sheisiún, logáil isteach arÃs le do thoil.", | 26 | "login.serverLogout" : "D'éag do sheisiún, logáil isteach arÃs le do thoil.", |
27 | "login.submit.label" : "Logáil isteach", | 27 | "login.submit.label" : "Logáil isteach", |
28 | "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arÃs le do thoil.", | 28 | "login.tokenExpired" : "D'éag do sheisiún, logáil isteach arÃs le do thoil.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Socruithe", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Cuir in eagar", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Scrios", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Ráiteas phrÃobháideachais", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Seoladh rÃomhphoist", | 72 | "password.email.label" : "Seoladh rÃomhphoist", |
30 | "password.headline" : "Athshocraigh pasfhocal", | 73 | "password.headline" : "Athshocraigh pasfhocal", |
31 | "password.link.login" : "Logáil isteach i do chuntas", | 74 | "password.link.login" : "Logáil isteach i do chuntas", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Cumasaigh fógraÃ", | 240 | "tabs.item.enableNotification" : "Cumasaigh fógraÃ", |
198 | "tabs.item.enableService" : "Cumasaigh seirbhÃs", | 241 | "tabs.item.enableService" : "Cumasaigh seirbhÃs", |
199 | "tabs.item.reload" : "Athlódáil", | 242 | "tabs.item.reload" : "Athlódáil", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Logáil isteach i do chuntas", | 247 | "welcome.loginButton" : "Logáil isteach i do chuntas", |
201 | "welcome.signupButton" : "Cruthaigh cuntas nua", | 248 | "welcome.signupButton" : "Cruthaigh cuntas nua", |
202 | "welcome.slogan" : "Teachtaireachtaà a oibrÃonn duitse" | 249 | "welcome.slogan" : "Teachtaireachtaà a oibrÃonn duitse" |
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index 97bfc19f4..72930f686 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json | |||
@@ -16,7 +16,7 @@ | |||
16 | "invite.name.label" : "Ime", | 16 | "invite.name.label" : "Ime", |
17 | "invite.skip.label" : "Želim da ovo uradim kasnije", | 17 | "invite.skip.label" : "Želim da ovo uradim kasnije", |
18 | "invite.submit.label" : "Pošalji pozivnice", | 18 | "invite.submit.label" : "Pošalji pozivnice", |
19 | "invite.successInfo" : "Invitations sent successfully", | 19 | "invite.successInfo" : "Pozivnice uspješno poslane", |
20 | "login.email.label" : "Vaša e-adresa:", | 20 | "login.email.label" : "Vaša e-adresa:", |
21 | "login.headline" : "Prijavite se", | 21 | "login.headline" : "Prijavite se", |
22 | "login.invalidCredentials" : "E-mail ili lozinka nisu toÄni", | 22 | "login.invalidCredentials" : "E-mail ili lozinka nisu toÄni", |
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Vaša sesija je istekla, prijavite se ponovo.", | 26 | "login.serverLogout" : "Vaša sesija je istekla, prijavite se ponovo.", |
27 | "login.submit.label" : "Prijavite se", | 27 | "login.submit.label" : "Prijavite se", |
28 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", | 28 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Postavke", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Uredi", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Obriši", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Izjava o privatnosti ", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Vaša e-adresa", | 72 | "password.email.label" : "Vaša e-adresa", |
30 | "password.headline" : "Stvorite novu zaporku", | 73 | "password.headline" : "Stvorite novu zaporku", |
31 | "password.link.login" : "Prijavite se na VaÅ¡ raÄun", | 74 | "password.link.login" : "Prijavite se na VaÅ¡ raÄun", |
@@ -68,12 +111,12 @@ | |||
68 | "settings.app.buttonClearAllCache" : "OÄisti memoriju", | 111 | "settings.app.buttonClearAllCache" : "OÄisti memoriju", |
69 | "settings.app.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje", | 112 | "settings.app.buttonInstallUpdate" : "Ponovo pokreni i instaliraj ažuriranje", |
70 | "settings.app.buttonSearchForUpdate" : "Potraži ažuriranja", | 113 | "settings.app.buttonSearchForUpdate" : "Potraži ažuriranja", |
71 | "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.", | 114 | "settings.app.cacheInfo" : "Franz predmemorija trenutno koristi {size} prostora na disku", |
72 | "settings.app.currentVersion" : "Trenutna verzija:", | 115 | "settings.app.currentVersion" : "Trenutna verzija:", |
73 | "settings.app.form.autoLaunchInBackground" : "Otvori u pozadini", | 116 | "settings.app.form.autoLaunchInBackground" : "Otvori u pozadini", |
74 | "settings.app.form.autoLaunchOnStart" : "Pokreni Franz sa sistemom", | 117 | "settings.app.form.autoLaunchOnStart" : "Pokreni Franz sa sistemom", |
75 | "settings.app.form.beta" : "Obuhvati i beta verzije", | 118 | "settings.app.form.beta" : "Obuhvati i beta verzije", |
76 | "settings.app.form.enableMenuBar" : "Show Franz in Menu Bar", | 119 | "settings.app.form.enableMenuBar" : "Prikaži Franz u traci izbornika", |
77 | "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa", | 120 | "settings.app.form.enableSpellchecking" : "Omogući provjeru pravopisa", |
78 | "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci", | 121 | "settings.app.form.enableSystemTray" : "Prikaži aplikaciju u sustavskoj traci", |
79 | "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock", | 122 | "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock", |
@@ -89,15 +132,15 @@ | |||
89 | "settings.app.headlineLanguage" : "Jezik", | 132 | "settings.app.headlineLanguage" : "Jezik", |
90 | "settings.app.headlineUpdates" : "Nadogradnje", | 133 | "settings.app.headlineUpdates" : "Nadogradnje", |
91 | "settings.app.restartRequired" : "Promjene postavki zahtijevaju ponovni zagon", | 134 | "settings.app.restartRequired" : "Promjene postavki zahtijevaju ponovni zagon", |
92 | "settings.app.subheadlineCache" : "Cache", | 135 | "settings.app.subheadlineCache" : "Predmemorija", |
93 | "settings.app.translationHelp" : "Pomozite nam prevesti aplikaciju na Vaš jezik. ", | 136 | "settings.app.translationHelp" : "Pomozite nam prevesti aplikaciju na Vaš jezik. ", |
94 | "settings.app.updateStatusAvailable" : "Nadogradnja dostupna, preuzimanje...", | 137 | "settings.app.updateStatusAvailable" : "Nadogradnja dostupna, preuzimanje...", |
95 | "settings.app.updateStatusSearching" : "Traže se ažuriranja", | 138 | "settings.app.updateStatusSearching" : "Traže se ažuriranja", |
96 | "settings.app.updateStatusUpToDate" : "Koristite najnoviju verziju Franca.", | 139 | "settings.app.updateStatusUpToDate" : "Koristite najnoviju verziju Franca.", |
97 | "settings.invite.headline" : "Invite Friends", | 140 | "settings.invite.headline" : "Pozovi prijatelje", |
98 | "settings.navigation.account" : "RaÄun", | 141 | "settings.navigation.account" : "RaÄun", |
99 | "settings.navigation.availableServices" : "Dostupne usluge", | 142 | "settings.navigation.availableServices" : "Dostupne usluge", |
100 | "settings.navigation.inviteFriends" : "Invite Friends", | 143 | "settings.navigation.inviteFriends" : "Pozovi prijatelje", |
101 | "settings.navigation.logout" : "Odjava", | 144 | "settings.navigation.logout" : "Odjava", |
102 | "settings.navigation.settings" : "Postavke", | 145 | "settings.navigation.settings" : "Postavke", |
103 | "settings.navigation.yourServices" : "Vaše usluge", | 146 | "settings.navigation.yourServices" : "Vaše usluge", |
@@ -108,7 +151,7 @@ | |||
108 | "settings.recipes.mostPopular" : "Najpopularniji", | 151 | "settings.recipes.mostPopular" : "Najpopularniji", |
109 | "settings.recipes.nothingFound" : "Žao nam je, ali ne postoje usluge koje se poklapaju s onima koje tražite. ", | 152 | "settings.recipes.nothingFound" : "Žao nam je, ali ne postoje usluge koje se poklapaju s onima koje tražite. ", |
110 | "settings.recipes.servicesSuccessfulAddedInfo" : "Usluga uspješno dodana. ", | 153 | "settings.recipes.servicesSuccessfulAddedInfo" : "Usluga uspješno dodana. ", |
111 | "settings.searchService" : "Search service", | 154 | "settings.searchService" : "Potraži servis", |
112 | "settings.service.error.goBack" : "Nazad do servisa", | 155 | "settings.service.error.goBack" : "Nazad do servisa", |
113 | "settings.service.error.headline" : "Greška", | 156 | "settings.service.error.headline" : "Greška", |
114 | "settings.service.error.message" : "Nemoguće uÄitati sadržaj usluge. ", | 157 | "settings.service.error.message" : "Nemoguće uÄitati sadržaj usluge. ", |
@@ -126,10 +169,10 @@ | |||
126 | "settings.service.form.enableService" : "Omogućite usluge", | 169 | "settings.service.form.enableService" : "Omogućite usluge", |
127 | "settings.service.form.headlineBadges" : "Unread message badges", | 170 | "settings.service.form.headlineBadges" : "Unread message badges", |
128 | "settings.service.form.headlineGeneral" : "Općenito", | 171 | "settings.service.form.headlineGeneral" : "Općenito", |
129 | "settings.service.form.headlineNotifications" : "Notifications", | 172 | "settings.service.form.headlineNotifications" : "Obavijesti", |
130 | "settings.service.form.icon" : "Custom icon", | 173 | "settings.service.form.icon" : "Prilagođena ikona", |
131 | "settings.service.form.iconDelete" : "Delete", | 174 | "settings.service.form.iconDelete" : "Obriši", |
132 | "settings.service.form.iconUpload" : "Drop your image, or click here", | 175 | "settings.service.form.iconUpload" : "Ispusti sliku ili klikni ovdje", |
133 | "settings.service.form.indirectMessageInfo" : "Vi ćete biti obavješteni o svim novim porukama na kanalu, ne samo o @imenima, kanalima, @ovdje, ...", | 176 | "settings.service.form.indirectMessageInfo" : "Vi ćete biti obavješteni o svim novim porukama na kanalu, ne samo o @imenima, kanalima, @ovdje, ...", |
134 | "settings.service.form.indirectMessages" : "Prikaži znaÄku na svim novim porukuama", | 177 | "settings.service.form.indirectMessages" : "Prikaži znaÄku na svim novim porukuama", |
135 | "settings.service.form.isMutedInfo" : "Kada je onemogućeno, sve obavijesti, svi zvukovi i sva pozadinska podrÅ¡ka će biti neÄujna. ", | 178 | "settings.service.form.isMutedInfo" : "Kada je onemogućeno, sve obavijesti, svi zvukovi i sva pozadinska podrÅ¡ka će biti neÄujna. ", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Omogući obavijesti", | 240 | "tabs.item.enableNotification" : "Omogući obavijesti", |
198 | "tabs.item.enableService" : "Omogući usluge", | 241 | "tabs.item.enableService" : "Omogući usluge", |
199 | "tabs.item.reload" : "Ponovno uÄitavanje", | 242 | "tabs.item.reload" : "Ponovno uÄitavanje", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Prijavite se na raÄun", | 247 | "welcome.loginButton" : "Prijavite se na raÄun", |
201 | "welcome.signupButton" : "Stvorite novi korisniÄki raÄun", | 248 | "welcome.signupButton" : "Stvorite novi korisniÄki raÄun", |
202 | "welcome.slogan" : "Poruke koje su stvorene za tebe" | 249 | "welcome.slogan" : "Poruke koje su stvorene za tebe" |
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index 15bdd33f4..308559f3b 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "A munkamenet lejárt, kérlek lépj be újra.", | 26 | "login.serverLogout" : "A munkamenet lejárt, kérlek lépj be újra.", |
27 | "login.submit.label" : "Bejelentkezés", | 27 | "login.submit.label" : "Bejelentkezés", |
28 | "login.tokenExpired" : "A munkamenet lejárt, kérlek lépj be újra.", | 28 | "login.tokenExpired" : "A munkamenet lejárt, kérlek lépj be újra.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "BeállÃtások", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Szerkesztés", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Törlés", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Adatvédelmi Nyilatkozatot", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Email cÃm", | 72 | "password.email.label" : "Email cÃm", |
30 | "password.headline" : "Jelszó visszaállÃtása", | 73 | "password.headline" : "Jelszó visszaállÃtása", |
31 | "password.link.login" : "Jelentkezz be a fiókodba", | 74 | "password.link.login" : "Jelentkezz be a fiókodba", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "ÉrtesÃtések engedélyezése", | 240 | "tabs.item.enableNotification" : "ÉrtesÃtések engedélyezése", |
198 | "tabs.item.enableService" : "Szolgáltatás engedélyezése", | 241 | "tabs.item.enableService" : "Szolgáltatás engedélyezése", |
199 | "tabs.item.reload" : "Újratöltés", | 242 | "tabs.item.reload" : "Újratöltés", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Jelentkezz be a fiókodba", | 247 | "welcome.loginButton" : "Jelentkezz be a fiókodba", |
201 | "welcome.signupButton" : "Új fiók létrehozása", | 248 | "welcome.signupButton" : "Új fiók létrehozása", |
202 | "welcome.slogan" : "Üzenetküldés okosan" | 249 | "welcome.slogan" : "Üzenetküldés okosan" |
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index 509c5ad9c..51820150f 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Sesi Anda telah berakhir, silakan masuk kembali.", | 26 | "login.serverLogout" : "Sesi Anda telah berakhir, silakan masuk kembali.", |
27 | "login.submit.label" : "Masuk", | 27 | "login.submit.label" : "Masuk", |
28 | "login.tokenExpired" : "Sesi Anda kedaluwarsa, silakan masuk kembali.", | 28 | "login.tokenExpired" : "Sesi Anda kedaluwarsa, silakan masuk kembali.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Pengaturan", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Edit", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Hapus", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Pernyataan Privasi", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Alamat email", | 72 | "password.email.label" : "Alamat email", |
30 | "password.headline" : "Setel ulang sandi", | 73 | "password.headline" : "Setel ulang sandi", |
31 | "password.link.login" : "Masuk ke akun Anda", | 74 | "password.link.login" : "Masuk ke akun Anda", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Aktifkan pemberitahuan", | 240 | "tabs.item.enableNotification" : "Aktifkan pemberitahuan", |
198 | "tabs.item.enableService" : "Aktifkan layanan", | 241 | "tabs.item.enableService" : "Aktifkan layanan", |
199 | "tabs.item.reload" : "Muat Ulang", | 242 | "tabs.item.reload" : "Muat Ulang", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Masuk ke akun Anda", | 247 | "welcome.loginButton" : "Masuk ke akun Anda", |
201 | "welcome.signupButton" : "Buat akun gratis", | 248 | "welcome.signupButton" : "Buat akun gratis", |
202 | "welcome.slogan" : "Perpesanan yang bekerja untuk Anda" | 249 | "welcome.slogan" : "Perpesanan yang bekerja untuk Anda" |
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index a1392afba..c45587c87 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json | |||
@@ -26,17 +26,60 @@ | |||
26 | "login.serverLogout" : "La tua sessione è scaduta, accedi nuovamente.", | 26 | "login.serverLogout" : "La tua sessione è scaduta, accedi nuovamente.", |
27 | "login.submit.label" : "Accedi", | 27 | "login.submit.label" : "Accedi", |
28 | "login.tokenExpired" : "La tua sessione è scaduta, accedi nuovamente.", | 28 | "login.tokenExpired" : "La tua sessione è scaduta, accedi nuovamente.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Impostazioni", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Modifica", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Elimina", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Informativa sulla Privacy", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Indirizzo email", | 72 | "password.email.label" : "Indirizzo email", |
30 | "password.headline" : "Reimposta password", | 73 | "password.headline" : "Reimposta password", |
31 | "password.link.login" : "Accedi al tuo account", | 74 | "password.link.login" : "Accedi al tuo account", |
32 | "password.link.signup" : "Crea un account gratuito", | 75 | "password.link.signup" : "Crea un account gratuito", |
33 | "password.noUser" : "Non è stato trovato nessun utente con questo indirizzo e-mail", | 76 | "password.noUser" : "Non è stato trovato nessun utente con questo indirizzo e-mail", |
34 | "password.submit.label" : "Invia", | 77 | "password.submit.label" : "Invia", |
35 | "password.successInfo" : "Controlla la tua email", | 78 | "password.successInfo" : "Please check your email", |
36 | "pricing.headline" : "Supporta Franz", | 79 | "pricing.headline" : "Support Franz", |
37 | "pricing.link.skipPayment" : "Non voglio supportare lo sviluppo di Franz", | 80 | "pricing.link.skipPayment" : "Non voglio supportare lo sviluppo di Franz.", |
38 | "pricing.submit.label" : "Voglio supportare lo sviluppo di Franz", | 81 | "pricing.submit.label" : "Voglio supportare lo sviluppo di Franz", |
39 | "pricing.support.label" : "Seleziona il tuo piano di supporto", | 82 | "pricing.support.label" : "Select your support plan", |
40 | "service.crashHandler.action" : "Ricarica {name}", | 83 | "service.crashHandler.action" : "Ricarica {name}", |
41 | "service.crashHandler.autoReload" : "Tentativo di ripristino automatico di {name} in {seconds} secondi", | 84 | "service.crashHandler.autoReload" : "Tentativo di ripristino automatico di {name} in {seconds} secondi", |
42 | "service.crashHandler.headline" : "Oh no!", | 85 | "service.crashHandler.headline" : "Oh no!", |
@@ -44,8 +87,8 @@ | |||
44 | "service.disabledHandler.action" : "Attiva {name}", | 87 | "service.disabledHandler.action" : "Attiva {name}", |
45 | "service.disabledHandler.headline" : "{name} è disattivato", | 88 | "service.disabledHandler.headline" : "{name} è disattivato", |
46 | "services.getStarted" : "Iniziamo", | 89 | "services.getStarted" : "Iniziamo", |
47 | "services.welcome" : "Benvenuto in Franz", | 90 | "services.welcome" : "Welcome to Franz", |
48 | "settings.account.account.editButton" : "Modifica account", | 91 | "settings.account.account.editButton" : "Edit account", |
49 | "settings.account.accountType.basic" : "Account Basic", | 92 | "settings.account.accountType.basic" : "Account Basic", |
50 | "settings.account.accountType.premium" : "Premium Supporter Account", | 93 | "settings.account.accountType.premium" : "Premium Supporter Account", |
51 | "settings.account.buttonSave" : "Aggiorna profilo", | 94 | "settings.account.buttonSave" : "Aggiorna profilo", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Attiva notifiche", | 240 | "tabs.item.enableNotification" : "Attiva notifiche", |
198 | "tabs.item.enableService" : "Attiva servizio", | 241 | "tabs.item.enableService" : "Attiva servizio", |
199 | "tabs.item.reload" : "Aggiorna", | 242 | "tabs.item.reload" : "Aggiorna", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Accedi al tuo account", | 247 | "welcome.loginButton" : "Accedi al tuo account", |
201 | "welcome.signupButton" : "Crea un account gratuito", | 248 | "welcome.signupButton" : "Crea un account gratuito", |
202 | "welcome.slogan" : "Un sistema di messaggistica che funziona" | 249 | "welcome.slogan" : "Un sistema di messaggistica che funziona" |
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 9fc0a211b..0634a8fc8 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "セッションã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ãƒã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦ä¸‹ã•ã„。", | 26 | "login.serverLogout" : "セッションã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ãƒã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦ä¸‹ã•ã„。", |
27 | "login.submit.label" : "サインイン", | 27 | "login.submit.label" : "サインイン", |
28 | "login.tokenExpired" : "セッションã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ãƒã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦ä¸‹ã•ã„。", | 28 | "login.tokenExpired" : "セッションã®æœŸé™ãŒåˆ‡ã‚Œã¾ã—ãŸã€‚ãƒã‚°ã‚¤ãƒ³ã—ç›´ã—ã¦ä¸‹ã•ã„。", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "è¨å®š", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "編集", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "削除", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "プライãƒã‚·ãƒ¼ã«ã¤ã„ã¦", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "メールアドレス", | 72 | "password.email.label" : "メールアドレス", |
30 | "password.headline" : "パスワードã®ãƒªã‚»ãƒƒãƒˆ", | 73 | "password.headline" : "パスワードã®ãƒªã‚»ãƒƒãƒˆ", |
31 | "password.link.login" : "サインイン", | 74 | "password.link.login" : "サインイン", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "通知を有効ã«ã™ã‚‹", | 240 | "tabs.item.enableNotification" : "通知を有効ã«ã™ã‚‹", |
198 | "tabs.item.enableService" : "サービスを有効ã«ã™ã‚‹", | 241 | "tabs.item.enableService" : "サービスを有効ã«ã™ã‚‹", |
199 | "tabs.item.reload" : "å†èªã¿è¾¼ã¿", | 242 | "tabs.item.reload" : "å†èªã¿è¾¼ã¿", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "アカウントã«ãƒã‚°ã‚¤ãƒ³", | 247 | "welcome.loginButton" : "アカウントã«ãƒã‚°ã‚¤ãƒ³", |
201 | "welcome.signupButton" : "無料アカウントを作æˆ", | 248 | "welcome.signupButton" : "無料アカウントを作æˆ", |
202 | "welcome.slogan" : "Messaging that works for you" | 249 | "welcome.slogan" : "Messaging that works for you" |
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index 67e81e12b..8eb0fff56 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "თქვენს სესიáƒáƒ¡ ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ, შედით áƒáƒœáƒ’áƒáƒ იშში ხელáƒáƒ®áƒšáƒ.", | 26 | "login.serverLogout" : "თქვენს სესიáƒáƒ¡ ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ, შედით áƒáƒœáƒ’áƒáƒ იშში ხელáƒáƒ®áƒšáƒ.", |
27 | "login.submit.label" : "შესვლáƒ", | 27 | "login.submit.label" : "შესვლáƒ", |
28 | "login.tokenExpired" : "თქვენს სესიáƒáƒ¡ ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ, შედით áƒáƒœáƒ’áƒáƒ იშში ხელáƒáƒ®áƒšáƒ.", | 28 | "login.tokenExpired" : "თქვენს სესიáƒáƒ¡ ვáƒáƒ“რგáƒáƒ£áƒ•áƒ˜áƒ“áƒ, შედით áƒáƒœáƒ’áƒáƒ იშში ხელáƒáƒ®áƒšáƒ.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "პáƒáƒ áƒáƒ›áƒ”ტრები", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "რედáƒáƒ¥áƒ¢áƒ˜áƒ ებáƒ", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Delete", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "კáƒáƒœáƒ¤áƒ˜áƒ“ენციáƒáƒšáƒ£áƒ áƒáƒ‘ის შესáƒáƒ®áƒ”ბ", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "მეილი", | 72 | "password.email.label" : "მეილი", |
30 | "password.headline" : "პáƒáƒ áƒáƒšáƒ˜áƒ¡ áƒáƒ¦áƒ“გენáƒ", | 73 | "password.headline" : "პáƒáƒ áƒáƒšáƒ˜áƒ¡ áƒáƒ¦áƒ“გენáƒ", |
31 | "password.link.login" : "შედით თქვენს áƒáƒœáƒ’áƒáƒ იშში", | 74 | "password.link.login" : "შედით თქვენს áƒáƒœáƒ’áƒáƒ იშში", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "შეტყáƒáƒ‘ინებების ჩáƒáƒ თვáƒ", | 240 | "tabs.item.enableNotification" : "შეტყáƒáƒ‘ინებების ჩáƒáƒ თვáƒ", |
198 | "tabs.item.enableService" : "სერვისის ჩáƒáƒ თვáƒ", | 241 | "tabs.item.enableService" : "სერვისის ჩáƒáƒ თვáƒ", |
199 | "tabs.item.reload" : "ჩáƒáƒ¢áƒ•áƒ˜áƒ თვáƒ", | 242 | "tabs.item.reload" : "ჩáƒáƒ¢áƒ•áƒ˜áƒ თვáƒ", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "შედით თქვენს áƒáƒœáƒ’áƒáƒ იშში", | 247 | "welcome.loginButton" : "შედით თქვენს áƒáƒœáƒ’áƒáƒ იშში", |
201 | "welcome.signupButton" : "შექმენი áƒáƒœáƒ’áƒáƒ იში, ეს უფáƒáƒ¡áƒáƒ", | 248 | "welcome.signupButton" : "შექმენი áƒáƒœáƒ’áƒáƒ იში, ეს უფáƒáƒ¡áƒáƒ", |
202 | "welcome.slogan" : "შეტყáƒáƒ‘ინების áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ, რáƒáƒ›áƒ”ლიც მუშáƒáƒáƒ‘ს შენთვის" | 249 | "welcome.slogan" : "შეტყáƒáƒ‘ინების áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ, რáƒáƒ›áƒ”ლიც მუშáƒáƒáƒ‘ს შენთვის" |
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index dab23f607..fe0135a14 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "De sessie is verlopen, log opnieuw in alsjeblieft.", | 26 | "login.serverLogout" : "De sessie is verlopen, log opnieuw in alsjeblieft.", |
27 | "login.submit.label" : "Log in", | 27 | "login.submit.label" : "Log in", |
28 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", | 28 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Instellingen", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Aanpassen", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Delete", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Privacyverklaring", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "E-mailadres", | 72 | "password.email.label" : "E-mailadres", |
30 | "password.headline" : "Wachtwoord resetten", | 73 | "password.headline" : "Wachtwoord resetten", |
31 | "password.link.login" : "Log in op je account", | 74 | "password.link.login" : "Log in op je account", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Notificaties inschakelen", | 240 | "tabs.item.enableNotification" : "Notificaties inschakelen", |
198 | "tabs.item.enableService" : "Service aanzetten", | 241 | "tabs.item.enableService" : "Service aanzetten", |
199 | "tabs.item.reload" : "Herladen", | 242 | "tabs.item.reload" : "Herladen", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Inloggen op je account", | 247 | "welcome.loginButton" : "Inloggen op je account", |
201 | "welcome.signupButton" : "Maak een gratis account aan", | 248 | "welcome.signupButton" : "Maak een gratis account aan", |
202 | "welcome.slogan" : "Messaging that works for you" | 249 | "welcome.slogan" : "Messaging that works for you" |
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index e2b14ceab..ac436fc54 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "De sessie is verlopen, log alsjeblieft opnieuw in.", | 26 | "login.serverLogout" : "De sessie is verlopen, log alsjeblieft opnieuw in.", |
27 | "login.submit.label" : "Inloggen", | 27 | "login.submit.label" : "Inloggen", |
28 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", | 28 | "login.tokenExpired" : "De sessie is verlopen, log opnieuw in alsjeblieft.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Instellingen", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Bewerk", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Verwijderen", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Privacy Voorwaarden", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "E-mailadres", | 72 | "password.email.label" : "E-mailadres", |
30 | "password.headline" : "Wachtwoord vergeten", | 73 | "password.headline" : "Wachtwoord vergeten", |
31 | "password.link.login" : "Log in op je account", | 74 | "password.link.login" : "Log in op je account", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Meldingen inschakelen", | 240 | "tabs.item.enableNotification" : "Meldingen inschakelen", |
198 | "tabs.item.enableService" : "Service inschakelen", | 241 | "tabs.item.enableService" : "Service inschakelen", |
199 | "tabs.item.reload" : "Laad opnieuw", | 242 | "tabs.item.reload" : "Laad opnieuw", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Log in op je account", | 247 | "welcome.loginButton" : "Log in op je account", |
201 | "welcome.signupButton" : "Maak een gratis account", | 248 | "welcome.signupButton" : "Maak een gratis account", |
202 | "welcome.slogan" : "Messaging die voor jou werkt" | 249 | "welcome.slogan" : "Messaging die voor jou werkt" |
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index 95e269ea7..74ffbe231 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json | |||
@@ -16,7 +16,7 @@ | |||
16 | "invite.name.label" : "ImiÄ™", | 16 | "invite.name.label" : "ImiÄ™", |
17 | "invite.skip.label" : "Chcę to zrobić później", | 17 | "invite.skip.label" : "Chcę to zrobić później", |
18 | "invite.submit.label" : "Wyślij zaproszenia", | 18 | "invite.submit.label" : "Wyślij zaproszenia", |
19 | "invite.successInfo" : "Invitations sent successfully", | 19 | "invite.successInfo" : "Zaproszenia zostały wysłane", |
20 | "login.email.label" : "Adres email", | 20 | "login.email.label" : "Adres email", |
21 | "login.headline" : "Zaloguj siÄ™", | 21 | "login.headline" : "Zaloguj siÄ™", |
22 | "login.invalidCredentials" : "Adres email lub hasło są błędne", | 22 | "login.invalidCredentials" : "Adres email lub hasło są błędne", |
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Twoja sesja wygasła, zaloguj się ponownie.", | 26 | "login.serverLogout" : "Twoja sesja wygasła, zaloguj się ponownie.", |
27 | "login.submit.label" : "Zaloguj siÄ™", | 27 | "login.submit.label" : "Zaloguj siÄ™", |
28 | "login.tokenExpired" : "Twoja sesja wygasła, zaloguj się ponownie.", | 28 | "login.tokenExpired" : "Twoja sesja wygasła, zaloguj się ponownie.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Ustawienia", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Edytuj", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Usuń", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Polityka prywatności", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Adres email", | 72 | "password.email.label" : "Adres email", |
30 | "password.headline" : "Wyzeruj hasło", | 73 | "password.headline" : "Wyzeruj hasło", |
31 | "password.link.login" : "Zaloguj siÄ™ na swoje konto", | 74 | "password.link.login" : "Zaloguj siÄ™ na swoje konto", |
@@ -41,7 +84,7 @@ | |||
41 | "service.crashHandler.autoReload" : "Próba automatycznego odnowienia {name} za {seconds} sekund\/y", | 84 | "service.crashHandler.autoReload" : "Próba automatycznego odnowienia {name} za {seconds} sekund\/y", |
42 | "service.crashHandler.headline" : "O nie!", | 85 | "service.crashHandler.headline" : "O nie!", |
43 | "service.crashHandler.text" : "{name} spowodował problem.", | 86 | "service.crashHandler.text" : "{name} spowodował problem.", |
44 | "service.disabledHandler.action" : "Dostępny {name}", | 87 | "service.disabledHandler.action" : "Włącz {name}", |
45 | "service.disabledHandler.headline" : "{name} jest wyłączony", | 88 | "service.disabledHandler.headline" : "{name} jest wyłączony", |
46 | "services.getStarted" : "Zacznij", | 89 | "services.getStarted" : "Zacznij", |
47 | "services.welcome" : "Witaj w programie Franz", | 90 | "services.welcome" : "Witaj w programie Franz", |
@@ -65,18 +108,18 @@ | |||
65 | "settings.account.successInfo" : "Twoje zmiany zostały zapisane", | 108 | "settings.account.successInfo" : "Twoje zmiany zostały zapisane", |
66 | "settings.account.tryReloadUserInfoRequest" : "Spróbuj ponownie", | 109 | "settings.account.tryReloadUserInfoRequest" : "Spróbuj ponownie", |
67 | "settings.account.userInfoRequestFailed" : "Nie można wczytać informacji o użytkowniku", | 110 | "settings.account.userInfoRequestFailed" : "Nie można wczytać informacji o użytkowniku", |
68 | "settings.app.buttonClearAllCache" : "Clear cache", | 111 | "settings.app.buttonClearAllCache" : "Wyczyść pamięć podręczną (cache)", |
69 | "settings.app.buttonInstallUpdate" : "Uruchom ponownie i zainstaluj aktualizacjÄ™", | 112 | "settings.app.buttonInstallUpdate" : "Uruchom ponownie i zainstaluj aktualizacjÄ™", |
70 | "settings.app.buttonSearchForUpdate" : "Sprawdź aktualizacje", | 113 | "settings.app.buttonSearchForUpdate" : "Sprawdź aktualizacje", |
71 | "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.", | 114 | "settings.app.cacheInfo" : "Pamięć podręczna zajmuje obecnie {size} przestrzeni dyskowej", |
72 | "settings.app.currentVersion" : "Aktualna wersja:", | 115 | "settings.app.currentVersion" : "Aktualna wersja:", |
73 | "settings.app.form.autoLaunchInBackground" : "Otwórz w tle", | 116 | "settings.app.form.autoLaunchInBackground" : "Otwórz w tle", |
74 | "settings.app.form.autoLaunchOnStart" : "Uruchom Franz na poczÄ…tku", | 117 | "settings.app.form.autoLaunchOnStart" : "Uruchom Franz na poczÄ…tku", |
75 | "settings.app.form.beta" : "Uwzględnij wersje beta", | 118 | "settings.app.form.beta" : "Uwzględnij wersje beta", |
76 | "settings.app.form.enableMenuBar" : "Show Franz in Menu Bar", | 119 | "settings.app.form.enableMenuBar" : "Pokaż Franz na pasku menu", |
77 | "settings.app.form.enableSpellchecking" : "WÅ‚Ä…cz sprawdzanie pisowni", | 120 | "settings.app.form.enableSpellchecking" : "WÅ‚Ä…cz sprawdzanie pisowni", |
78 | "settings.app.form.enableSystemTray" : "Pokaż Franza w tacy systemowej", | 121 | "settings.app.form.enableSystemTray" : "Pokaż Franza w tacy systemowej", |
79 | "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock", | 122 | "settings.app.form.hideDockIcon" : "Ukrywaj ikonÄ™ Franz w zasobniku systemowym", |
80 | "settings.app.form.language" : "Język", | 123 | "settings.app.form.language" : "Język", |
81 | "settings.app.form.minimizeToSystemTray" : "Zminimalizuj aplikacjÄ™ Franz", | 124 | "settings.app.form.minimizeToSystemTray" : "Zminimalizuj aplikacjÄ™ Franz", |
82 | "settings.app.form.runInBackground" : "Zachowaj aplikację Franz w tle po zamknięciu okna", | 125 | "settings.app.form.runInBackground" : "Zachowaj aplikację Franz w tle po zamknięciu okna", |
@@ -89,15 +132,15 @@ | |||
89 | "settings.app.headlineLanguage" : "Język", | 132 | "settings.app.headlineLanguage" : "Język", |
90 | "settings.app.headlineUpdates" : "Aktualizacje", | 133 | "settings.app.headlineUpdates" : "Aktualizacje", |
91 | "settings.app.restartRequired" : "Zmiany. wymagajÄ… ponownego uruchomienia", | 134 | "settings.app.restartRequired" : "Zmiany. wymagajÄ… ponownego uruchomienia", |
92 | "settings.app.subheadlineCache" : "Cache", | 135 | "settings.app.subheadlineCache" : "Pamięć podręczna", |
93 | "settings.app.translationHelp" : "Pomóż nam tłumaczyć Franz na Twój język.", | 136 | "settings.app.translationHelp" : "Pomóż nam tłumaczyć Franz na Twój język.", |
94 | "settings.app.updateStatusAvailable" : "Dostępna aktualizacja, pobieram...", | 137 | "settings.app.updateStatusAvailable" : "Dostępna aktualizacja, pobieram...", |
95 | "settings.app.updateStatusSearching" : "Szukam aktualizacji", | 138 | "settings.app.updateStatusSearching" : "Szukam aktualizacji", |
96 | "settings.app.updateStatusUpToDate" : "Używasz najnowszej wersji aplikacji Franz", | 139 | "settings.app.updateStatusUpToDate" : "Używasz najnowszej wersji aplikacji Franz", |
97 | "settings.invite.headline" : "Invite Friends", | 140 | "settings.invite.headline" : "ZaproÅ› znajomych", |
98 | "settings.navigation.account" : "Konto", | 141 | "settings.navigation.account" : "Konto", |
99 | "settings.navigation.availableServices" : "Dostępne usługi", | 142 | "settings.navigation.availableServices" : "Dostępne usługi", |
100 | "settings.navigation.inviteFriends" : "Invite Friends", | 143 | "settings.navigation.inviteFriends" : "ZaproÅ› znajomych", |
101 | "settings.navigation.logout" : "Wyloguj", | 144 | "settings.navigation.logout" : "Wyloguj", |
102 | "settings.navigation.settings" : "Ustawienia", | 145 | "settings.navigation.settings" : "Ustawienia", |
103 | "settings.navigation.yourServices" : "Twoje usługi", | 146 | "settings.navigation.yourServices" : "Twoje usługi", |
@@ -108,7 +151,7 @@ | |||
108 | "settings.recipes.mostPopular" : "Najpopularniejsze", | 151 | "settings.recipes.mostPopular" : "Najpopularniejsze", |
109 | "settings.recipes.nothingFound" : "Żadna usługa nie została znaleziona.", | 152 | "settings.recipes.nothingFound" : "Żadna usługa nie została znaleziona.", |
110 | "settings.recipes.servicesSuccessfulAddedInfo" : "Usługa została dodana pomyślnie", | 153 | "settings.recipes.servicesSuccessfulAddedInfo" : "Usługa została dodana pomyślnie", |
111 | "settings.searchService" : "Search service", | 154 | "settings.searchService" : "Wyszukaj serwis", |
112 | "settings.service.error.goBack" : "Wróć do usług", | 155 | "settings.service.error.goBack" : "Wróć do usług", |
113 | "settings.service.error.headline" : "BÅ‚Ä…d", | 156 | "settings.service.error.headline" : "BÅ‚Ä…d", |
114 | "settings.service.error.message" : "Nie można wczytać przepisu usługi.", | 157 | "settings.service.error.message" : "Nie można wczytać przepisu usługi.", |
@@ -121,15 +164,15 @@ | |||
121 | "settings.service.form.deleteButton" : "Usuń usługę", | 164 | "settings.service.form.deleteButton" : "Usuń usługę", |
122 | "settings.service.form.editServiceHeadline" : "Edytuj {name}", | 165 | "settings.service.form.editServiceHeadline" : "Edytuj {name}", |
123 | "settings.service.form.enableAudio" : "Włącz dźwięk", | 166 | "settings.service.form.enableAudio" : "Włącz dźwięk", |
124 | "settings.service.form.enableBadge" : "Show unread message badges", | 167 | "settings.service.form.enableBadge" : "Pokaż znacznik nieprzeczytanych wiadomości", |
125 | "settings.service.form.enableNotification" : "Aktywuj powiadomienia", | 168 | "settings.service.form.enableNotification" : "Aktywuj powiadomienia", |
126 | "settings.service.form.enableService" : "Aktywuj usługę", | 169 | "settings.service.form.enableService" : "Aktywuj usługę", |
127 | "settings.service.form.headlineBadges" : "Unread message badges", | 170 | "settings.service.form.headlineBadges" : "Znaczniki nieprzeczytanych wiadomości", |
128 | "settings.service.form.headlineGeneral" : "Ogólne", | 171 | "settings.service.form.headlineGeneral" : "Ogólne", |
129 | "settings.service.form.headlineNotifications" : "Notifications", | 172 | "settings.service.form.headlineNotifications" : "Powiadomienia", |
130 | "settings.service.form.icon" : "Custom icon", | 173 | "settings.service.form.icon" : "WÅ‚asna ikona", |
131 | "settings.service.form.iconDelete" : "Delete", | 174 | "settings.service.form.iconDelete" : "Usuń", |
132 | "settings.service.form.iconUpload" : "Drop your image, or click here", | 175 | "settings.service.form.iconUpload" : "Przeciągnij i upuść obraz lub kliknij tutaj", |
133 | "settings.service.form.indirectMessageInfo" : "Będziesz informowany o wszystkich nowych wiadomościach na kanale, nie tylko @username, @channel, @here, ...", | 176 | "settings.service.form.indirectMessageInfo" : "Będziesz informowany o wszystkich nowych wiadomościach na kanale, nie tylko @username, @channel, @here, ...", |
134 | "settings.service.form.indirectMessages" : "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości", | 177 | "settings.service.form.indirectMessages" : "Pokaż ikonę wiadomości dla wszystkich nowych wiadomości", |
135 | "settings.service.form.isMutedInfo" : "Kiedy nieaktywne, wszystkie dźwięki powiadomień są wyciszone", | 178 | "settings.service.form.isMutedInfo" : "Kiedy nieaktywne, wszystkie dźwięki powiadomień są wyciszone", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "WÅ‚Ä…cz powiadomienia", | 240 | "tabs.item.enableNotification" : "WÅ‚Ä…cz powiadomienia", |
198 | "tabs.item.enableService" : "Aktywuj usługę", | 241 | "tabs.item.enableService" : "Aktywuj usługę", |
199 | "tabs.item.reload" : "Przeładuj", | 242 | "tabs.item.reload" : "Przeładuj", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Zaloguj siÄ™ na swoje konto", | 247 | "welcome.loginButton" : "Zaloguj siÄ™ na swoje konto", |
201 | "welcome.signupButton" : "Stwórz darmowe konto", | 248 | "welcome.signupButton" : "Stwórz darmowe konto", |
202 | "welcome.slogan" : "Komunikator który działa" | 249 | "welcome.slogan" : "Komunikator który działa" |
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index acdf38f8d..6ba448999 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json | |||
@@ -1,5 +1,5 @@ | |||
1 | { | 1 | { |
2 | "global.api.unhealthy" : "Não foi possÃvel conectar-se aos serviços do Franz", | 2 | "global.api.unhealthy" : "Não foi possÃvel conectar aos serviços do Franz", |
3 | "global.notConnectedToTheInternet" : "Você não está conectado à internet.", | 3 | "global.notConnectedToTheInternet" : "Você não está conectado à internet.", |
4 | "import.headline" : "Importe seus serviços do Franz 4", | 4 | "import.headline" : "Importe seus serviços do Franz 4", |
5 | "import.notSupportedHeadline" : "Serviços ainda não suportados pelo Franz 5", | 5 | "import.notSupportedHeadline" : "Serviços ainda não suportados pelo Franz 5", |
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Sua sessão expirou, faça o login novamente.", | 26 | "login.serverLogout" : "Sua sessão expirou, faça o login novamente.", |
27 | "login.submit.label" : "Entrar", | 27 | "login.submit.label" : "Entrar", |
28 | "login.tokenExpired" : "Sua sessão expirou, faça o login novamente.", | 28 | "login.tokenExpired" : "Sua sessão expirou, faça o login novamente.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Ajustes", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Editar", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Excluir", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Declaração de privacidade", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Endereço de e-mail", | 72 | "password.email.label" : "Endereço de e-mail", |
30 | "password.headline" : "Trocar a senha", | 73 | "password.headline" : "Trocar a senha", |
31 | "password.link.login" : "Fazer login na sua conta", | 74 | "password.link.login" : "Fazer login na sua conta", |
@@ -197,7 +240,11 @@ | |||
197 | "tabs.item.enableNotification" : "Ativar notificações", | 240 | "tabs.item.enableNotification" : "Ativar notificações", |
198 | "tabs.item.enableService" : "Ativar serviço", | 241 | "tabs.item.enableService" : "Ativar serviço", |
199 | "tabs.item.reload" : "Recarregar", | 242 | "tabs.item.reload" : "Recarregar", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Entrar na sua conta", | 247 | "welcome.loginButton" : "Entrar na sua conta", |
201 | "welcome.signupButton" : "Criar uma conta grátis", | 248 | "welcome.signupButton" : "Criar uma conta grátis", |
202 | "welcome.slogan" : "Mensageria que funciona, para você" | 249 | "welcome.slogan" : "Mensagens que funcionam para você" |
203 | } | 250 | } |
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index fb08ebd2a..9e6d6ac94 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json | |||
@@ -1,112 +1,155 @@ | |||
1 | { | 1 | { |
2 | "global.api.unhealthy" : "Não foi possÃvel conectar aos serviços do Franz", | 2 | "global.api.unhealthy" : "Não foi possÃvel conetar aos serviços do Franz", |
3 | "global.notConnectedToTheInternet" : "Não estás conectado à internet.", | 3 | "global.notConnectedToTheInternet" : "Não existe ligação à Internet.", |
4 | "import.headline" : "Importar os teus serviços do Franz 4", | 4 | "import.headline" : "Importe os seus serviços do Franz 4", |
5 | "import.notSupportedHeadline" : "Os serviços não são suportados no Franz 5", | 5 | "import.notSupportedHeadline" : "Serviços ainda não são suportados pelo Franz 5", |
6 | "import.skip.label" : "Quero adicionar serviços manualmente", | 6 | "import.skip.label" : "Quero adicionar serviços manualmente", |
7 | "import.submit.label" : "Importar serviços", | 7 | "import.submit.label" : "Importar serviços", |
8 | "infobar.buttonChangelog" : "Novidades?", | 8 | "infobar.buttonChangelog" : "Novidades?", |
9 | "infobar.buttonInstallUpdate" : "Reiniciar & Instalar Atualizações", | 9 | "infobar.buttonInstallUpdate" : "Reiniciar & Instalar Atualizações", |
10 | "infobar.buttonReloadServices" : "Recarregar serviços", | 10 | "infobar.buttonReloadServices" : "Recarregar serviços", |
11 | "infobar.requiredRequestsFailed" : "Não foi possivel carregar os serviços e informações do utilizador", | 11 | "infobar.requiredRequestsFailed" : "Não foi possivel carregar os serviços e informações do utilizador", |
12 | "infobar.servicesUpdated" : "Os teus serviços foram atualizados", | 12 | "infobar.servicesUpdated" : "Os seus serviços foram atualizados.", |
13 | "infobar.updateAvailable" : "Uma atualização está disponÃvel", | 13 | "infobar.updateAvailable" : "Está disponÃvel uma atualização", |
14 | "invite.email.label" : "Endereço de e-mail", | 14 | "invite.email.label" : "Endereço de e-mail", |
15 | "invite.headline.friends" : "Manda 3 convites aos teus amigos ou colegas", | 15 | "invite.headline.friends" : "Convide 3 amigos ou colegas", |
16 | "invite.name.label" : "Nome", | 16 | "invite.name.label" : "Nome", |
17 | "invite.skip.label" : "Quero adicionar mais tarde", | 17 | "invite.skip.label" : "Quero fazer isto mais tarde", |
18 | "invite.submit.label" : "Mandar convites", | 18 | "invite.submit.label" : "Enviar convites", |
19 | "invite.successInfo" : "Invitations sent successfully", | 19 | "invite.successInfo" : "Convites enviados com sucesso", |
20 | "login.email.label" : "Endereço de e-mail", | 20 | "login.email.label" : "Endereço de e-mail", |
21 | "login.headline" : "Registar", | 21 | "login.headline" : "Registar", |
22 | "login.invalidCredentials" : " O email ou a password estão incorretos", | 22 | "login.invalidCredentials" : "O email ou a palavra-passe estão incorretos", |
23 | "login.link.password" : "Repor a minha password", | 23 | "login.link.password" : "Repor a minha palavra-passe", |
24 | "login.link.signup" : "Criar uma conta gratuita", | 24 | "login.link.signup" : "Criar uma conta gratuita", |
25 | "login.password.label" : "Password", | 25 | "login.password.label" : "Palavra-passe", |
26 | "login.serverLogout" : "A tua sessão expirou, por favor, volta a fazer login.", | 26 | "login.serverLogout" : "A sua sessão expirou, inicie sessão novamente.", |
27 | "login.submit.label" : "Iniciar Sessão", | 27 | "login.submit.label" : "Iniciar sessão", |
28 | "login.tokenExpired" : "A tua sessão expirou, por favor, volta a fazer login.", | 28 | "login.tokenExpired" : "A sua sessão expirou, inicie sessão novamente.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Definições", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Editar", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Apagar", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Declaração de privacidade", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Endereço de e-mail", | 72 | "password.email.label" : "Endereço de e-mail", |
30 | "password.headline" : "Repor a minha password", | 73 | "password.headline" : "Repor a minha palavra-passe", |
31 | "password.link.login" : "Fazer login", | 74 | "password.link.login" : "Iniciar sessão", |
32 | "password.link.signup" : "Criar uma conta gratuita", | 75 | "password.link.signup" : "Criar uma conta gratuita", |
33 | "password.noUser" : "Não existe nenhuma conta associada a esse email", | 76 | "password.noUser" : "Não existe nenhuma conta associada a esse email", |
34 | "password.submit.label" : "Submeter", | 77 | "password.submit.label" : "Submeter", |
35 | "password.successInfo" : "Por favor, revê o teu email", | 78 | "password.successInfo" : "Por favor reveja o seu email", |
36 | "pricing.headline" : "Apoia o Franz", | 79 | "pricing.headline" : "Apoie o Franz", |
37 | "pricing.link.skipPayment" : "Não quero ajudar no desenvolvimento do Franz", | 80 | "pricing.link.skipPayment" : "Não pretendo ajudar no desenvolvimento do Franz", |
38 | "pricing.submit.label" : "Quero ajudar o desenvolvimento do Franz", | 81 | "pricing.submit.label" : "Pretendo ajudar no desenvolvimento do Franz", |
39 | "pricing.support.label" : "Seleciona o teu plano", | 82 | "pricing.support.label" : "Selecione o seu plano", |
40 | "service.crashHandler.action" : "Actualizar", | 83 | "service.crashHandler.action" : "Recarregar", |
41 | "service.crashHandler.autoReload" : "A tentar restaurar automaticamente {name} em {seconds} seconds", | 84 | "service.crashHandler.autoReload" : "A tentar restaurar automaticamente {name} em {seconds} segundos", |
42 | "service.crashHandler.headline" : "Oh não!", | 85 | "service.crashHandler.headline" : "Oh não!", |
43 | "service.crashHandler.text" : "{name} causou um erro.", | 86 | "service.crashHandler.text" : "{name} causou um erro.", |
44 | "service.disabledHandler.action" : "Habilitar {name}", | 87 | "service.disabledHandler.action" : "Ativar {name}", |
45 | "service.disabledHandler.headline" : "{name} está desactivado", | 88 | "service.disabledHandler.headline" : "{name} está desativado", |
46 | "services.getStarted" : "Vamos começar", | 89 | "services.getStarted" : "Vamos começar", |
47 | "services.welcome" : "Bem-vindo ao Franz", | 90 | "services.welcome" : "Bem-vindo ao Franz", |
48 | "settings.account.account.editButton" : "Editar conta", | 91 | "settings.account.account.editButton" : "Editar conta", |
49 | "settings.account.accountType.basic" : "Conta básica", | 92 | "settings.account.accountType.basic" : "Conta básica", |
50 | "settings.account.accountType.premium" : "Conta Premium, a ajudar o Franz", | 93 | "settings.account.accountType.premium" : "Conta Premium", |
51 | "settings.account.buttonSave" : "Atualizar o perfil", | 94 | "settings.account.buttonSave" : "Atualizar o perfil", |
52 | "settings.account.deleteAccount" : "Apagar conta", | 95 | "settings.account.deleteAccount" : "Apagar conta", |
53 | "settings.account.deleteEmailSent" : "Recebeu um email com um endereço para confirmar a remoção da sua conta. A sua conta e dados não são possiveis de restaurar!", | 96 | "settings.account.deleteEmailSent" : "Recebeu um email com um endereço para confirmar a remoção da sua conta. A sua conta e dados não poderão ser restaurados!", |
54 | "settings.account.deleteInfo" : "Se não precisa mais da sua conta Franz, pode apagar a conta e os seus dados aqui.", | 97 | "settings.account.deleteInfo" : "Se não necessita mais da sua conta Franz, pode apagar a sua conta e dados aqui.", |
55 | "settings.account.headline" : "Conta", | 98 | "settings.account.headline" : "Conta", |
56 | "settings.account.headlineAccount" : "Informação da conta", | 99 | "settings.account.headlineAccount" : "Informação da conta", |
57 | "settings.account.headlineDangerZone" : "Zona de perigo", | 100 | "settings.account.headlineDangerZone" : "Zona de perigo", |
58 | "settings.account.headlineInvoices" : "Faturas", | 101 | "settings.account.headlineInvoices" : "Faturas", |
59 | "settings.account.headlinePassword" : "Mudar password", | 102 | "settings.account.headlinePassword" : "Alterar palavra-passe", |
60 | "settings.account.headlineProfile" : "Actualizar o perfil", | 103 | "settings.account.headlineProfile" : "Atualizar perfil", |
61 | "settings.account.headlineSubscription" : "A tua subscrição", | 104 | "settings.account.headlineSubscription" : "A sua subscrição", |
62 | "settings.account.headlineUpgrade" : "Atualiza a tua conta e ajuda o Franz", | 105 | "settings.account.headlineUpgrade" : "Atualize a sua conta e ajude o Franz", |
63 | "settings.account.invoiceDownload" : "Descarregar", | 106 | "settings.account.invoiceDownload" : "Transferir", |
64 | "settings.account.manageSubscription.label" : "Gerir as minhas subscrições", | 107 | "settings.account.manageSubscription.label" : "Gerir as minhas subscrições", |
65 | "settings.account.successInfo" : "As tuas mudanças foram feitas com sucesso", | 108 | "settings.account.successInfo" : "As suas mudanças foram efetuadas com sucesso", |
66 | "settings.account.tryReloadUserInfoRequest" : "Tentar novamente", | 109 | "settings.account.tryReloadUserInfoRequest" : "Tentar novamente", |
67 | "settings.account.userInfoRequestFailed" : "Não é possÃvel carregar a informação do utilizador.", | 110 | "settings.account.userInfoRequestFailed" : "Não é possÃvel carregar a informação do utilizador", |
68 | "settings.app.buttonClearAllCache" : "Limpar a 'cache'", | 111 | "settings.app.buttonClearAllCache" : "Limpar cache", |
69 | "settings.app.buttonInstallUpdate" : "Reiniciar & Instalar Atualizações", | 112 | "settings.app.buttonInstallUpdate" : "Reiniciar & Instalar Atualizações", |
70 | "settings.app.buttonSearchForUpdate" : "Procurar por atualizações", | 113 | "settings.app.buttonSearchForUpdate" : "Procurar por atualizações", |
71 | "settings.app.cacheInfo" : "O 'chache' do Franz está a usar {size} do espaço do disco.", | 114 | "settings.app.cacheInfo" : "A cache do Franz está a usar {size} do espaço em disco.", |
72 | "settings.app.currentVersion" : "Versão atual", | 115 | "settings.app.currentVersion" : "Versão atual", |
73 | "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano", | 116 | "settings.app.form.autoLaunchInBackground" : "Abrir em segundo plano", |
74 | "settings.app.form.autoLaunchOnStart" : "Inicar o Franz quando inciar o computador", | 117 | "settings.app.form.autoLaunchOnStart" : "Iniciar o Franz com o inÃcio de sessão", |
75 | "settings.app.form.beta" : "Incluir versões instáveis (beta)", | 118 | "settings.app.form.beta" : "Incluir versões instáveis (beta)", |
76 | "settings.app.form.enableMenuBar" : "Show Franz in Menu Bar", | 119 | "settings.app.form.enableMenuBar" : "Mostrar Franz na Barra de Menu", |
77 | "settings.app.form.enableSpellchecking" : "Ativar verificação ortográfica", | 120 | "settings.app.form.enableSpellchecking" : "Ativar verificação ortográfica", |
78 | "settings.app.form.enableSystemTray" : "Mostrar o Franz na bandeja do sistema", | 121 | "settings.app.form.enableSystemTray" : "Mostrar o Franz na barra do sistema", |
79 | "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock", | 122 | "settings.app.form.hideDockIcon" : "Esconder Ãcone na Dock", |
80 | "settings.app.form.language" : "Idioma:", | 123 | "settings.app.form.language" : "Idioma:", |
81 | "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a bandeja do sistema", | 124 | "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a barra do sistema", |
82 | "settings.app.form.runInBackground" : "Manter o Franz em segundo plano ao fechar a janela", | 125 | "settings.app.form.runInBackground" : "Manter o Franz em segundo plano ao fechar a janela", |
83 | "settings.app.form.showDisabledServices" : "Apresentar separadores de serviços desactivados", | 126 | "settings.app.form.showDisabledServices" : "Apresentar separadores de serviços desativados", |
84 | "settings.app.form.showMessagesBadgesWhenMuted" : "Apresentar icon com o número de mensagens não lidas quando as notificações estão desactivadas", | 127 | "settings.app.form.showMessagesBadgesWhenMuted" : "Apresentar emblema com o número de mensagens não lidas quando as notificações estão desactivadas", |
85 | "settings.app.headline" : "Definições", | 128 | "settings.app.headline" : "Definições", |
86 | "settings.app.headlineAdvanced" : "Avançado", | 129 | "settings.app.headlineAdvanced" : "Avançado", |
87 | "settings.app.headlineAppearance" : "Aparência", | 130 | "settings.app.headlineAppearance" : "Aparência", |
88 | "settings.app.headlineGeneral" : "Geral", | 131 | "settings.app.headlineGeneral" : "Geral", |
89 | "settings.app.headlineLanguage" : "Idioma:", | 132 | "settings.app.headlineLanguage" : "Idioma:", |
90 | "settings.app.headlineUpdates" : "Atualizações", | 133 | "settings.app.headlineUpdates" : "Atualizações", |
91 | "settings.app.restartRequired" : "Alterações requerem reiniciar", | 134 | "settings.app.restartRequired" : "Alterações requerem reinÃcio", |
92 | "settings.app.subheadlineCache" : "Cache", | 135 | "settings.app.subheadlineCache" : "Cache", |
93 | "settings.app.translationHelp" : "Ajude a traduzir a Franz para a sua lÃngua. ", | 136 | "settings.app.translationHelp" : "Ajude-nos a traduzir a Franz para a sua lÃngua.", |
94 | "settings.app.updateStatusAvailable" : "Atualização disponivel, a descarregar...", | 137 | "settings.app.updateStatusAvailable" : "Atualização disponivel, a transferir...", |
95 | "settings.app.updateStatusSearching" : "Está a procurar atualizações", | 138 | "settings.app.updateStatusSearching" : "Procurando por atualizações", |
96 | "settings.app.updateStatusUpToDate" : "Estás a usar a última versão do Franz", | 139 | "settings.app.updateStatusUpToDate" : "Está a usar a versão mais recente do Franz", |
97 | "settings.invite.headline" : "Invite Friends", | 140 | "settings.invite.headline" : "Convide amigos", |
98 | "settings.navigation.account" : "Conta", | 141 | "settings.navigation.account" : "Conta", |
99 | "settings.navigation.availableServices" : "Serviços disponÃveis", | 142 | "settings.navigation.availableServices" : "Serviços disponÃveis", |
100 | "settings.navigation.inviteFriends" : "Invite Friends", | 143 | "settings.navigation.inviteFriends" : "Convide amigos", |
101 | "settings.navigation.logout" : "Terminar Sessão", | 144 | "settings.navigation.logout" : "Terminar sessão", |
102 | "settings.navigation.settings" : "Definições", | 145 | "settings.navigation.settings" : "Definições", |
103 | "settings.navigation.yourServices" : "Os teus serviços", | 146 | "settings.navigation.yourServices" : "Os seus serviços", |
104 | "settings.recipes.all" : "Todos os serviços", | 147 | "settings.recipes.all" : "Todos os serviços", |
105 | "settings.recipes.dev" : "Desenvolvimento", | 148 | "settings.recipes.dev" : "Desenvolvimento", |
106 | "settings.recipes.headline" : "Serviços disponÃveis", | 149 | "settings.recipes.headline" : "Serviços disponÃveis", |
107 | "settings.recipes.missingService" : "A faltar um serviço?", | 150 | "settings.recipes.missingService" : "A faltar um serviço?", |
108 | "settings.recipes.mostPopular" : "Os mais populares", | 151 | "settings.recipes.mostPopular" : "Os mais populares", |
109 | "settings.recipes.nothingFound" : "Desculpa, mas não existe nenhum serviço com este termo.", | 152 | "settings.recipes.nothingFound" : "Lamentamos, mas não existe nenhum serviço corresponde ao pesquisado.", |
110 | "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado", | 153 | "settings.recipes.servicesSuccessfulAddedInfo" : "Serviço adicionado", |
111 | "settings.searchService" : "Pesquisa de serviço", | 154 | "settings.searchService" : "Pesquisa de serviço", |
112 | "settings.service.error.goBack" : "Voltar aos serviços", | 155 | "settings.service.error.goBack" : "Voltar aos serviços", |
@@ -115,89 +158,93 @@ | |||
115 | "settings.service.form.addServiceHeadline" : "Adicionar {name}", | 158 | "settings.service.form.addServiceHeadline" : "Adicionar {name}", |
116 | "settings.service.form.availableServices" : "Serviços disponÃveis", | 159 | "settings.service.form.availableServices" : "Serviços disponÃveis", |
117 | "settings.service.form.customUrl" : "Servidor personalizado", | 160 | "settings.service.form.customUrl" : "Servidor personalizado", |
118 | "settings.service.form.customUrlPremiumInfo" : "Para adicionar serviços de hospedagem própria, precisas de uma Conta Premium Franz.", | 161 | "settings.service.form.customUrlPremiumInfo" : "Para adicionar serviços com domÃnio próprio, é necessário uma Conta Premium.", |
119 | "settings.service.form.customUrlUpgradeAccount" : "Atualizar a conta", | 162 | "settings.service.form.customUrlUpgradeAccount" : "Atualizar a conta", |
120 | "settings.service.form.customUrlValidationError" : "Não foi possÃvel validar o servidor {nome}.", | 163 | "settings.service.form.customUrlValidationError" : "Não foi possÃvel validar o servidor {nome}.", |
121 | "settings.service.form.deleteButton" : "Apagar serviço", | 164 | "settings.service.form.deleteButton" : "Apagar serviço", |
122 | "settings.service.form.editServiceHeadline" : "Editar {name}", | 165 | "settings.service.form.editServiceHeadline" : "Editar {name}", |
123 | "settings.service.form.enableAudio" : "Activar áudio", | 166 | "settings.service.form.enableAudio" : "Ativar áudio", |
124 | "settings.service.form.enableBadge" : "Mostrar emblema de mensagens não vistas", | 167 | "settings.service.form.enableBadge" : "Mostrar emblema de mensagens não vistas", |
125 | "settings.service.form.enableNotification" : "Ativar notificações", | 168 | "settings.service.form.enableNotification" : "Ativar notificações", |
126 | "settings.service.form.enableService" : "Ativar serviço", | 169 | "settings.service.form.enableService" : "Ativar serviço", |
127 | "settings.service.form.headlineBadges" : "Emblema de mensagem não vista", | 170 | "settings.service.form.headlineBadges" : "Emblema de mensagem não vista", |
128 | "settings.service.form.headlineGeneral" : "Geral", | 171 | "settings.service.form.headlineGeneral" : "Geral", |
129 | "settings.service.form.headlineNotifications" : "Notificações", | 172 | "settings.service.form.headlineNotifications" : "Notificações", |
130 | "settings.service.form.icon" : "Icon personalizável", | 173 | "settings.service.form.icon" : "Personalizar Ãcone", |
131 | "settings.service.form.iconDelete" : "Apagar", | 174 | "settings.service.form.iconDelete" : "Apagar", |
132 | "settings.service.form.iconUpload" : "Arraste a sua imagem, ou clique aqui", | 175 | "settings.service.form.iconUpload" : "Arraste a sua imagem, ou clique aqui", |
133 | "settings.service.form.indirectMessageInfo" : "Serás notificado sobre todas as novas mensagens de um canal, não só @username, @channel, @here, ...", | 176 | "settings.service.form.indirectMessageInfo" : "Será notificado sobre todas as novas mensagens de um canal, não apenas @username, @channel, @here, ...", |
134 | "settings.service.form.indirectMessages" : "Mostrar o emblema da mensagem para todas as novas mensagens", | 177 | "settings.service.form.indirectMessages" : "Mostrar o emblema da mensagem para todas as novas mensagens", |
135 | "settings.service.form.isMutedInfo" : "Quando desactivado, todo o audio das notificações estará em silêncio", | 178 | "settings.service.form.isMutedInfo" : "Quando desativado, todas as notificações de áudio serão silenciadas", |
136 | "settings.service.form.name" : "Nome", | 179 | "settings.service.form.name" : "Nome", |
137 | "settings.service.form.saveButton" : "Guardar serviço", | 180 | "settings.service.form.saveButton" : "Guardar serviço", |
138 | "settings.service.form.tabHosted" : "Hospedado", | 181 | "settings.service.form.tabHosted" : "Com domÃnio", |
139 | "settings.service.form.tabOnPremise" : "Hospedado por si próprio âï¸", | 182 | "settings.service.form.tabOnPremise" : "Com domÃnio próprio âï¸", |
140 | "settings.service.form.team" : "Equipa", | 183 | "settings.service.form.team" : "Equipa", |
141 | "settings.service.form.useHostedService" : "Utilize o serviço oferecido por {name}.", | 184 | "settings.service.form.useHostedService" : "Utilize o serviço oferecido por {name}.", |
142 | "settings.service.form.yourServices" : "Os teus serviços", | 185 | "settings.service.form.yourServices" : "Os seus serviços", |
143 | "settings.services.deletedInfo" : "O serviço foi apagado", | 186 | "settings.services.deletedInfo" : "O serviço foi apagado", |
144 | "settings.services.discoverServices" : "Descobrir serviços", | 187 | "settings.services.discoverServices" : "Descobrir serviços", |
145 | "settings.services.headline" : "Os teus serviços", | 188 | "settings.services.headline" : "Os seus serviços", |
146 | "settings.services.noServicesAdded" : "Ainda não adicionaste nenhum serviço.", | 189 | "settings.services.noServicesAdded" : "Ainda não adicionou nenhum serviço.", |
147 | "settings.services.tooltip.isDisabled" : "O serviço está desativado", | 190 | "settings.services.tooltip.isDisabled" : "O serviço está desativado", |
148 | "settings.services.tooltip.isMuted" : "Todos os sons estão silenciados", | 191 | "settings.services.tooltip.isMuted" : "Todos os sons estão silenciados", |
149 | "settings.services.tooltip.notificationsDisabled" : "As notificações estão desabilitadas", | 192 | "settings.services.tooltip.notificationsDisabled" : "As notificações estão desativadas", |
150 | "settings.services.updatedInfo" : "As alterações foram guardadas", | 193 | "settings.services.updatedInfo" : "As alterações foram guardadas", |
151 | "settings.user.form.accountType.company" : "Empresa", | 194 | "settings.user.form.accountType.company" : "Empresa", |
152 | "settings.user.form.accountType.individual" : "Individual", | 195 | "settings.user.form.accountType.individual" : "IndivÃduo", |
153 | "settings.user.form.accountType.label" : "Tipo de conta", | 196 | "settings.user.form.accountType.label" : "Tipo de conta", |
154 | "settings.user.form.accountType.non-profit" : "Sem fins lucrativos", | 197 | "settings.user.form.accountType.non-profit" : "Sem fins lucrativos", |
155 | "settings.user.form.currentPassword" : "Password atual", | 198 | "settings.user.form.currentPassword" : "Palavra-passe atual", |
156 | "settings.user.form.email" : "Email", | 199 | "settings.user.form.email" : "Email", |
157 | "settings.user.form.firstname" : "Primeiro Nome", | 200 | "settings.user.form.firstname" : "Primeiro Nome", |
158 | "settings.user.form.lastname" : "Último Nome", | 201 | "settings.user.form.lastname" : "Último Nome", |
159 | "settings.user.form.newPassword" : "Nova password", | 202 | "settings.user.form.newPassword" : "Nova palavra-passe", |
160 | "sidebar.addNewService" : "Adicionar um novo serviço", | 203 | "sidebar.addNewService" : "Adicionar um novo serviço", |
161 | "sidebar.muteApp" : "Desactivar notificações e audio", | 204 | "sidebar.muteApp" : "Desativar notificações e áudio", |
162 | "sidebar.settings" : "Definições", | 205 | "sidebar.settings" : "Definições", |
163 | "sidebar.unmuteApp" : "Activar notificações e audio", | 206 | "sidebar.unmuteApp" : "Ativar notificações e áudio", |
164 | "signup.company.label" : "Empresa", | 207 | "signup.company.label" : "Empresa", |
165 | "signup.email.label" : "Endereço de e-mail", | 208 | "signup.email.label" : "Endereço de e-mail", |
166 | "signup.emailDuplicate" : "Uma conta já tem esse email associado", | 209 | "signup.emailDuplicate" : "Já existe uma conta associada a este endereço", |
167 | "signup.firstname.label" : "Primeiro Nome", | 210 | "signup.firstname.label" : "Primeiro Nome", |
168 | "signup.headline" : "Iniciar Sessão", | 211 | "signup.headline" : "Criar conta", |
169 | "signup.lastname.label" : "Último Nome", | 212 | "signup.lastname.label" : "Último Nome", |
170 | "signup.legal.info" : "Ao criar uma conta Franz, aceitas", | 213 | "signup.legal.info" : "Ao criar uma conta Franz, aceita", |
171 | "signup.legal.privacy" : "Declaração de privacidade", | 214 | "signup.legal.privacy" : "Declaração de privacidade", |
172 | "signup.legal.terms" : "Termos de Serviço", | 215 | "signup.legal.terms" : "Termos de Serviço", |
173 | "signup.link.login" : "Já tens uma conta?", | 216 | "signup.link.login" : "Já tem conta, iniciar sessão?", |
174 | "signup.password.label" : "Password", | 217 | "signup.password.label" : "Palavra-passe", |
175 | "signup.submit.label" : "Criar uma Conta", | 218 | "signup.submit.label" : "Criar uma conta", |
176 | "subscription.euTaxInfo" : "Residentes EU: Taxas locais podem ser aplicadas", | 219 | "subscription.euTaxInfo" : "Residentes EU: Taxas locais podem ser aplicadas", |
177 | "subscription.features.ads" : "Sem anúncios, para sempre!", | 220 | "subscription.features.ads" : "Sem anúncios, para sempre!", |
178 | "subscription.features.comingSoon" : "Em breve!", | 221 | "subscription.features.comingSoon" : "Em breve!", |
179 | "subscription.features.customServices" : "Serviços privados para ti e para os teus amigos\/colegas", | 222 | "subscription.features.customServices" : "Serviços privados para si e para a sua equipa", |
180 | "subscription.features.encryptedSync" : "Sincronização encriptada de serviços", | 223 | "subscription.features.encryptedSync" : "Sincronização encriptada de serviços", |
181 | "subscription.features.onpremise" : "Adicionar serviços 'on-premise'\/hosted como o HipChat", | 224 | "subscription.features.onpremise" : "Adicionar serviços 'on-premise'\/hosted como o HipChat", |
182 | "subscription.features.vpn" : "Suporte para proxy\/VPN", | 225 | "subscription.features.vpn" : "Suporte para proxy\/VPN", |
183 | "subscription.includedFeatures" : "Ao pagares para o Franz Premium, tens acesso a", | 226 | "subscription.includedFeatures" : "Ao subscrever uma Conta Premium, tem acesso a", |
184 | "subscription.paymentSessionError" : "Erro no serviço de pagamento", | 227 | "subscription.paymentSessionError" : "Erro no serviço de pagamento", |
185 | "subscription.submit.label" : "Quero ajudar o desenvolvimento do Franz", | 228 | "subscription.submit.label" : "Pretendo ajudar o desenvolvimento do Franz", |
186 | "subscription.type.free" : "Gratuito", | 229 | "subscription.type.free" : "Gratuito", |
187 | "subscription.type.month" : "mês", | 230 | "subscription.type.month" : "mês", |
188 | "subscription.type.year" : "ano", | 231 | "subscription.type.year" : "ano", |
189 | "subscriptionPopup.buttonCancel" : "Cancelar", | 232 | "subscriptionPopup.buttonCancel" : "Cancelar", |
190 | "subscriptionPopup.buttonDone" : "ConcluÃdo", | 233 | "subscriptionPopup.buttonDone" : "ConcluÃdo", |
191 | "tabs.item.deleteService" : "Apagar serviço", | 234 | "tabs.item.deleteService" : "Apagar serviço", |
192 | "tabs.item.disableAudio" : "Desactivar audio", | 235 | "tabs.item.disableAudio" : "Desativar áudio", |
193 | "tabs.item.disableNotifications" : "Desativar notificações", | 236 | "tabs.item.disableNotifications" : "Desativar notificações", |
194 | "tabs.item.disableService" : "Desativar serviço", | 237 | "tabs.item.disableService" : "Desativar serviço", |
195 | "tabs.item.edit" : "Editar", | 238 | "tabs.item.edit" : "Editar", |
196 | "tabs.item.enableAudio" : "Activar áudio", | 239 | "tabs.item.enableAudio" : "Ativar áudio", |
197 | "tabs.item.enableNotification" : "Ativar notificações", | 240 | "tabs.item.enableNotification" : "Ativar notificações", |
198 | "tabs.item.enableService" : "Ativar serviço", | 241 | "tabs.item.enableService" : "Ativar serviço", |
199 | "tabs.item.reload" : "Recarregar", | 242 | "tabs.item.reload" : "Recarregar", |
200 | "welcome.loginButton" : "Fazer login", | 243 | "validation.email" : "{field} is not valid", |
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
247 | "welcome.loginButton" : "Iniciar sessão", | ||
201 | "welcome.signupButton" : "Criar uma conta gratuita", | 248 | "welcome.signupButton" : "Criar uma conta gratuita", |
202 | "welcome.slogan" : "Messaging that works for you" | 249 | "welcome.slogan" : "Messaging that works for you" |
203 | } | 250 | } |
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 65b61c1e5..4d9f7f274 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json | |||
@@ -26,13 +26,56 @@ | |||
26 | "login.serverLogout" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.", | 26 | "login.serverLogout" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.", |
27 | "login.submit.label" : "Вход", | 27 | "login.submit.label" : "Вход", |
28 | "login.tokenExpired" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.", | 28 | "login.tokenExpired" : "СеÑÑÐ¸Ñ ÑƒÑтарела, пожалуйÑта, войдите Ñнова.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "ÐаÑтройки", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Редактировать", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Удалить", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Политика конфиденциальноÑти", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Email адреÑ", | 72 | "password.email.label" : "Email адреÑ", |
30 | "password.headline" : "ВоÑÑтановление паролÑ", | 73 | "password.headline" : "СброÑить пароль", |
31 | "password.link.login" : "Вход", | 74 | "password.link.login" : "Вход", |
32 | "password.link.signup" : "Создать аккаунт", | 75 | "password.link.signup" : "Создать учётную запиÑÑŒ пользователÑ", |
33 | "password.noUser" : "Ðе найдено Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ email", | 76 | "password.noUser" : "Ðе найдено Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ email", |
34 | "password.submit.label" : "ВоÑÑтановить", | 77 | "password.submit.label" : "ПринÑÑ‚ÑŒ", |
35 | "password.successInfo" : "Проверьте Ваш email", | 78 | "password.successInfo" : "Проверьте Вашу Ñлектронную почту", |
36 | "pricing.headline" : "Поддержать Franz", | 79 | "pricing.headline" : "Поддержать Franz", |
37 | "pricing.link.skipPayment" : "Я не хочу поддерживать разработку Franz.", | 80 | "pricing.link.skipPayment" : "Я не хочу поддерживать разработку Franz.", |
38 | "pricing.submit.label" : "Я хочу поддержать разработку Franz", | 81 | "pricing.submit.label" : "Я хочу поддержать разработку Franz", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Включить уведомлениÑ", | 240 | "tabs.item.enableNotification" : "Включить уведомлениÑ", |
198 | "tabs.item.enableService" : "Включить Ñлужбу", | 241 | "tabs.item.enableService" : "Включить Ñлужбу", |
199 | "tabs.item.reload" : "Перезагрузить", | 242 | "tabs.item.reload" : "Перезагрузить", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Вход", | 247 | "welcome.loginButton" : "Вход", |
201 | "welcome.signupButton" : "Создать аккаунт", | 248 | "welcome.signupButton" : "Создать аккаунт", |
202 | "welcome.slogan" : "Общение, которое проÑто работает" | 249 | "welcome.slogan" : "Общение, которое проÑто работает" |
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index 35f06531f..87c1acebc 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Relácia vyprÅ¡ala, prihláste sa prosÃm znova.", | 26 | "login.serverLogout" : "Relácia vyprÅ¡ala, prihláste sa prosÃm znova.", |
27 | "login.submit.label" : "Prihlásiť sa", | 27 | "login.submit.label" : "Prihlásiť sa", |
28 | "login.tokenExpired" : "Relácia vyprÅ¡ala, prosÃm prihláste sa znova.", | 28 | "login.tokenExpired" : "Relácia vyprÅ¡ala, prosÃm prihláste sa znova.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Nastavenia", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Upraviť", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Zmazať", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Vyhlásenie o ochrane súkromia", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Emailová adresa", | 72 | "password.email.label" : "Emailová adresa", |
30 | "password.headline" : "Vynulovať heslo", | 73 | "password.headline" : "Vynulovať heslo", |
31 | "password.link.login" : "Prihlásenie do vaÅ¡eho úÄtu", | 74 | "password.link.login" : "Prihlásenie do vaÅ¡eho úÄtu", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Povoliť oznámenia", | 240 | "tabs.item.enableNotification" : "Povoliť oznámenia", |
198 | "tabs.item.enableService" : "Povoliť službu", | 241 | "tabs.item.enableService" : "Povoliť službu", |
199 | "tabs.item.reload" : "Obnoviť", | 242 | "tabs.item.reload" : "Obnoviť", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Prihláste sa k vášmu úÄtu", | 247 | "welcome.loginButton" : "Prihláste sa k vášmu úÄtu", |
201 | "welcome.signupButton" : "VytvoriÅ¥ užÃvateľský úÄet zdarma", | 248 | "welcome.signupButton" : "VytvoriÅ¥ užÃvateľský úÄet zdarma", |
202 | "welcome.slogan" : "Správy, ktoré pracujú pre vás" | 249 | "welcome.slogan" : "Správy, ktoré pracujú pre vás" |
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index 90e1a04b9..d93712d88 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Vaša sesija je istekla, prijavite se ponovo.", | 26 | "login.serverLogout" : "Vaša sesija je istekla, prijavite se ponovo.", |
27 | "login.submit.label" : "Prijavite se", | 27 | "login.submit.label" : "Prijavite se", |
28 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", | 28 | "login.tokenExpired" : "Vaša sesija je istekla, prijavite se ponovo.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Postavke", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Uredi", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Delete", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Izjava o privatnosti", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Vaša e-adresa", | 72 | "password.email.label" : "Vaša e-adresa", |
30 | "password.headline" : "Stvorite novu zaporku", | 73 | "password.headline" : "Stvorite novu zaporku", |
31 | "password.link.login" : "Prijavite se na VaÅ¡ raÄun", | 74 | "password.link.login" : "Prijavite se na VaÅ¡ raÄun", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Omogući obavijesti", | 240 | "tabs.item.enableNotification" : "Omogući obavijesti", |
198 | "tabs.item.enableService" : "Omogući usluge", | 241 | "tabs.item.enableService" : "Omogući usluge", |
199 | "tabs.item.reload" : "Ponovno uÄitavanje", | 242 | "tabs.item.reload" : "Ponovno uÄitavanje", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Prijavite se na raÄun", | 247 | "welcome.loginButton" : "Prijavite se na raÄun", |
201 | "welcome.signupButton" : "Stvorite novi korisniÄki raÄun", | 248 | "welcome.signupButton" : "Stvorite novi korisniÄki raÄun", |
202 | "welcome.slogan" : "Poruke koje su stvorene za tebe" | 249 | "welcome.slogan" : "Poruke koje su stvorene za tebe" |
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index bcf0dd483..96738d462 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json | |||
@@ -16,7 +16,7 @@ | |||
16 | "invite.name.label" : "Ad", | 16 | "invite.name.label" : "Ad", |
17 | "invite.skip.label" : "Daha sonra yapmak istiyorum", | 17 | "invite.skip.label" : "Daha sonra yapmak istiyorum", |
18 | "invite.submit.label" : "Davetiye gönder", | 18 | "invite.submit.label" : "Davetiye gönder", |
19 | "invite.successInfo" : "Invitations sent successfully", | 19 | "invite.successInfo" : "Davetiyeler başarıyla gönderildi", |
20 | "login.email.label" : "E-posta adresi", | 20 | "login.email.label" : "E-posta adresi", |
21 | "login.headline" : "Oturum Aç", | 21 | "login.headline" : "Oturum Aç", |
22 | "login.invalidCredentials" : "Yanlış parola ya da e-posta adresi", | 22 | "login.invalidCredentials" : "Yanlış parola ya da e-posta adresi", |
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.", | 26 | "login.serverLogout" : "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.", |
27 | "login.submit.label" : "Oturum Aç", | 27 | "login.submit.label" : "Oturum Aç", |
28 | "login.tokenExpired" : "Oturum zaman aşımına uğradı, lütfen tekrar giriş yapın.", | 28 | "login.tokenExpired" : "Oturum zaman aşımına uğradı, lütfen tekrar giriş yapın.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "Ayarlar", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Düzenle", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Sil", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "Gizlilik Sözleşmesi", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "E-posta adresi", | 72 | "password.email.label" : "E-posta adresi", |
30 | "password.headline" : "Parola sıfırla", | 73 | "password.headline" : "Parola sıfırla", |
31 | "password.link.login" : "Hesabına giriş yap", | 74 | "password.link.login" : "Hesabına giriş yap", |
@@ -73,10 +116,10 @@ | |||
73 | "settings.app.form.autoLaunchInBackground" : "Arka planda aç", | 116 | "settings.app.form.autoLaunchInBackground" : "Arka planda aç", |
74 | "settings.app.form.autoLaunchOnStart" : "Franz'ı başlangıçta aç", | 117 | "settings.app.form.autoLaunchOnStart" : "Franz'ı başlangıçta aç", |
75 | "settings.app.form.beta" : "Beta versiyonları dahil et", | 118 | "settings.app.form.beta" : "Beta versiyonları dahil et", |
76 | "settings.app.form.enableMenuBar" : "Show Franz in Menu Bar", | 119 | "settings.app.form.enableMenuBar" : "Menü çubuğunda Franz'ı göster", |
77 | "settings.app.form.enableSpellchecking" : "Yazım denetimini etkinleştir", | 120 | "settings.app.form.enableSpellchecking" : "Yazım denetimini etkinleştir", |
78 | "settings.app.form.enableSystemTray" : "Franz'ı sistem tepsisinde göster", | 121 | "settings.app.form.enableSystemTray" : "Franz'ı sistem tepsisinde göster", |
79 | "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock", | 122 | "settings.app.form.hideDockIcon" : "Franz Simgesini Gösterme", |
80 | "settings.app.form.language" : "Dil", | 123 | "settings.app.form.language" : "Dil", |
81 | "settings.app.form.minimizeToSystemTray" : "Franz'ı sistem tepsisine küçült", | 124 | "settings.app.form.minimizeToSystemTray" : "Franz'ı sistem tepsisine küçült", |
82 | "settings.app.form.runInBackground" : "Pencereyi kapatırken Franz'ı arka planda tut", | 125 | "settings.app.form.runInBackground" : "Pencereyi kapatırken Franz'ı arka planda tut", |
@@ -94,10 +137,10 @@ | |||
94 | "settings.app.updateStatusAvailable" : "Güncelleme mevcut, indiriliyor...", | 137 | "settings.app.updateStatusAvailable" : "Güncelleme mevcut, indiriliyor...", |
95 | "settings.app.updateStatusSearching" : "Güncellemeleri denetliyor", | 138 | "settings.app.updateStatusSearching" : "Güncellemeleri denetliyor", |
96 | "settings.app.updateStatusUpToDate" : "Franz'ın son versiyonunu kullanıyorsun", | 139 | "settings.app.updateStatusUpToDate" : "Franz'ın son versiyonunu kullanıyorsun", |
97 | "settings.invite.headline" : "Invite Friends", | 140 | "settings.invite.headline" : "Arkadaşlarını davet et", |
98 | "settings.navigation.account" : "Hesap", | 141 | "settings.navigation.account" : "Hesap", |
99 | "settings.navigation.availableServices" : "Mevcut servisler", | 142 | "settings.navigation.availableServices" : "Mevcut servisler", |
100 | "settings.navigation.inviteFriends" : "Invite Friends", | 143 | "settings.navigation.inviteFriends" : "Arkadaşlarını Davet Et", |
101 | "settings.navigation.logout" : "Çıkış", | 144 | "settings.navigation.logout" : "Çıkış", |
102 | "settings.navigation.settings" : "Ayarlar", | 145 | "settings.navigation.settings" : "Ayarlar", |
103 | "settings.navigation.yourServices" : "Servislerin", | 146 | "settings.navigation.yourServices" : "Servislerin", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Bildirimleri etkinleÅŸtir", | 240 | "tabs.item.enableNotification" : "Bildirimleri etkinleÅŸtir", |
198 | "tabs.item.enableService" : "Servisi etkinleÅŸtir", | 241 | "tabs.item.enableService" : "Servisi etkinleÅŸtir", |
199 | "tabs.item.reload" : "Yeniden Yükle", | 242 | "tabs.item.reload" : "Yeniden Yükle", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Hesabına giriş yap", | 247 | "welcome.loginButton" : "Hesabına giriş yap", |
201 | "welcome.signupButton" : "Ãœcretsiz hesap oluÅŸtur", | 248 | "welcome.signupButton" : "Ãœcretsiz hesap oluÅŸtur", |
202 | "welcome.slogan" : "Sizin için çalışan mesajlaşma" | 249 | "welcome.slogan" : "Sizin için çalışan mesajlaşma" |
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index 4baf234ac..f7c946436 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json | |||
@@ -16,7 +16,7 @@ | |||
16 | "invite.name.label" : "Ім'Ñ", | 16 | "invite.name.label" : "Ім'Ñ", |
17 | "invite.skip.label" : "Я хочу зробити це пізніше", | 17 | "invite.skip.label" : "Я хочу зробити це пізніше", |
18 | "invite.submit.label" : "Відправити запрошеннÑ", | 18 | "invite.submit.label" : "Відправити запрошеннÑ", |
19 | "invite.successInfo" : "Invitations sent successfully", | 19 | "invite.successInfo" : "Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ ÑƒÑпішно відоÑлані", |
20 | "login.email.label" : "Email адреÑа", | 20 | "login.email.label" : "Email адреÑа", |
21 | "login.headline" : "Увійти", | 21 | "login.headline" : "Увійти", |
22 | "login.invalidCredentials" : "Email або пароль некоректні", | 22 | "login.invalidCredentials" : "Email або пароль некоректні", |
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, зайдіть знову.", | 26 | "login.serverLogout" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, зайдіть знову.", |
27 | "login.submit.label" : "Увійти", | 27 | "login.submit.label" : "Увійти", |
28 | "login.tokenExpired" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, зайдіть знову.", | 28 | "login.tokenExpired" : "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, зайдіть знову.", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "ÐалаштуваннÑ", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "Редагувати", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Видалити", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "ЗаÑва про конфіденційніÑÑ‚ÑŒ", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "Email адреÑа", | 72 | "password.email.label" : "Email адреÑа", |
30 | "password.headline" : "Скинути пароль", | 73 | "password.headline" : "Скинути пароль", |
31 | "password.link.login" : "Увійти до вашого акаунту", | 74 | "password.link.login" : "Увійти до вашого акаунту", |
@@ -50,7 +93,7 @@ | |||
50 | "settings.account.accountType.premium" : "Преміум Ðкаунт Прихильника", | 93 | "settings.account.accountType.premium" : "Преміум Ðкаунт Прихильника", |
51 | "settings.account.buttonSave" : "Оновити профіль", | 94 | "settings.account.buttonSave" : "Оновити профіль", |
52 | "settings.account.deleteAccount" : "Видалити обліковий запиÑ", | 95 | "settings.account.deleteAccount" : "Видалити обліковий запиÑ", |
53 | "settings.account.deleteEmailSent" : "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", | 96 | "settings.account.deleteEmailSent" : "Ви отримали електронного лиÑта з лінком, щоб підтвердити Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу. Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ñ– дані не можна буде відновити!", |
54 | "settings.account.deleteInfo" : "Якщо Вам більше не потрібний обліковий Ð·Ð°Ð¿Ð¸Ñ Franz, Ви можете його видалити Ñ– вÑÑ– Ñуміжні дані.", | 97 | "settings.account.deleteInfo" : "Якщо Вам більше не потрібний обліковий Ð·Ð°Ð¿Ð¸Ñ Franz, Ви можете його видалити Ñ– вÑÑ– Ñуміжні дані.", |
55 | "settings.account.headline" : "Ðкаунт", | 98 | "settings.account.headline" : "Ðкаунт", |
56 | "settings.account.headlineAccount" : "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ акаунт", | 99 | "settings.account.headlineAccount" : "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ акаунт", |
@@ -65,22 +108,22 @@ | |||
65 | "settings.account.successInfo" : "Ваші зміни були збережені", | 108 | "settings.account.successInfo" : "Ваші зміни були збережені", |
66 | "settings.account.tryReloadUserInfoRequest" : "Спробуйте ще раз", | 109 | "settings.account.tryReloadUserInfoRequest" : "Спробуйте ще раз", |
67 | "settings.account.userInfoRequestFailed" : "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ інформацію кориÑтувача", | 110 | "settings.account.userInfoRequestFailed" : "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ інформацію кориÑтувача", |
68 | "settings.app.buttonClearAllCache" : "Clear cache", | 111 | "settings.app.buttonClearAllCache" : "ОчиÑтити кеш", |
69 | "settings.app.buttonInstallUpdate" : "Перезавантажити Ñ– вÑтановити оновленнÑ", | 112 | "settings.app.buttonInstallUpdate" : "Перезавантажити Ñ– вÑтановити оновленнÑ", |
70 | "settings.app.buttonSearchForUpdate" : "Перевірити наÑвніÑÑ‚ÑŒ оновлень", | 113 | "settings.app.buttonSearchForUpdate" : "Перевірити наÑвніÑÑ‚ÑŒ оновлень", |
71 | "settings.app.cacheInfo" : "Franz cache is currently using {size} of disk space.", | 114 | "settings.app.cacheInfo" : "Кеш, Ñкий викориÑтовує Franz, займає {розмір} диÑку.", |
72 | "settings.app.currentVersion" : "Поточна верÑÑ–Ñ:", | 115 | "settings.app.currentVersion" : "Поточна верÑÑ–Ñ:", |
73 | "settings.app.form.autoLaunchInBackground" : "Відкрити у фоновому режимі", | 116 | "settings.app.form.autoLaunchInBackground" : "Відкрити у фоновому режимі", |
74 | "settings.app.form.autoLaunchOnStart" : "ЗапуÑкати Franz на початку", | 117 | "settings.app.form.autoLaunchOnStart" : "ЗапуÑкати Franz на початку", |
75 | "settings.app.form.beta" : "Включити бета-верÑÑ–Ñ—", | 118 | "settings.app.form.beta" : "Включити бета-верÑÑ–Ñ—", |
76 | "settings.app.form.enableMenuBar" : "Show Franz in Menu Bar", | 119 | "settings.app.form.enableMenuBar" : "Відображати Franz в панелі головного меню", |
77 | "settings.app.form.enableSpellchecking" : "Увімкнути перевірку орфографії", | 120 | "settings.app.form.enableSpellchecking" : "Увімкнути перевірку орфографії", |
78 | "settings.app.form.enableSystemTray" : "Показувати Franz у ÑиÑтемному лотку", | 121 | "settings.app.form.enableSystemTray" : "Показувати Franz у ÑиÑтемному лотку", |
79 | "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock", | 122 | "settings.app.form.hideDockIcon" : "Hide Franz icon in Dock", |
80 | "settings.app.form.language" : "Мова", | 123 | "settings.app.form.language" : "Мова", |
81 | "settings.app.form.minimizeToSystemTray" : "Мінімізувати Franz до ÑиÑтемного лотка", | 124 | "settings.app.form.minimizeToSystemTray" : "Мінімізувати Franz до ÑиÑтемного лотка", |
82 | "settings.app.form.runInBackground" : "Тримати Franz в фоні при закритті вікна", | 125 | "settings.app.form.runInBackground" : "Тримати Franz в фоні при закритті вікна", |
83 | "settings.app.form.showDisabledServices" : "Display disabled services tabs", | 126 | "settings.app.form.showDisabledServices" : "Показати вкладку вимкнених ÑервіÑів", |
84 | "settings.app.form.showMessagesBadgesWhenMuted" : "Показувати значок непрочитаних повідомлень коли ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ñ–", | 127 | "settings.app.form.showMessagesBadgesWhenMuted" : "Показувати значок непрочитаних повідомлень коли ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ñ–", |
85 | "settings.app.headline" : "ÐалаштуваннÑ", | 128 | "settings.app.headline" : "ÐалаштуваннÑ", |
86 | "settings.app.headlineAdvanced" : "Advanced", | 129 | "settings.app.headlineAdvanced" : "Advanced", |
@@ -89,15 +132,15 @@ | |||
89 | "settings.app.headlineLanguage" : "Мова", | 132 | "settings.app.headlineLanguage" : "Мова", |
90 | "settings.app.headlineUpdates" : "ОновленнÑ", | 133 | "settings.app.headlineUpdates" : "ОновленнÑ", |
91 | "settings.app.restartRequired" : "Зміни потребують перезапуÑку", | 134 | "settings.app.restartRequired" : "Зміни потребують перезапуÑку", |
92 | "settings.app.subheadlineCache" : "Cache", | 135 | "settings.app.subheadlineCache" : "Кеш", |
93 | "settings.app.translationHelp" : "Допоможіть переклаÑти Franz на Вашу мову.", | 136 | "settings.app.translationHelp" : "Допоможіть переклаÑти Franz на Вашу мову.", |
94 | "settings.app.updateStatusAvailable" : "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупне, завантаженнÑ...", | 137 | "settings.app.updateStatusAvailable" : "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупне, завантаженнÑ...", |
95 | "settings.app.updateStatusSearching" : "Шукає оновленнÑ", | 138 | "settings.app.updateStatusSearching" : "Шукає оновленнÑ", |
96 | "settings.app.updateStatusUpToDate" : "Ви викориÑтовуєте оÑтанню верÑÑ–ÑŽ Franz", | 139 | "settings.app.updateStatusUpToDate" : "Ви викориÑтовуєте оÑтанню верÑÑ–ÑŽ Franz", |
97 | "settings.invite.headline" : "Invite Friends", | 140 | "settings.invite.headline" : "ЗапроÑити друзів", |
98 | "settings.navigation.account" : "Ðкаунт", | 141 | "settings.navigation.account" : "Ðкаунт", |
99 | "settings.navigation.availableServices" : "ДоÑтупні ÑервіÑи", | 142 | "settings.navigation.availableServices" : "ДоÑтупні ÑервіÑи", |
100 | "settings.navigation.inviteFriends" : "Invite Friends", | 143 | "settings.navigation.inviteFriends" : "ЗапроÑити друзів", |
101 | "settings.navigation.logout" : "Вийти", | 144 | "settings.navigation.logout" : "Вийти", |
102 | "settings.navigation.settings" : "ÐалаштуваннÑ", | 145 | "settings.navigation.settings" : "ÐалаштуваннÑ", |
103 | "settings.navigation.yourServices" : "Ваші ÑервіÑи", | 146 | "settings.navigation.yourServices" : "Ваші ÑервіÑи", |
@@ -126,10 +169,10 @@ | |||
126 | "settings.service.form.enableService" : "Увімкнути ÑервіÑ", | 169 | "settings.service.form.enableService" : "Увімкнути ÑервіÑ", |
127 | "settings.service.form.headlineBadges" : "Unread message badges", | 170 | "settings.service.form.headlineBadges" : "Unread message badges", |
128 | "settings.service.form.headlineGeneral" : "Загальні", | 171 | "settings.service.form.headlineGeneral" : "Загальні", |
129 | "settings.service.form.headlineNotifications" : "Notifications", | 172 | "settings.service.form.headlineNotifications" : "СповіщеннÑ", |
130 | "settings.service.form.icon" : "Custom icon", | 173 | "settings.service.form.icon" : "Ð¡Ð²Ð¾Ñ Ñ–ÐºÐ¾Ð½ÐºÐ°", |
131 | "settings.service.form.iconDelete" : "Delete", | 174 | "settings.service.form.iconDelete" : "Видалити", |
132 | "settings.service.form.iconUpload" : "Drop your image, or click here", | 175 | "settings.service.form.iconUpload" : "Скиньте Ñвоє Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ натиÑніть тут", |
133 | "settings.service.form.indirectMessageInfo" : "Ви отримаєте ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ вÑÑ– нові Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² каналі, а не лише про @username, @channel, @here, ...", | 176 | "settings.service.form.indirectMessageInfo" : "Ви отримаєте ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ вÑÑ– нові Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² каналі, а не лише про @username, @channel, @here, ...", |
134 | "settings.service.form.indirectMessages" : "Показувати значок Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… нових повідомлень", | 177 | "settings.service.form.indirectMessages" : "Показувати значок Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… нових повідомлень", |
135 | "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", | 178 | "settings.service.form.isMutedInfo" : "When disabled, all notification sounds and audio playback are muted", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "Увімкнути ÑповіщеннÑ", | 240 | "tabs.item.enableNotification" : "Увімкнути ÑповіщеннÑ", |
198 | "tabs.item.enableService" : "Увімкнути Ñлужбу", | 241 | "tabs.item.enableService" : "Увімкнути Ñлужбу", |
199 | "tabs.item.reload" : "Перезавантажити", | 242 | "tabs.item.reload" : "Перезавантажити", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "Увійдіть до Ñвого акаунту", | 247 | "welcome.loginButton" : "Увійдіть до Ñвого акаунту", |
201 | "welcome.signupButton" : "Створити безплатний акаунт", | 248 | "welcome.signupButton" : "Створити безплатний акаунт", |
202 | "welcome.slogan" : "Обмін повідомленнÑми, Ñкий працює Ð´Ð»Ñ Ð²Ð°Ñ" | 249 | "welcome.slogan" : "Обмін повідомленнÑми, Ñкий працює Ð´Ð»Ñ Ð²Ð°Ñ" |
diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json index 5feef50f2..71e6d65bc 100644 --- a/src/i18n/locales/zh-TW.json +++ b/src/i18n/locales/zh-TW.json | |||
@@ -26,6 +26,49 @@ | |||
26 | "login.serverLogout" : "您的登入期間已éŽæœŸï¼Œè«‹é‡æ–°ç™»éŒ„", | 26 | "login.serverLogout" : "您的登入期間已éŽæœŸï¼Œè«‹é‡æ–°ç™»éŒ„", |
27 | "login.submit.label" : "登入", | 27 | "login.submit.label" : "登入", |
28 | "login.tokenExpired" : "您的登入已éŽæœŸï¼Œè«‹é‡æ–°ç™»å…¥ã€‚", | 28 | "login.tokenExpired" : "您的登入已éŽæœŸï¼Œè«‹é‡æ–°ç™»å…¥ã€‚", |
29 | "menu.app.about" : "About Franz", | ||
30 | "menu.app.hide" : "Hide", | ||
31 | "menu.app.hideOthers" : "Hide Others", | ||
32 | "menu.app.quit" : "Quit", | ||
33 | "menu.app.settings" : "è¨å®š", | ||
34 | "menu.app.unhide" : "Unhide", | ||
35 | "menu.edit" : "編輯", | ||
36 | "menu.edit.copy" : "Copy", | ||
37 | "menu.edit.cut" : "Cut", | ||
38 | "menu.edit.delete" : "Delete", | ||
39 | "menu.edit.emojiSymbols" : "Emoji & Symbols", | ||
40 | "menu.edit.paste" : "Paste", | ||
41 | "menu.edit.pasteAndMatchStyle" : "Paste And Match Style", | ||
42 | "menu.edit.redo" : "Redo", | ||
43 | "menu.edit.selectAll" : "Select All", | ||
44 | "menu.edit.speech" : "Speech", | ||
45 | "menu.edit.startDictation" : "Start Dictation", | ||
46 | "menu.edit.startSpeaking" : "Start Speaking", | ||
47 | "menu.edit.stopSpeaking" : "Stop Speaking", | ||
48 | "menu.edit.undo" : "Undo", | ||
49 | "menu.file" : "File", | ||
50 | "menu.help" : "Help", | ||
51 | "menu.help.changelog" : "Changelog", | ||
52 | "menu.help.learnMore" : "Learn More", | ||
53 | "menu.help.privacy" : "éš±ç§è²æ˜Ž", | ||
54 | "menu.help.support" : "Support", | ||
55 | "menu.help.tos" : "Terms of Service", | ||
56 | "menu.services" : "Services", | ||
57 | "menu.services.addNewService" : "Add New Service...", | ||
58 | "menu.view" : "View", | ||
59 | "menu.view.enterFullScreen" : "Enter Full Screen", | ||
60 | "menu.view.exitFullScreen" : "Exit Full Screen", | ||
61 | "menu.view.reloadFranz" : "Reload Franz", | ||
62 | "menu.view.reloadService" : "Reload Service", | ||
63 | "menu.view.resetZoom" : "Actual Size", | ||
64 | "menu.view.toggleDevTools" : "Toggle Developer Tools", | ||
65 | "menu.view.toggleFullScreen" : "Toggle Full Screen", | ||
66 | "menu.view.toggleServiceDevTools" : "Toggle Service Developer Tools", | ||
67 | "menu.view.zoomIn" : "Zoom In", | ||
68 | "menu.view.zoomOut" : "Zoom Out", | ||
69 | "menu.window" : "Window", | ||
70 | "menu.window.close" : "Close", | ||
71 | "menu.window.minimize" : "Minimize", | ||
29 | "password.email.label" : "é›»å郵件地å€", | 72 | "password.email.label" : "é›»å郵件地å€", |
30 | "password.headline" : "é‡è¨å¯†ç¢¼", | 73 | "password.headline" : "é‡è¨å¯†ç¢¼", |
31 | "password.link.login" : "登入您的帳號", | 74 | "password.link.login" : "登入您的帳號", |
@@ -197,6 +240,10 @@ | |||
197 | "tabs.item.enableNotification" : "啟用通知", | 240 | "tabs.item.enableNotification" : "啟用通知", |
198 | "tabs.item.enableService" : "啟用æœå‹™", | 241 | "tabs.item.enableService" : "啟用æœå‹™", |
199 | "tabs.item.reload" : "é‡æ–°è¼‰å…¥", | 242 | "tabs.item.reload" : "é‡æ–°è¼‰å…¥", |
243 | "validation.email" : "{field} is not valid", | ||
244 | "validation.minLength" : "{field} should be at least {length} characters long", | ||
245 | "validation.required" : "{field} is required", | ||
246 | "validation.url" : "{field} is not a valid URL", | ||
200 | "welcome.loginButton" : "登入您的帳戶", | 247 | "welcome.loginButton" : "登入您的帳戶", |
201 | "welcome.signupButton" : "建立å…費帳號", | 248 | "welcome.signupButton" : "建立å…費帳號", |
202 | "welcome.slogan" : "ç‚ºä½ é€šä¿¡" | 249 | "welcome.slogan" : "ç‚ºä½ é€šä¿¡" |
diff --git a/src/index.html b/src/index.html index 9e5acd705..5ce7f6a96 100644 --- a/src/index.html +++ b/src/index.html | |||
@@ -11,10 +11,15 @@ | |||
11 | <div class="dev-warning">DEV MODE</div> | 11 | <div class="dev-warning">DEV MODE</div> |
12 | <div id="root"></div> | 12 | <div id="root"></div> |
13 | <script> | 13 | <script> |
14 | document.querySelector('body').classList.add(process.platform); | 14 | document.querySelector('body').classList.add(process.env.OS_PLATFORM ? process.env.OS_PLATFORM : process.platform); |
15 | 15 | ||
16 | const { isDevMode } = require('./environment'); | 16 | const { isDevMode } = require('./environment'); |
17 | if (isDevMode) { | 17 | if (isDevMode) { |
18 | const debugging = require('debug'); | ||
19 | debugging.enable(process.env.DEBUG); | ||
20 | |||
21 | const debug = debugging('Index'); | ||
22 | |||
18 | document.querySelector('body').classList.add('isDevMode'); | 23 | document.querySelector('body').classList.add('isDevMode'); |
19 | 24 | ||
20 | (function() { | 25 | (function() { |
@@ -25,7 +30,7 @@ | |||
25 | document.body.appendChild(s); | 30 | document.body.appendChild(s); |
26 | 31 | ||
27 | s.onload = () => { | 32 | s.onload = () => { |
28 | console.log('livereload loaded'); | 33 | debug('livereload loaded'); |
29 | const originalReloadBehaviour = window._onLiveReloadFileChanged; | 34 | const originalReloadBehaviour = window._onLiveReloadFileChanged; |
30 | 35 | ||
31 | window._onLiveReloadFileChanged = (file) => { | 36 | window._onLiveReloadFileChanged = (file) => { |
@@ -33,10 +38,10 @@ | |||
33 | originalReloadBehaviour(file); | 38 | originalReloadBehaviour(file); |
34 | } else { | 39 | } else { |
35 | if (file.path.includes('/build/webview/')) { | 40 | if (file.path.includes('/build/webview/')) { |
36 | console.log('Livereload: Reloading all webvies'); | 41 | debug('Livereload: Reloading all webvies'); |
37 | const webviews = document.querySelectorAll('webview').forEach(webview => webview.reload()); | 42 | const webviews = document.querySelectorAll('webview').forEach(webview => webview.reload()); |
38 | } else { | 43 | } else { |
39 | console.log('Livereload: skip reload as only main process files have changed'); | 44 | debug('Livereload: skip reload as only main process files have changed'); |
40 | } | 45 | } |
41 | } | 46 | } |
42 | } | 47 | } |
diff --git a/src/index.js b/src/index.js index f82bb3590..897943a85 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -4,7 +4,7 @@ import path from 'path'; | |||
4 | 4 | ||
5 | import windowStateKeeper from 'electron-window-state'; | 5 | import windowStateKeeper from 'electron-window-state'; |
6 | 6 | ||
7 | import { isDevMode, isWindows } from './environment'; | 7 | import { isDevMode, isMac, isWindows, isLinux } from './environment'; |
8 | import ipcApi from './electron/ipc-api'; | 8 | import ipcApi from './electron/ipc-api'; |
9 | import Tray from './lib/Tray'; | 9 | import Tray from './lib/Tray'; |
10 | import Settings from './electron/Settings'; | 10 | import Settings from './electron/Settings'; |
@@ -18,8 +18,8 @@ let mainWindow; | |||
18 | let willQuitApp = false; | 18 | let willQuitApp = false; |
19 | 19 | ||
20 | // Ensure that the recipe directory exists | 20 | // Ensure that the recipe directory exists |
21 | fs.ensureDir(path.join(app.getPath('userData'), 'recipes')); | ||
22 | fs.emptyDirSync(path.join(app.getPath('userData'), 'recipes', 'temp')); | 21 | fs.emptyDirSync(path.join(app.getPath('userData'), 'recipes', 'temp')); |
22 | fs.ensureFileSync(path.join(app.getPath('userData'), 'window-state.json')); | ||
23 | 23 | ||
24 | // Set App ID for Windows | 24 | // Set App ID for Windows |
25 | if (isWindows) { | 25 | if (isWindows) { |
@@ -48,11 +48,11 @@ if (isSecondInstance) { | |||
48 | app.exit(); | 48 | app.exit(); |
49 | } | 49 | } |
50 | 50 | ||
51 | // Lets disable Hardware Acceleration until we have a better solution | 51 | // Fix Unity indicator issue |
52 | // to deal with the high-perf-gpu requirement of some services | 52 | // https://github.com/electron/electron/issues/9046 |
53 | 53 | if (isLinux && ['Pantheon', 'Unity:Unity7'].indexOf(process.env.XDG_CURRENT_DESKTOP) !== -1) { | |
54 | // Disabled to test tweetdeck glitches | 54 | process.env.XDG_CURRENT_DESKTOP = 'Unity'; |
55 | // app.disableHardwareAcceleration(); | 55 | } |
56 | 56 | ||
57 | // Initialize Settings | 57 | // Initialize Settings |
58 | const settings = new Settings(); | 58 | const settings = new Settings(); |
@@ -72,9 +72,9 @@ const createWindow = () => { | |||
72 | height: mainWindowState.height, | 72 | height: mainWindowState.height, |
73 | minWidth: 600, | 73 | minWidth: 600, |
74 | minHeight: 500, | 74 | minHeight: 500, |
75 | titleBarStyle: 'hidden', | 75 | titleBarStyle: isMac ? 'hidden' : '', |
76 | frame: isLinux, | ||
76 | backgroundColor: '#3498db', | 77 | backgroundColor: '#3498db', |
77 | autoHideMenuBar: true, | ||
78 | }); | 78 | }); |
79 | 79 | ||
80 | // Initialize System Tray | 80 | // Initialize System Tray |
diff --git a/src/lib/Menu.js b/src/lib/Menu.js index 16e91374e..5a05e47b3 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js | |||
@@ -1,113 +1,477 @@ | |||
1 | import { remote, shell } from 'electron'; | 1 | import { remote, shell } from 'electron'; |
2 | import { autorun, computed, observable, toJS } from 'mobx'; | 2 | import { observable, autorun, computed } from 'mobx'; |
3 | import { defineMessages } from 'react-intl'; | ||
3 | 4 | ||
4 | import { isMac } from '../environment'; | 5 | import { isMac, ctrlKey, cmdKey } from '../environment'; |
5 | 6 | ||
6 | const { app, Menu, dialog } = remote; | 7 | const { app, Menu, dialog } = remote; |
7 | 8 | ||
8 | const template = [ | 9 | const menuItems = defineMessages({ |
10 | edit: { | ||
11 | id: 'menu.edit', | ||
12 | defaultMessage: '!!!Edit', | ||
13 | }, | ||
14 | undo: { | ||
15 | id: 'menu.edit.undo', | ||
16 | defaultMessage: '!!!Undo', | ||
17 | }, | ||
18 | redo: { | ||
19 | id: 'menu.edit.redo', | ||
20 | defaultMessage: '!!!Redo', | ||
21 | }, | ||
22 | cut: { | ||
23 | id: 'menu.edit.cut', | ||
24 | defaultMessage: '!!!Cut', | ||
25 | }, | ||
26 | copy: { | ||
27 | id: 'menu.edit.copy', | ||
28 | defaultMessage: '!!!Copy', | ||
29 | }, | ||
30 | paste: { | ||
31 | id: 'menu.edit.paste', | ||
32 | defaultMessage: '!!!Paste', | ||
33 | }, | ||
34 | pasteAndMatchStyle: { | ||
35 | id: 'menu.edit.pasteAndMatchStyle', | ||
36 | defaultMessage: '!!!Paste And Match Style', | ||
37 | }, | ||
38 | delete: { | ||
39 | id: 'menu.edit.delete', | ||
40 | defaultMessage: '!!!Delete', | ||
41 | }, | ||
42 | selectAll: { | ||
43 | id: 'menu.edit.selectAll', | ||
44 | defaultMessage: '!!!Select All', | ||
45 | }, | ||
46 | speech: { | ||
47 | id: 'menu.edit.speech', | ||
48 | defaultMessage: '!!!Speech', | ||
49 | }, | ||
50 | startSpeaking: { | ||
51 | id: 'menu.edit.startSpeaking', | ||
52 | defaultMessage: '!!!Start Speaking', | ||
53 | }, | ||
54 | stopSpeaking: { | ||
55 | id: 'menu.edit.stopSpeaking', | ||
56 | defaultMessage: '!!!Stop Speaking', | ||
57 | }, | ||
58 | startDictation: { | ||
59 | id: 'menu.edit.startDictation', | ||
60 | defaultMessage: '!!!Start Dictation', | ||
61 | }, | ||
62 | emojiSymbols: { | ||
63 | id: 'menu.edit.emojiSymbols', | ||
64 | defaultMessage: '!!!Emoji & Symbols', | ||
65 | }, | ||
66 | resetZoom: { | ||
67 | id: 'menu.view.resetZoom', | ||
68 | defaultMessage: '!!!Actual Size', | ||
69 | }, | ||
70 | zoomIn: { | ||
71 | id: 'menu.view.zoomIn', | ||
72 | defaultMessage: '!!!Zoom In', | ||
73 | }, | ||
74 | zoomOut: { | ||
75 | id: 'menu.view.zoomOut', | ||
76 | defaultMessage: '!!!Zoom Out', | ||
77 | }, | ||
78 | enterFullScreen: { | ||
79 | id: 'menu.view.enterFullScreen', | ||
80 | defaultMessage: '!!!Enter Full Screen', | ||
81 | }, | ||
82 | exitFullScreen: { | ||
83 | id: 'menu.view.exitFullScreen', | ||
84 | defaultMessage: '!!!Exit Full Screen', | ||
85 | }, | ||
86 | toggleFullScreen: { | ||
87 | id: 'menu.view.toggleFullScreen', | ||
88 | defaultMessage: '!!!Toggle Full Screen', | ||
89 | }, | ||
90 | toggleDevTools: { | ||
91 | id: 'menu.view.toggleDevTools', | ||
92 | defaultMessage: '!!!Toggle Developer Tools', | ||
93 | }, | ||
94 | toggleServiceDevTools: { | ||
95 | id: 'menu.view.toggleServiceDevTools', | ||
96 | defaultMessage: '!!!Toggle Service Developer Tools', | ||
97 | }, | ||
98 | reloadService: { | ||
99 | id: 'menu.view.reloadService', | ||
100 | defaultMessage: '!!!Reload Service', | ||
101 | }, | ||
102 | reloadFranz: { | ||
103 | id: 'menu.view.reloadFranz', | ||
104 | defaultMessage: '!!!Reload Franz', | ||
105 | }, | ||
106 | minimize: { | ||
107 | id: 'menu.window.minimize', | ||
108 | defaultMessage: '!!!Minimize', | ||
109 | }, | ||
110 | close: { | ||
111 | id: 'menu.window.close', | ||
112 | defaultMessage: '!!!Close', | ||
113 | }, | ||
114 | learnMore: { | ||
115 | id: 'menu.help.learnMore', | ||
116 | defaultMessage: '!!!Learn More', | ||
117 | }, | ||
118 | changelog: { | ||
119 | id: 'menu.help.changelog', | ||
120 | defaultMessage: '!!!Changelog', | ||
121 | }, | ||
122 | support: { | ||
123 | id: 'menu.help.support', | ||
124 | defaultMessage: '!!!Support', | ||
125 | }, | ||
126 | tos: { | ||
127 | id: 'menu.help.tos', | ||
128 | defaultMessage: '!!!Terms of Service', | ||
129 | }, | ||
130 | privacy: { | ||
131 | id: 'menu.help.privacy', | ||
132 | defaultMessage: '!!!Privacy Statement', | ||
133 | }, | ||
134 | file: { | ||
135 | id: 'menu.file', | ||
136 | defaultMessage: '!!!File', | ||
137 | }, | ||
138 | view: { | ||
139 | id: 'menu.view', | ||
140 | defaultMessage: '!!!View', | ||
141 | }, | ||
142 | services: { | ||
143 | id: 'menu.services', | ||
144 | defaultMessage: '!!!Services', | ||
145 | }, | ||
146 | window: { | ||
147 | id: 'menu.window', | ||
148 | defaultMessage: '!!!Window', | ||
149 | }, | ||
150 | help: { | ||
151 | id: 'menu.help', | ||
152 | defaultMessage: '!!!Help', | ||
153 | }, | ||
154 | about: { | ||
155 | id: 'menu.app.about', | ||
156 | defaultMessage: '!!!About Franz', | ||
157 | }, | ||
158 | settings: { | ||
159 | id: 'menu.app.settings', | ||
160 | defaultMessage: '!!!Settings', | ||
161 | }, | ||
162 | hide: { | ||
163 | id: 'menu.app.hide', | ||
164 | defaultMessage: '!!!Hide', | ||
165 | }, | ||
166 | hideOthers: { | ||
167 | id: 'menu.app.hideOthers', | ||
168 | defaultMessage: '!!!Hide Others', | ||
169 | }, | ||
170 | unhide: { | ||
171 | id: 'menu.app.unhide', | ||
172 | defaultMessage: '!!!Unhide', | ||
173 | }, | ||
174 | quit: { | ||
175 | id: 'menu.app.quit', | ||
176 | defaultMessage: '!!!Quit', | ||
177 | }, | ||
178 | addNewService: { | ||
179 | id: 'menu.services.addNewService', | ||
180 | defaultMessage: '!!!Add New Service...', | ||
181 | }, | ||
182 | }); | ||
183 | |||
184 | function getActiveWebview() { | ||
185 | return window.franz.stores.services.active.webview; | ||
186 | } | ||
187 | |||
188 | const _templateFactory = intl => [ | ||
9 | { | 189 | { |
10 | label: 'Edit', | 190 | label: intl.formatMessage(menuItems.edit), |
11 | submenu: [ | 191 | submenu: [ |
12 | { | 192 | { |
193 | label: intl.formatMessage(menuItems.undo), | ||
13 | role: 'undo', | 194 | role: 'undo', |
14 | }, | 195 | }, |
15 | { | 196 | { |
197 | label: intl.formatMessage(menuItems.redo), | ||
16 | role: 'redo', | 198 | role: 'redo', |
17 | }, | 199 | }, |
18 | { | 200 | { |
19 | type: 'separator', | 201 | type: 'separator', |
20 | }, | 202 | }, |
21 | { | 203 | { |
22 | role: 'cut', | 204 | label: intl.formatMessage(menuItems.cut), |
205 | accelerator: 'Cmd+X', | ||
206 | selector: 'cut:', | ||
23 | }, | 207 | }, |
24 | { | 208 | { |
25 | label: 'Copy', | 209 | label: intl.formatMessage(menuItems.copy), |
26 | accelerator: 'CmdOrCtrl+C', | 210 | accelerator: 'Cmd+C', |
27 | selector: 'copy:', | 211 | selector: 'copy:', |
28 | }, | 212 | }, |
29 | { | 213 | { |
30 | label: 'Paste', | 214 | label: intl.formatMessage(menuItems.paste), |
31 | accelerator: 'CmdOrCtrl+V', | 215 | accelerator: 'Cmd+V', |
32 | selector: 'paste:', | 216 | selector: 'paste:', |
33 | }, | 217 | }, |
34 | { | 218 | { |
35 | role: 'pasteandmatchstyle', | 219 | label: intl.formatMessage(menuItems.pasteAndMatchStyle), |
220 | accelerator: 'Cmd+Shift+V', | ||
221 | selector: 'pasteAndMatchStyle:', | ||
36 | }, | 222 | }, |
37 | { | 223 | { |
224 | label: intl.formatMessage(menuItems.delete), | ||
38 | role: 'delete', | 225 | role: 'delete', |
39 | }, | 226 | }, |
40 | { | 227 | { |
41 | role: 'selectall', | 228 | label: intl.formatMessage(menuItems.selectAll), |
229 | accelerator: 'Cmd+A', | ||
230 | selector: 'selectAll:', | ||
42 | }, | 231 | }, |
43 | ], | 232 | ], |
44 | }, | 233 | }, |
45 | { | 234 | { |
46 | label: 'View', | 235 | label: intl.formatMessage(menuItems.view), |
47 | submenu: [ | 236 | submenu: [ |
48 | { | 237 | { |
49 | type: 'separator', | 238 | type: 'separator', |
50 | }, | 239 | }, |
51 | { | 240 | { |
241 | label: intl.formatMessage(menuItems.resetZoom), | ||
52 | role: 'resetzoom', | 242 | role: 'resetzoom', |
53 | }, | 243 | }, |
54 | { | 244 | { |
245 | label: intl.formatMessage(menuItems.zoomIn), | ||
246 | // accelerator: 'Cmd+=', | ||
55 | role: 'zoomin', | 247 | role: 'zoomin', |
56 | accelerator: 'CommandOrControl+=', | ||
57 | }, | 248 | }, |
58 | { | 249 | { |
250 | label: intl.formatMessage(menuItems.zoomOut), | ||
59 | role: 'zoomout', | 251 | role: 'zoomout', |
60 | }, | 252 | }, |
61 | { | 253 | { |
62 | type: 'separator', | 254 | type: 'separator', |
63 | }, | 255 | }, |
64 | { | 256 | { |
257 | label: app.mainWindow.isFullScreen() // label doesn't work, gets overridden by Electron | ||
258 | ? intl.formatMessage(menuItems.exitFullScreen) | ||
259 | : intl.formatMessage(menuItems.enterFullScreen), | ||
65 | role: 'togglefullscreen', | 260 | role: 'togglefullscreen', |
66 | }, | 261 | }, |
67 | ], | 262 | ], |
68 | }, | 263 | }, |
69 | { | 264 | { |
70 | label: 'Services', | 265 | label: intl.formatMessage(menuItems.services), |
71 | submenu: [], | 266 | submenu: [], |
72 | }, | 267 | }, |
73 | { | 268 | { |
269 | label: intl.formatMessage(menuItems.window), | ||
74 | role: 'window', | 270 | role: 'window', |
75 | submenu: [ | 271 | submenu: [ |
76 | { | 272 | { |
273 | label: intl.formatMessage(menuItems.minimize), | ||
77 | role: 'minimize', | 274 | role: 'minimize', |
78 | }, | 275 | }, |
79 | { | 276 | { |
277 | label: intl.formatMessage(menuItems.close), | ||
80 | role: 'close', | 278 | role: 'close', |
81 | }, | 279 | }, |
82 | ], | 280 | ], |
83 | }, | 281 | }, |
84 | { | 282 | { |
283 | label: intl.formatMessage(menuItems.help), | ||
85 | role: 'help', | 284 | role: 'help', |
86 | submenu: [ | 285 | submenu: [ |
87 | { | 286 | { |
88 | label: 'Learn More', | 287 | label: intl.formatMessage(menuItems.learnMore), |
89 | click() { shell.openExternal('http://meetfranz.com'); }, | 288 | click() { shell.openExternal('http://meetfranz.com'); }, |
90 | }, | 289 | }, |
91 | { | 290 | { |
92 | label: 'Changelog', | 291 | label: intl.formatMessage(menuItems.changelog), |
93 | click() { shell.openExternal('https://github.com/meetfranz/franz/blob/master/CHANGELOG.md'); }, | 292 | click() { shell.openExternal('https://github.com/meetfranz/franz/blob/master/CHANGELOG.md'); }, |
94 | }, | 293 | }, |
95 | { | 294 | { |
96 | type: 'separator', | 295 | type: 'separator', |
97 | }, | 296 | }, |
98 | { | 297 | { |
99 | label: 'Support', | 298 | label: intl.formatMessage(menuItems.support), |
100 | click() { shell.openExternal('http://meetfranz.com/support'); }, | 299 | click() { shell.openExternal('http://meetfranz.com/support'); }, |
101 | }, | 300 | }, |
102 | { | 301 | { |
103 | type: 'separator', | 302 | type: 'separator', |
104 | }, | 303 | }, |
105 | { | 304 | { |
106 | label: 'Terms of Service', | 305 | label: intl.formatMessage(menuItems.tos), |
107 | click() { shell.openExternal('https://meetfranz.com/terms'); }, | 306 | click() { shell.openExternal('https://meetfranz.com/terms'); }, |
108 | }, | 307 | }, |
109 | { | 308 | { |
110 | label: 'Privacy Statement', | 309 | label: intl.formatMessage(menuItems.privacy), |
310 | click() { shell.openExternal('https://meetfranz.com/privacy'); }, | ||
311 | }, | ||
312 | ], | ||
313 | }, | ||
314 | ]; | ||
315 | |||
316 | const _titleBarTemplateFactory = intl => [ | ||
317 | { | ||
318 | label: intl.formatMessage(menuItems.edit), | ||
319 | submenu: [ | ||
320 | { | ||
321 | label: intl.formatMessage(menuItems.undo), | ||
322 | accelerator: `${ctrlKey}+Z`, | ||
323 | click() { | ||
324 | getActiveWebview().undo(); | ||
325 | }, | ||
326 | }, | ||
327 | { | ||
328 | label: intl.formatMessage(menuItems.redo), | ||
329 | accelerator: `${ctrlKey}+Y`, | ||
330 | click() { | ||
331 | getActiveWebview().redo(); | ||
332 | }, | ||
333 | }, | ||
334 | { | ||
335 | type: 'separator', | ||
336 | }, | ||
337 | { | ||
338 | label: intl.formatMessage(menuItems.cut), | ||
339 | accelerator: `${ctrlKey}+X`, | ||
340 | click() { | ||
341 | getActiveWebview().cut(); | ||
342 | }, | ||
343 | }, | ||
344 | { | ||
345 | label: intl.formatMessage(menuItems.copy), | ||
346 | accelerator: `${ctrlKey}+C`, | ||
347 | click() { | ||
348 | getActiveWebview().copy(); | ||
349 | }, | ||
350 | }, | ||
351 | { | ||
352 | label: intl.formatMessage(menuItems.paste), | ||
353 | accelerator: `${ctrlKey}+V`, | ||
354 | click() { | ||
355 | getActiveWebview().paste(); | ||
356 | }, | ||
357 | }, | ||
358 | { | ||
359 | label: intl.formatMessage(menuItems.pasteAndMatchStyle), | ||
360 | accelerator: `${ctrlKey}+Shift+V`, | ||
361 | click() { | ||
362 | getActiveWebview().pasteAndMatchStyle(); | ||
363 | }, | ||
364 | }, | ||
365 | { | ||
366 | label: intl.formatMessage(menuItems.delete), | ||
367 | click() { | ||
368 | getActiveWebview().delete(); | ||
369 | }, | ||
370 | }, | ||
371 | { | ||
372 | label: intl.formatMessage(menuItems.selectAll), | ||
373 | accelerator: `${ctrlKey}+A`, | ||
374 | click() { | ||
375 | getActiveWebview().selectAll(); | ||
376 | }, | ||
377 | }, | ||
378 | ], | ||
379 | }, | ||
380 | { | ||
381 | label: intl.formatMessage(menuItems.view), | ||
382 | submenu: [ | ||
383 | { | ||
384 | type: 'separator', | ||
385 | }, | ||
386 | { | ||
387 | label: intl.formatMessage(menuItems.resetZoom), | ||
388 | accelerator: `${ctrlKey}+0`, | ||
389 | click() { | ||
390 | getActiveWebview().setZoomLevel(0); | ||
391 | }, | ||
392 | }, | ||
393 | { | ||
394 | label: intl.formatMessage(menuItems.zoomIn), | ||
395 | accelerator: `${ctrlKey}+Plus`, | ||
396 | click() { | ||
397 | getActiveWebview().getZoomLevel((zoomLevel) => { | ||
398 | getActiveWebview().setZoomLevel(zoomLevel === 5 ? zoomLevel : zoomLevel + 1); | ||
399 | }); | ||
400 | }, | ||
401 | }, | ||
402 | { | ||
403 | label: intl.formatMessage(menuItems.zoomOut), | ||
404 | accelerator: `${ctrlKey}+-`, | ||
405 | click() { | ||
406 | getActiveWebview().getZoomLevel((zoomLevel) => { | ||
407 | getActiveWebview().setZoomLevel(zoomLevel === -5 ? zoomLevel : zoomLevel - 1); | ||
408 | }); | ||
409 | }, | ||
410 | }, | ||
411 | { | ||
412 | type: 'separator', | ||
413 | }, | ||
414 | { | ||
415 | label: app.mainWindow.isFullScreen() // label doesn't work, gets overridden by Electron | ||
416 | ? intl.formatMessage(menuItems.exitFullScreen) | ||
417 | : intl.formatMessage(menuItems.enterFullScreen), | ||
418 | accelerator: `${ctrlKey}+F`, | ||
419 | click(menuItem, browserWindow) { | ||
420 | browserWindow.setFullScreen(!browserWindow.isFullScreen()); | ||
421 | }, | ||
422 | }, | ||
423 | ], | ||
424 | }, | ||
425 | { | ||
426 | label: intl.formatMessage(menuItems.services), | ||
427 | submenu: [], | ||
428 | }, | ||
429 | { | ||
430 | label: intl.formatMessage(menuItems.window), | ||
431 | submenu: [ | ||
432 | { | ||
433 | label: intl.formatMessage(menuItems.minimize), | ||
434 | accelerator: 'Alt+M', | ||
435 | click(menuItem, browserWindow) { | ||
436 | browserWindow.minimize(); | ||
437 | }, | ||
438 | }, | ||
439 | { | ||
440 | label: intl.formatMessage(menuItems.close), | ||
441 | accelerator: 'Alt+W', | ||
442 | click(menuItem, browserWindow) { | ||
443 | browserWindow.close(); | ||
444 | }, | ||
445 | }, | ||
446 | ], | ||
447 | }, | ||
448 | { | ||
449 | label: '?', | ||
450 | submenu: [ | ||
451 | { | ||
452 | label: intl.formatMessage(menuItems.learnMore), | ||
453 | click() { shell.openExternal('http://meetfranz.com'); }, | ||
454 | }, | ||
455 | { | ||
456 | label: intl.formatMessage(menuItems.changelog), | ||
457 | click() { shell.openExternal('https://github.com/meetfranz/franz/blob/master/CHANGELOG.md'); }, | ||
458 | }, | ||
459 | { | ||
460 | type: 'separator', | ||
461 | }, | ||
462 | { | ||
463 | label: intl.formatMessage(menuItems.support), | ||
464 | click() { shell.openExternal('http://meetfranz.com/support'); }, | ||
465 | }, | ||
466 | { | ||
467 | type: 'separator', | ||
468 | }, | ||
469 | { | ||
470 | label: intl.formatMessage(menuItems.tos), | ||
471 | click() { shell.openExternal('https://meetfranz.com/terms'); }, | ||
472 | }, | ||
473 | { | ||
474 | label: intl.formatMessage(menuItems.privacy), | ||
111 | click() { shell.openExternal('https://meetfranz.com/privacy'); }, | 475 | click() { shell.openExternal('https://meetfranz.com/privacy'); }, |
112 | }, | 476 | }, |
113 | ], | 477 | ], |
@@ -115,7 +479,7 @@ const template = [ | |||
115 | ]; | 479 | ]; |
116 | 480 | ||
117 | export default class FranzMenu { | 481 | export default class FranzMenu { |
118 | @observable tpl = template; | 482 | @observable currentTemplate = []; |
119 | 483 | ||
120 | constructor(stores, actions) { | 484 | constructor(stores, actions) { |
121 | this.stores = stores; | 485 | this.stores = stores; |
@@ -124,23 +488,45 @@ export default class FranzMenu { | |||
124 | autorun(this._build.bind(this)); | 488 | autorun(this._build.bind(this)); |
125 | } | 489 | } |
126 | 490 | ||
491 | rebuild() { | ||
492 | this._build(); | ||
493 | } | ||
494 | |||
495 | get template() { | ||
496 | return this.currentTemplate.toJS(); | ||
497 | } | ||
498 | |||
127 | _build() { | 499 | _build() { |
128 | const tpl = toJS(this.tpl); | 500 | // console.log(window.franz); |
501 | const serviceTpl = Object.assign([], this.serviceTpl); // need to clone object so we don't modify computed (cached) object | ||
502 | |||
503 | if (window.franz === undefined) { | ||
504 | return; | ||
505 | } | ||
506 | |||
507 | const intl = window.franz.intl; | ||
508 | const tpl = isMac ? _templateFactory(intl) : _titleBarTemplateFactory(intl); | ||
129 | 509 | ||
130 | tpl[1].submenu.push({ | 510 | tpl[1].submenu.push({ |
131 | role: 'toggledevtools', | 511 | type: 'separator', |
512 | }, { | ||
513 | label: intl.formatMessage(menuItems.toggleDevTools), | ||
514 | accelerator: `${cmdKey}+Alt+I`, | ||
515 | click: (menuItem, browserWindow) => { | ||
516 | browserWindow.webContents.toggleDevTools(); | ||
517 | }, | ||
132 | }, { | 518 | }, { |
133 | label: 'Toggle Service Developer Tools', | 519 | label: intl.formatMessage(menuItems.toggleServiceDevTools), |
134 | accelerator: 'CmdOrCtrl+Shift+Alt+i', | 520 | accelerator: `${cmdKey}+Shift+Alt+I`, |
135 | click: () => { | 521 | click: () => { |
136 | this.actions.service.openDevToolsForActiveService(); | 522 | this.actions.service.openDevToolsForActiveService(); |
137 | }, | 523 | }, |
138 | }); | 524 | }); |
139 | 525 | ||
140 | tpl[1].submenu.unshift({ | 526 | tpl[1].submenu.unshift({ |
141 | label: 'Reload Service', | 527 | label: intl.formatMessage(menuItems.reloadService), |
142 | id: 'reloadService', | 528 | id: 'reloadService', // TODO: needed? |
143 | accelerator: 'CmdOrCtrl+R', | 529 | accelerator: `${cmdKey}+R`, |
144 | click: () => { | 530 | click: () => { |
145 | if (this.stores.user.isLoggedIn | 531 | if (this.stores.user.isLoggedIn |
146 | && this.stores.services.enabled.length > 0) { | 532 | && this.stores.services.enabled.length > 0) { |
@@ -150,93 +536,128 @@ export default class FranzMenu { | |||
150 | } | 536 | } |
151 | }, | 537 | }, |
152 | }, { | 538 | }, { |
153 | label: 'Reload Franz', | 539 | label: intl.formatMessage(menuItems.reloadFranz), |
154 | accelerator: 'CmdOrCtrl+Shift+R', | 540 | accelerator: `${cmdKey}+Shift+R`, |
155 | click: () => { | 541 | click: () => { |
156 | window.location.reload(); | 542 | window.location.reload(); |
157 | }, | 543 | }, |
158 | }); | 544 | }); |
159 | 545 | ||
160 | if (isMac) { | 546 | tpl.unshift({ |
161 | tpl.unshift({ | 547 | label: isMac ? app.getName() : intl.formatMessage(menuItems.file), |
162 | label: app.getName(), | 548 | submenu: [ |
163 | submenu: [ | 549 | { |
164 | { | 550 | label: intl.formatMessage(menuItems.about), |
165 | role: 'about', | 551 | role: 'about', |
166 | }, | 552 | }, |
167 | { | 553 | { |
168 | type: 'separator', | 554 | type: 'separator', |
169 | }, | 555 | }, |
170 | { | 556 | { |
171 | label: 'Settings', | 557 | label: intl.formatMessage(menuItems.settings), |
172 | accelerator: 'CmdOrCtrl+,', | 558 | accelerator: 'CmdOrCtrl+,', |
173 | click: () => { | 559 | click: () => { |
174 | this.actions.ui.openSettings({ path: 'app' }); | 560 | this.actions.ui.openSettings({ path: 'app' }); |
175 | }, | ||
176 | }, | ||
177 | { | ||
178 | type: 'separator', | ||
179 | }, | ||
180 | { | ||
181 | role: 'services', | ||
182 | submenu: [], | ||
183 | }, | ||
184 | { | ||
185 | type: 'separator', | ||
186 | }, | ||
187 | { | ||
188 | role: 'hide', | ||
189 | }, | ||
190 | { | ||
191 | role: 'hideothers', | ||
192 | }, | ||
193 | { | ||
194 | role: 'unhide', | ||
195 | }, | ||
196 | { | ||
197 | type: 'separator', | ||
198 | }, | ||
199 | { | ||
200 | role: 'quit', | ||
201 | }, | 561 | }, |
202 | ], | 562 | }, |
203 | }); | 563 | { |
564 | type: 'separator', | ||
565 | }, | ||
566 | { | ||
567 | label: intl.formatMessage(menuItems.services), | ||
568 | role: 'services', | ||
569 | submenu: [], | ||
570 | }, | ||
571 | { | ||
572 | type: 'separator', | ||
573 | }, | ||
574 | { | ||
575 | label: intl.formatMessage(menuItems.hide), | ||
576 | role: 'hide', | ||
577 | }, | ||
578 | { | ||
579 | label: intl.formatMessage(menuItems.hideOthers), | ||
580 | role: 'hideothers', | ||
581 | }, | ||
582 | { | ||
583 | label: intl.formatMessage(menuItems.unhide), | ||
584 | role: 'unhide', | ||
585 | }, | ||
586 | { | ||
587 | type: 'separator', | ||
588 | }, | ||
589 | { | ||
590 | label: intl.formatMessage(menuItems.quit), | ||
591 | role: 'quit', | ||
592 | }, | ||
593 | ], | ||
594 | }); | ||
595 | |||
596 | const about = { | ||
597 | label: intl.formatMessage(menuItems.about), | ||
598 | click: () => { | ||
599 | dialog.showMessageBox({ | ||
600 | type: 'info', | ||
601 | title: 'Franz', | ||
602 | message: 'Franz', | ||
603 | detail: `Version: ${remote.app.getVersion()}\nRelease: ${process.versions.electron} / ${process.platform} / ${process.arch}`, | ||
604 | }); | ||
605 | }, | ||
606 | }; | ||
607 | |||
608 | if (isMac) { | ||
204 | // Edit menu. | 609 | // Edit menu. |
205 | tpl[1].submenu.push( | 610 | tpl[1].submenu.push( |
206 | { | 611 | { |
207 | type: 'separator', | 612 | type: 'separator', |
208 | }, | 613 | }, |
209 | { | 614 | { |
210 | label: 'Speech', | 615 | label: intl.formatMessage(menuItems.speech), |
211 | submenu: [ | 616 | submenu: [ |
212 | { | 617 | { |
618 | label: intl.formatMessage(menuItems.startSpeaking), | ||
213 | role: 'startspeaking', | 619 | role: 'startspeaking', |
214 | }, | 620 | }, |
215 | { | 621 | { |
622 | label: intl.formatMessage(menuItems.stopSpeaking), | ||
216 | role: 'stopspeaking', | 623 | role: 'stopspeaking', |
217 | }, | 624 | }, |
218 | ], | 625 | ], |
219 | }, | 626 | }, |
220 | ); | 627 | ); |
628 | |||
629 | tpl[4].submenu.unshift(about, { | ||
630 | type: 'separator', | ||
631 | }); | ||
221 | } else { | 632 | } else { |
222 | tpl[4].submenu.unshift({ | 633 | tpl[0].submenu = [ |
223 | role: 'about', | 634 | { |
224 | click: () => { | 635 | label: intl.formatMessage(menuItems.settings), |
225 | dialog.showMessageBox({ | 636 | accelerator: 'Ctrl+P', |
226 | type: 'info', | 637 | click: () => { |
227 | title: 'Franz', | 638 | this.actions.ui.openSettings({ path: 'app' }); |
228 | message: 'Franz', | 639 | }, |
229 | detail: `Version: ${remote.app.getVersion()}\nRelease: ${process.versions.electron} / ${process.platform} / ${process.arch}`, | ||
230 | }); | ||
231 | }, | 640 | }, |
232 | }); | 641 | { |
233 | } | 642 | type: 'separator', |
643 | }, | ||
644 | { | ||
645 | label: intl.formatMessage(menuItems.quit), | ||
646 | accelerator: 'Alt+F4', | ||
647 | click: () => { | ||
648 | app.quit(); | ||
649 | }, | ||
650 | }, | ||
651 | ]; | ||
234 | 652 | ||
235 | const serviceTpl = this.serviceTpl; | 653 | tpl[5].submenu.push({ |
654 | type: 'separator', | ||
655 | }, about); | ||
656 | } | ||
236 | 657 | ||
237 | serviceTpl.unshift({ | 658 | serviceTpl.unshift({ |
238 | label: 'Add new Service', | 659 | label: intl.formatMessage(menuItems.addNewService), |
239 | accelerator: 'CmdOrCtrl+N', | 660 | accelerator: `${cmdKey}+N`, |
240 | click: () => { | 661 | click: () => { |
241 | this.actions.ui.openSettings({ path: 'recipes' }); | 662 | this.actions.ui.openSettings({ path: 'recipes' }); |
242 | }, | 663 | }, |
@@ -245,9 +666,10 @@ export default class FranzMenu { | |||
245 | }); | 666 | }); |
246 | 667 | ||
247 | if (serviceTpl.length > 0) { | 668 | if (serviceTpl.length > 0) { |
248 | tpl[isMac ? 3 : 2].submenu = toJS(this.serviceTpl); | 669 | tpl[3].submenu = serviceTpl; |
249 | } | 670 | } |
250 | 671 | ||
672 | this.currentTemplate = tpl; | ||
251 | const menu = Menu.buildFromTemplate(tpl); | 673 | const menu = Menu.buildFromTemplate(tpl); |
252 | Menu.setApplicationMenu(menu); | 674 | Menu.setApplicationMenu(menu); |
253 | } | 675 | } |
@@ -258,7 +680,7 @@ export default class FranzMenu { | |||
258 | if (this.stores.user.isLoggedIn) { | 680 | if (this.stores.user.isLoggedIn) { |
259 | return services.map((service, i) => ({ | 681 | return services.map((service, i) => ({ |
260 | label: this._getServiceName(service), | 682 | label: this._getServiceName(service), |
261 | accelerator: i <= 9 ? `CmdOrCtrl+${i + 1}` : null, | 683 | accelerator: i <= 9 ? `${cmdKey}+${i + 1}` : null, |
262 | type: 'radio', | 684 | type: 'radio', |
263 | checked: service.isActive, | 685 | checked: service.isActive, |
264 | click: () => { | 686 | click: () => { |
diff --git a/src/lib/analytics.js b/src/lib/analytics.js index b13bf8faa..585cbcdba 100644 --- a/src/lib/analytics.js +++ b/src/lib/analytics.js | |||
@@ -2,6 +2,8 @@ import { remote } from 'electron'; | |||
2 | import { GA_ID } from '../config'; | 2 | import { GA_ID } from '../config'; |
3 | // import { isDevMode } from '../environment'; | 3 | // import { isDevMode } from '../environment'; |
4 | 4 | ||
5 | const debug = require('debug')('Analytics'); | ||
6 | |||
5 | const { app } = remote; | 7 | const { app } = remote; |
6 | 8 | ||
7 | /* eslint-disable */ | 9 | /* eslint-disable */ |
@@ -28,13 +30,13 @@ ga('send', 'App'); | |||
28 | export function gaPage(page) { | 30 | export function gaPage(page) { |
29 | ga('send', 'pageview', page); | 31 | ga('send', 'pageview', page); |
30 | 32 | ||
31 | console.debug('GA track page', page); | 33 | debug('GA track page', page); |
32 | } | 34 | } |
33 | 35 | ||
34 | export function gaEvent(category, action, label) { | 36 | export function gaEvent(category, action, label) { |
35 | ga('send', 'event', category, action, label); | 37 | ga('send', 'event', category, action, label); |
36 | 38 | ||
37 | console.debug('GA track page', category, action); | 39 | debug('GA track page', category, action); |
38 | } | 40 | } |
39 | 41 | ||
40 | setTimeout(() => { | 42 | setTimeout(() => { |
diff --git a/src/models/Recipe.js b/src/models/Recipe.js index 1fc23ac89..032a9aa19 100644 --- a/src/models/Recipe.js +++ b/src/models/Recipe.js | |||
@@ -32,8 +32,12 @@ export default class Recipe { | |||
32 | throw Error(`Recipe '${data.name}' requires Id`); | 32 | throw Error(`Recipe '${data.name}' requires Id`); |
33 | } | 33 | } |
34 | 34 | ||
35 | if (!semver.valid(data.version)) { | 35 | try { |
36 | throw Error(`Version ${data.version} of recipe '${data.name}' is not a valid semver version`); | 36 | if (!semver.valid(data.version)) { |
37 | throw Error(`Version ${data.version} of recipe '${data.name}' is not a valid semver version`); | ||
38 | } | ||
39 | } catch (e) { | ||
40 | console.warn(e.message); | ||
37 | } | 41 | } |
38 | 42 | ||
39 | this.id = data.id || this.id; | 43 | this.id = data.id || this.id; |
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 162422017..4ac8325d4 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -98,6 +98,10 @@ export default class AppStore extends Store { | |||
98 | ipcRenderer.on('autoUpdate', (event, data) => { | 98 | ipcRenderer.on('autoUpdate', (event, data) => { |
99 | if (data.available) { | 99 | if (data.available) { |
100 | this.updateStatus = this.updateStatusTypes.AVAILABLE; | 100 | this.updateStatus = this.updateStatusTypes.AVAILABLE; |
101 | |||
102 | if (isMac) { | ||
103 | app.dock.bounce(); | ||
104 | } | ||
101 | } | 105 | } |
102 | 106 | ||
103 | if (data.available !== undefined && !data.available) { | 107 | if (data.available !== undefined && !data.available) { |
@@ -124,19 +128,6 @@ export default class AppStore extends Store { | |||
124 | this.stores.router.push(data.url); | 128 | this.stores.router.push(data.url); |
125 | }); | 129 | }); |
126 | 130 | ||
127 | // Reload all services after a healthy nap | ||
128 | // Alternative solution for powerMonitor as the resume event is not fired | ||
129 | // More information: https://github.com/electron/electron/issues/1615 | ||
130 | const TIMEOUT = 5000; | ||
131 | let lastTime = (new Date()).getTime(); | ||
132 | setInterval(() => { | ||
133 | const currentTime = (new Date()).getTime(); | ||
134 | if (currentTime > (lastTime + TIMEOUT + 2000)) { | ||
135 | this._reactivateServices(); | ||
136 | } | ||
137 | lastTime = currentTime; | ||
138 | }, TIMEOUT); | ||
139 | |||
140 | // Set active the next service | 131 | // Set active the next service |
141 | key( | 132 | key( |
142 | '⌘+pagedown, ctrl+pagedown, ⌘+alt+right, ctrl+tab', () => { | 133 | '⌘+pagedown, ctrl+pagedown, ⌘+alt+right, ctrl+tab', () => { |
@@ -244,7 +235,7 @@ export default class AppStore extends Store { | |||
244 | } | 235 | } |
245 | 236 | ||
246 | @action _muteApp({ isMuted, overrideSystemMute = true }) { | 237 | @action _muteApp({ isMuted, overrideSystemMute = true }) { |
247 | this.isSystemMuteOverriden = overrideSystemMute; | 238 | this.isSystemMuteOverridden = overrideSystemMute; |
248 | 239 | ||
249 | this.actions.settings.update({ | 240 | this.actions.settings.update({ |
250 | settings: { | 241 | settings: { |
@@ -356,19 +347,9 @@ export default class AppStore extends Store { | |||
356 | return autoLauncher.isEnabled() || false; | 347 | return autoLauncher.isEnabled() || false; |
357 | } | 348 | } |
358 | 349 | ||
359 | _reactivateServices(retryCount = 0) { | ||
360 | if (!this.isOnline) { | ||
361 | console.debug('reactivateServices: computer is offline, trying again in 5s, retries:', retryCount); | ||
362 | setTimeout(() => this._reactivateServices(retryCount + 1), 5000); | ||
363 | } else { | ||
364 | console.debug('reactivateServices: reload Franz'); | ||
365 | window.location.reload(); | ||
366 | } | ||
367 | } | ||
368 | |||
369 | _systemDND() { | 350 | _systemDND() { |
370 | const dnd = getDoNotDisturb(); | 351 | const dnd = getDoNotDisturb(); |
371 | if (dnd === this.stores.settings.all.isAppMuted || !this.isSystemMuteOverriden) { | 352 | if (dnd !== this.stores.settings.all.isAppMuted && !this.isSystemMuteOverridden) { |
372 | this.actions.app.muteApp({ | 353 | this.actions.app.muteApp({ |
373 | isMuted: dnd, | 354 | isMuted: dnd, |
374 | overrideSystemMute: false, | 355 | overrideSystemMute: false, |
diff --git a/src/stores/RecipesStore.js b/src/stores/RecipesStore.js index 67fee1d50..a24308f6a 100644 --- a/src/stores/RecipesStore.js +++ b/src/stores/RecipesStore.js | |||
@@ -5,6 +5,8 @@ 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')('RecipeStore'); | ||
9 | |||
8 | export default class RecipesStore extends Store { | 10 | export default class RecipesStore extends Store { |
9 | @observable allRecipesRequest = new CachedRequest(this.api.recipes, 'all'); | 11 | @observable allRecipesRequest = new CachedRequest(this.api.recipes, 'all'); |
10 | @observable installRecipeRequest = new Request(this.api.recipes, 'install'); | 12 | @observable installRecipeRequest = new Request(this.api.recipes, 'install'); |
@@ -34,7 +36,7 @@ export default class RecipesStore extends Store { | |||
34 | return activeRecipe; | 36 | return activeRecipe; |
35 | } | 37 | } |
36 | 38 | ||
37 | console.warn('Recipe not installed'); | 39 | debug(`Recipe ${match.id} not installed`); |
38 | } | 40 | } |
39 | 41 | ||
40 | return null; | 42 | return null; |
@@ -54,10 +56,8 @@ export default class RecipesStore extends Store { | |||
54 | 56 | ||
55 | // Actions | 57 | // Actions |
56 | @action async _install({ recipeId }) { | 58 | @action async _install({ recipeId }) { |
57 | // console.log(this.installRecipeRequest._promise); | ||
58 | const recipe = await this.installRecipeRequest.execute(recipeId)._promise; | 59 | const recipe = await this.installRecipeRequest.execute(recipeId)._promise; |
59 | await this.allRecipesRequest.invalidate({ immediately: true })._promise; | 60 | await this.allRecipesRequest.invalidate({ immediately: true })._promise; |
60 | // console.log(this.installRecipeRequest._promise); | ||
61 | 61 | ||
62 | return recipe; | 62 | return recipe; |
63 | } | 63 | } |
@@ -67,7 +67,7 @@ export default class RecipesStore extends Store { | |||
67 | const recipes = {}; | 67 | const recipes = {}; |
68 | 68 | ||
69 | // Hackfix, reference this.all to fetch services | 69 | // Hackfix, reference this.all to fetch services |
70 | console.debug(`Check Recipe updates for ${this.all.map(recipe => recipe.id)}`); | 70 | debug(`Check Recipe updates for ${this.all.map(recipe => recipe.id)}`); |
71 | 71 | ||
72 | recipeIds.forEach((r) => { | 72 | recipeIds.forEach((r) => { |
73 | const recipe = this.one(r); | 73 | const recipe = this.one(r); |
diff --git a/src/stores/RequestStore.js b/src/stores/RequestStore.js index 4140ca362..595852583 100644 --- a/src/stores/RequestStore.js +++ b/src/stores/RequestStore.js | |||
@@ -2,6 +2,8 @@ import { action, computed, observable } from 'mobx'; | |||
2 | 2 | ||
3 | import Store from './lib/Store'; | 3 | import Store from './lib/Store'; |
4 | 4 | ||
5 | const debug = require('debug')('RequestsStore'); | ||
6 | |||
5 | export default class RequestStore extends Store { | 7 | export default class RequestStore extends Store { |
6 | @observable userInfoRequest; | 8 | @observable userInfoRequest; |
7 | @observable servicesRequest; | 9 | @observable servicesRequest; |
@@ -52,7 +54,7 @@ export default class RequestStore extends Store { | |||
52 | } | 54 | } |
53 | 55 | ||
54 | this._autoRetry(); | 56 | this._autoRetry(); |
55 | console.debug(`Retry required requests delayed in ${(delay) / 1000}s`); | 57 | debug(`Retry required requests delayed in ${(delay) / 1000}s`); |
56 | }, delay); | 58 | }, delay); |
57 | } | 59 | } |
58 | } | 60 | } |
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index c38d0d9ee..f7d92b1ff 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js | |||
@@ -10,6 +10,8 @@ import CachedRequest from './lib/CachedRequest'; | |||
10 | import { matchRoute } from '../helpers/routing-helpers'; | 10 | import { matchRoute } from '../helpers/routing-helpers'; |
11 | import { gaEvent } from '../lib/analytics'; | 11 | import { gaEvent } from '../lib/analytics'; |
12 | 12 | ||
13 | const debug = require('debug')('ServiceStore'); | ||
14 | |||
13 | export default class ServicesStore extends Store { | 15 | export default class ServicesStore extends Store { |
14 | @observable allServicesRequest = new CachedRequest(this.api.services, 'all'); | 16 | @observable allServicesRequest = new CachedRequest(this.api.services, 'all'); |
15 | @observable createServiceRequest = new Request(this.api.services, 'create'); | 17 | @observable createServiceRequest = new Request(this.api.services, 'create'); |
@@ -87,6 +89,12 @@ export default class ServicesStore extends Store { | |||
87 | return this.stores.settings.all.showDisabledServices ? this.all : this.enabled; | 89 | return this.stores.settings.all.showDisabledServices ? this.all : this.enabled; |
88 | } | 90 | } |
89 | 91 | ||
92 | // This is just used to avoid unnecessary rerendering of resource-heavy webviews | ||
93 | @computed get allDisplayedUnordered() { | ||
94 | const services = this.allServicesRequest.execute().result || []; | ||
95 | return this.stores.settings.all.showDisabledServices ? services : services.filter(service => service.isEnabled); | ||
96 | } | ||
97 | |||
90 | @computed get filtered() { | 98 | @computed get filtered() { |
91 | return this.all.filter(service => service.name.toLowerCase().includes(this.filterNeedle.toLowerCase())); | 99 | return this.all.filter(service => service.name.toLowerCase().includes(this.filterNeedle.toLowerCase())); |
92 | } | 100 | } |
@@ -103,7 +111,7 @@ export default class ServicesStore extends Store { | |||
103 | return activeService; | 111 | return activeService; |
104 | } | 112 | } |
105 | 113 | ||
106 | console.warn('Service not available'); | 114 | debug('Service not available'); |
107 | } | 115 | } |
108 | 116 | ||
109 | return null; | 117 | return null; |
@@ -117,10 +125,10 @@ export default class ServicesStore extends Store { | |||
117 | const recipesStore = this.stores.recipes; | 125 | const recipesStore = this.stores.recipes; |
118 | 126 | ||
119 | if (recipesStore.isInstalled(recipeId)) { | 127 | if (recipesStore.isInstalled(recipeId)) { |
120 | console.debug('Recipe is installed'); | 128 | debug(`Recipe ${recipeId} is installed`); |
121 | this._redirectToAddServiceRoute(recipeId); | 129 | this._redirectToAddServiceRoute(recipeId); |
122 | } else { | 130 | } else { |
123 | console.warn('Recipe is not installed'); | 131 | debug(`Recipe ${recipeId} is not installed`); |
124 | // We access the RecipeStore action directly | 132 | // We access the RecipeStore action directly |
125 | // returns Promise instead of action | 133 | // returns Promise instead of action |
126 | await this.stores.recipes._install({ recipeId }); | 134 | await this.stores.recipes._install({ recipeId }); |
@@ -487,7 +495,7 @@ export default class ServicesStore extends Store { | |||
487 | if (service) { | 495 | if (service) { |
488 | service.webview.openDevTools(); | 496 | service.webview.openDevTools(); |
489 | } else { | 497 | } else { |
490 | console.warn('No service is active'); | 498 | debug('No service is active'); |
491 | } | 499 | } |
492 | } | 500 | } |
493 | 501 | ||
diff --git a/src/styles/layout.scss b/src/styles/layout.scss index afdd7dec7..964a9fcea 100644 --- a/src/styles/layout.scss +++ b/src/styles/layout.scss | |||
@@ -6,7 +6,11 @@ html { | |||
6 | 6 | ||
7 | .app { | 7 | .app { |
8 | display: flex; | 8 | display: flex; |
9 | flex-direction: row; | 9 | flex-direction: column; |
10 | |||
11 | .app__content { | ||
12 | display: flex; | ||
13 | } | ||
10 | 14 | ||
11 | .app__service { | 15 | .app__service { |
12 | display: flex; | 16 | display: flex; |
@@ -15,6 +19,10 @@ html { | |||
15 | } | 19 | } |
16 | } | 20 | } |
17 | 21 | ||
22 | .electron-app-title-bar { | ||
23 | z-index: 99999999; | ||
24 | } | ||
25 | |||
18 | .window-draggable { | 26 | .window-draggable { |
19 | position: absolute; | 27 | position: absolute; |
20 | width: 100%; | 28 | width: 100%; |
diff --git a/src/styles/main.scss b/src/styles/main.scss index 446bdca14..784a04d3d 100644 --- a/src/styles/main.scss +++ b/src/styles/main.scss | |||
@@ -4,6 +4,7 @@ $mdi-font-path: '../node_modules/mdi/fonts'; | |||
4 | } | 4 | } |
5 | 5 | ||
6 | @import './node_modules/mdi/scss/materialdesignicons.scss'; | 6 | @import './node_modules/mdi/scss/materialdesignicons.scss'; |
7 | @import './node_modules/electron-react-titlebar/assets/style'; | ||
7 | 8 | ||
8 | // modules | 9 | // modules |
9 | @import './reset.scss'; | 10 | @import './reset.scss'; |
@@ -28,6 +29,7 @@ $mdi-font-path: '../node_modules/mdi/fonts'; | |||
28 | @import './subscription-popup.scss'; | 29 | @import './subscription-popup.scss'; |
29 | @import './content-tabs.scss'; | 30 | @import './content-tabs.scss'; |
30 | @import './invite.scss'; | 31 | @import './invite.scss'; |
32 | @import './title-bar.scss'; | ||
31 | 33 | ||
32 | // form | 34 | // form |
33 | @import './input.scss'; | 35 | @import './input.scss'; |
diff --git a/src/styles/title-bar.scss b/src/styles/title-bar.scss new file mode 100644 index 000000000..492245e2f --- /dev/null +++ b/src/styles/title-bar.scss | |||
@@ -0,0 +1,50 @@ | |||
1 | #electron-app-title-bar { | ||
2 | background: $theme-gray-lightest; | ||
3 | border-bottom: 0; | ||
4 | box-shadow: 0px 0 8px rgba(#000, 0.1); | ||
5 | |||
6 | span { | ||
7 | line-height: normal; | ||
8 | } | ||
9 | |||
10 | div { | ||
11 | height: auto; | ||
12 | } | ||
13 | |||
14 | .toolbar-dropdown { | ||
15 | &.open { | ||
16 | box-shadow: 0px 0 8px rgba(#000, 0.1); | ||
17 | } | ||
18 | |||
19 | &:not(.open) { | ||
20 | .menu-item .menu-label { | ||
21 | opacity: 1; | ||
22 | } | ||
23 | |||
24 | &>.toolbar-button > button:hover { | ||
25 | background: $theme-brand-primary; | ||
26 | } | ||
27 | } | ||
28 | } | ||
29 | |||
30 | .list-item { | ||
31 | .menu-item { | ||
32 | margin: 4px; | ||
33 | border-radius: $theme-border-radius-small; | ||
34 | } | ||
35 | &.selected { | ||
36 | // background: $theme-brand-primary; | ||
37 | background: none; | ||
38 | |||
39 | .menu-item { | ||
40 | background: $theme-brand-primary; | ||
41 | } | ||
42 | } | ||
43 | } | ||
44 | |||
45 | .menu-pane { | ||
46 | box-shadow: 0px 0 10px rgba(#000, 0.5); | ||
47 | border-bottom-left-radius: $theme-border-radius-small; | ||
48 | border-bottom-right-radius: $theme-border-radius-small; | ||
49 | } | ||
50 | } | ||
diff --git a/src/webview/plugin.js b/src/webview/plugin.js index d9e021e6d..52b19b3fd 100644 --- a/src/webview/plugin.js +++ b/src/webview/plugin.js | |||
@@ -30,7 +30,6 @@ new ContextMenuListener((info) => { // eslint-disable-line | |||
30 | }); | 30 | }); |
31 | 31 | ||
32 | ipcRenderer.on('settings-update', (e, data) => { | 32 | ipcRenderer.on('settings-update', (e, data) => { |
33 | console.log('settings-update', data); | ||
34 | spellchecker.toggleSpellchecker(data.enableSpellchecking); | 33 | spellchecker.toggleSpellchecker(data.enableSpellchecking); |
35 | }); | 34 | }); |
36 | 35 | ||