From 5fc81e2479bc33a581b5321399dbbc8c0d278b7d Mon Sep 17 00:00:00 2001 From: FranzBot Date: Sat, 5 Oct 2019 00:00:21 +0000 Subject: Automatic i18n update (i18n.meetfranz.com) --- src/i18n/locales/nl.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index d302c7429..607e81c89 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json @@ -91,7 +91,7 @@ "menu.services" : "Services", "menu.services.activatePreviousService" : "Activeer vorige service", "menu.services.addNewService" : "Nieuwe service toevoegen...", - "menu.services.goHome" : "Home", + "menu.services.goHome" : "Thuis", "menu.services.setNextServiceActive" : "Activeer volgende service", "menu.todos" : "Taken", "menu.todos.enableTodos" : "Todo's inschakelen", @@ -123,9 +123,9 @@ "password.submit.label" : "Verzenden", "password.successInfo" : "Controleer je e-mail", "premiumFeature.button.upgradeAccount" : "Upgrade Account", - "pricing.features.adFree" : "Forever ad-free", + "pricing.features.adFree" : "Voor altijd reclamevrij", "pricing.features.appDelays" : "Geen wachtschermen", - "pricing.features.customWebsites" : "Add Custom Websites", + "pricing.features.customWebsites" : "Voeg eigen websites toe", "pricing.features.onPremise" : "On-premise & other Hosted Services", "pricing.features.serviceProxies" : "Service Proxies", "pricing.features.spellchecker" : "Spellchecker support", @@ -373,7 +373,7 @@ "validation.url" : "{field} is geen geldige URL", "webControls.back" : "Back", "webControls.forward" : "Forward", - "webControls.goHome" : "Home", + "webControls.goHome" : "Thuis", "webControls.openInBrowser" : "Open in Browser", "webControls.reload" : "Herladen", "welcome.loginButton" : "Log in op je account", -- cgit v1.2.3-70-g09d2 From 5323a190a45644d87bedf89726d74ee92dceeac0 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Mon, 7 Oct 2019 20:17:48 +0200 Subject: Also show Franz loading spinner when workspaces are loading --- src/containers/layout/AppLayoutContainer.js | 5 ++++- src/features/workspaces/store.js | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js index a14a98554..5563c48bc 100644 --- a/src/containers/layout/AppLayoutContainer.js +++ b/src/containers/layout/AppLayoutContainer.js @@ -24,6 +24,7 @@ import { state as delayAppState } from '../../features/delayApp'; import { workspaceActions } from '../../features/workspaces/actions'; import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawer'; import { workspaceStore } from '../../features/workspaces'; +import WorkspacesStore from '../../features/workspaces/store'; export default @inject('stores', 'actions') @observer class AppLayoutContainer extends Component { static defaultProps = { @@ -41,6 +42,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e globalError, requests, user, + workspaces, } = this.props.stores; const { @@ -79,7 +81,7 @@ export default @inject('stores', 'actions') @observer class AppLayoutContainer e const isLoadingServices = services.allServicesRequest.isExecuting && services.allServicesRequest.isExecutingFirstTime; - if (isLoadingFeatures || isLoadingServices) { + if (isLoadingFeatures || isLoadingServices || workspaces.isLoadingWorkspaces) { return ( @@ -174,6 +176,7 @@ AppLayoutContainer.wrappedComponent.propTypes = { user: PropTypes.instanceOf(UserStore).isRequired, requests: PropTypes.instanceOf(RequestStore).isRequired, globalError: PropTypes.instanceOf(GlobalErrorStore).isRequired, + workspaces: PropTypes.instanceOf(WorkspacesStore).isRequired, }).isRequired, actions: PropTypes.shape({ service: PropTypes.shape({ diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js index f08323e6c..b83fe335a 100644 --- a/src/features/workspaces/store.js +++ b/src/features/workspaces/store.js @@ -45,6 +45,11 @@ export default class WorkspacesStore extends FeatureStore { return getUserWorkspacesRequest.result || []; } + @computed get isLoadingWorkspaces() { + if (!this.isFeatureActive) return false; + return getUserWorkspacesRequest.isExecutingFirstTime; + } + @computed get settings() { return localStorage.getItem('workspaces') || {}; } -- cgit v1.2.3-70-g09d2 From dd880340379c1be57acd95101180b29f146503a1 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Mon, 7 Oct 2019 20:18:19 +0200 Subject: Fix app delay by waiting on workspaces to load --- src/features/delayApp/index.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js index c0029873a..28b079e6b 100644 --- a/src/features/delayApp/index.js +++ b/src/features/delayApp/index.js @@ -4,6 +4,7 @@ import DelayAppComponent from './Component'; import { DEFAULT_FEATURES_CONFIG } from '../../config'; import { gaEvent, gaPage } from '../../lib/analytics'; +import { getUserWorkspacesRequest } from '../workspaces/api'; const debug = require('debug')('Franz:feature:delayApp'); @@ -33,7 +34,13 @@ export default function init(stores) { }; reaction( - () => stores.user.isLoggedIn && stores.services.allServicesRequest.wasExecuted && stores.features.features.needToWaitToProceed && !stores.user.data.isPremium, + () => ( + stores.user.isLoggedIn + && stores.services.allServicesRequest.wasExecuted + && getUserWorkspacesRequest.wasExecuted + && stores.features.features.needToWaitToProceed + && !stores.user.data.isPremium + ), (isEnabled) => { if (isEnabled) { debug('Enabling `delayApp` feature'); -- cgit v1.2.3-70-g09d2 From dea59f20debdfde7279551f5cd2fbf3c390171e0 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Mon, 7 Oct 2019 20:18:38 +0200 Subject: Fix non-related issues --- src/components/ui/PremiumFeatureContainer/index.js | 4 ++-- src/containers/settings/EditSettingsScreen.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/ui/PremiumFeatureContainer/index.js b/src/components/ui/PremiumFeatureContainer/index.js index 8d2746e22..f1e526560 100644 --- a/src/components/ui/PremiumFeatureContainer/index.js +++ b/src/components/ui/PremiumFeatureContainer/index.js @@ -10,7 +10,7 @@ import UserStore from '../../../stores/UserStore'; import styles from './styles'; import { gaEvent } from '../../../lib/analytics'; -import { FeatureStore } from '../../../features/utils/FeatureStore'; +import FeaturesStore from '../../../stores/FeaturesStore'; const messages = defineMessages({ action: { @@ -96,7 +96,7 @@ PremiumFeatureContainer.wrappedComponent.propTypes = { children: oneOrManyChildElements.isRequired, stores: PropTypes.shape({ user: PropTypes.instanceOf(UserStore).isRequired, - features: PropTypes.instanceOf(FeatureStore).isRequired, + features: PropTypes.instanceOf(FeaturesStore).isRequired, }).isRequired, actions: PropTypes.shape({ ui: PropTypes.shape({ diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index 9aba212be..698b5a3d9 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js @@ -313,7 +313,7 @@ EditSettingsScreen.wrappedComponent.propTypes = { toggleTodosFeatureVisibility: PropTypes.func.isRequired, }).isRequired, workspaces: PropTypes.shape({ - toggleAllWorkspacesLoadedSetting: PropTypes.func.isRequired, + toggleKeepAllWorkspacesLoadedSetting: PropTypes.func.isRequired, }).isRequired, }).isRequired, }; -- cgit v1.2.3-70-g09d2 From ea366b28cccb457064df1747db9f8d4f425c2998 Mon Sep 17 00:00:00 2001 From: FranzBot Date: Tue, 8 Oct 2019 12:00:20 +0000 Subject: Automatic i18n update (i18n.meetfranz.com) --- src/i18n/locales/id.json | 154 +++++++++++++++++++++++------------------------ 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index 0c66f59bc..841644703 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json @@ -4,12 +4,12 @@ "feature.announcements.changelog.headline" : "Perubahan dalam Franz {version}", "feature.delayApp.headline" : "Beli Lisensi Pendukung Franz agar tidak perlu menunggu", "feature.delayApp.text" : "Franz akan melanjutkan dalam {seconds} detik.", - "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", - "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", + "feature.delayApp.trial.action" : "Ya, saya ingin menguji gratis 14 hari Franz Professional", + "feature.delayApp.trial.actionShort" : "Aktifkan uji coba gratis Franz Professional", + "feature.delayApp.trial.headline" : "Dapatkan uji coba gratis 14 hari Franz Professional dan tak perlu lagi menunggu!", "feature.delayApp.upgrade.action" : "Dapatkan Lisensi Pendukung Franz", "feature.delayApp.upgrade.actionShort" : "Tingkatkan akun", - "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", + "feature.serviceLimit.limitReached" : "Anda telah menambahkan {amount} dari kuota {limit} layanan yang tersedia untuk paket Anda. Tingkatkan akun untuk menambahkan layanan lain.", "feature.shareFranz.action.email" : "Kirim sebagai email", "feature.shareFranz.action.facebook" : "Bagikan di Facebook", "feature.shareFranz.action.twitter" : "Bagikan di Twitter", @@ -17,17 +17,17 @@ "feature.shareFranz.shareText.email" : "Saya telah menambahkan layanan {count} ke Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan co di www.meetfranz.com", "feature.shareFranz.shareText.twitter" : "Saya telah menambahkan {count} layanan di Franz! Dapatkan aplikasi gratis untuk WhatsApp, Messenger, Slack, Skype dan lainnya di www.meetfranz.com \/cc @FranzMessenger", "feature.shareFranz.text" : "Beri tahu teman dan kolega Anda betapa hebatnya Franz dan bantu kami menyebarkan berita.", - "feature.todos.premium.info" : "Franz Todos are available to premium users now!", - "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", - "feature.todos.premium.upgrade" : "Upgrade Account", - "global.api.unhealthy" : "Tidak dapat tersambung ke layanan Franz", - "global.franzProRequired" : "Franz Professional Required", + "feature.todos.premium.info" : "Kini Franz Todos tersedia untuk pengguna premium!", + "feature.todos.premium.rollout" : "Yang lain harus menunggu lebih lama.", + "feature.todos.premium.upgrade" : "Tingkatkan Akun", + "global.api.unhealthy" : "Tidak dapat tersambung ke layanan online Franz", + "global.franzProRequired" : "Diperlukan Franz Professional", "global.notConnectedToTheInternet" : "Anda tidak tersambung ke internet.", "global.spellchecker.useDefault" : "Gunakan Bawaan Sistem ({default})", "global.spellchecking.autodetect" : "Deteksi bahasa secara otomatis", "global.spellchecking.autodetect.short" : "Otomatis", "global.spellchecking.language" : "Periksa ejaan", - "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", + "global.upgradeButton.upgradeToPro" : "Tingkatkan ke Franz Professional", "import.headline" : "Impor layanan Franz 4 Anda", "import.notSupportedHeadline" : "Layanan belum didukung di Franz 5", "import.skip.label" : "Saya ingin menambahkan layanan secara manual", @@ -37,12 +37,12 @@ "infobar.buttonReloadServices" : "Muat ulang layanan", "infobar.requiredRequestsFailed" : "Gagal memuat layanan dan informasi pengguna", "infobar.servicesUpdated" : "Layanan Anda telah diperbarui", - "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", + "infobar.trialActivated" : "Uji coba Anda berhasil diaktifkan! Selamat berpesan ria!", "infobar.updateAvailable" : "Versi baru Franz tersedia.", "invite.email.label" : "Alamat email", "invite.headline.friends" : "Undang 3 teman atau kolega Anda", "invite.name.label" : "Nama", - "invite.skip.label" : "Saya ingin melakukan ini nanti", + "invite.skip.label" : "Nanti saja", "invite.submit.label" : "Kirim undangan", "invite.successInfo" : "Undangan berhasil dikirim", "login.email.label" : "Alamat email", @@ -54,8 +54,8 @@ "login.serverLogout" : "Sesi Anda telah berakhir, silakan masuk kembali.", "login.submit.label" : "Masuk", "login.tokenExpired" : "Sesi Anda telah kedaluwarsa, silakan masuk kembali.", - "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", - "menu.Todoss.openTodosDrawer" : "Open Todos drawer", + "menu.Todoss.closeTodosDrawer" : "Tutup laci Todos", + "menu.Todoss.openTodosDrawer" : "Buka laci Todos", "menu.app.about" : "Tentang Franz", "menu.app.announcement" : "Yang baru", "menu.app.checkForUpdates" : "Periksa versi baru", @@ -81,9 +81,9 @@ "menu.file" : "Berkas", "menu.help" : "Bantuan", "menu.help.changelog" : "Log Perubahan", - "menu.help.debugInfo" : "Copy Debug Information", - "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", - "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", + "menu.help.debugInfo" : "Salin Informasi Debug", + "menu.help.debugInfoCopiedBody" : "Informasi Debug Anda telah disalin ke papan klip.", + "menu.help.debugInfoCopiedHeadline" : "Informasi Debug Franz", "menu.help.learnMore" : "Pelajari Lebih Lanjut", "menu.help.privacy" : "Pernyataan Privasi", "menu.help.support" : "Dukungan", @@ -91,10 +91,10 @@ "menu.services" : "Layanan", "menu.services.activatePreviousService" : "Aktifkan layanan sebelumnya", "menu.services.addNewService" : "Tambahkan Layanan Baru...", - "menu.services.goHome" : "Home", + "menu.services.goHome" : "Beranda", "menu.services.setNextServiceActive" : "Aktifkan layanan berikutnya", "menu.todos" : "Todos", - "menu.todos.enableTodos" : "Enable Todos", + "menu.todos.enableTodos" : "Aktifkan Todos", "menu.view" : "Tampilan", "menu.view.enterFullScreen" : "Masuk ke Mode Layar Penuh", "menu.view.exitFullScreen" : "Keluar dari Layar Penuh", @@ -104,13 +104,13 @@ "menu.view.toggleDevTools" : "Aktif\/Nonaktifkan alat pengembang", "menu.view.toggleFullScreen" : "Aktif\/Nonaktifkan Layar Penuh", "menu.view.toggleServiceDevTools" : "Aktif\/Nonaktifkan layanan alat pengembang", - "menu.view.toggleTodosDevTools" : "Toggle Todos Developer Tools", + "menu.view.toggleTodosDevTools" : "Aktif\/Nonaktifkan Alat Pengembang Todos", "menu.view.zoomIn" : "Perbesar", "menu.view.zoomOut" : "Perkecil", "menu.window" : "Jendela", "menu.window.close" : "Tutup", "menu.window.minimize" : "Minimalkan", - "menu.workspaces" : "Ruang kerja", + "menu.workspaces" : "Ruang Kerja", "menu.workspaces.addNewWorkspace" : "Tambah Ruang Kerja Baru...", "menu.workspaces.closeWorkspaceDrawer" : "Tutup laci ruang kerja", "menu.workspaces.defaultWorkspace" : "Semua layanan", @@ -123,33 +123,33 @@ "password.submit.label" : "Kirim", "password.successInfo" : "Periksa email Anda", "premiumFeature.button.upgradeAccount" : "Tingkatkan akun", - "pricing.features.adFree" : "Forever ad-free", - "pricing.features.appDelays" : "No Waiting Screens", - "pricing.features.customWebsites" : "Add Custom Websites", - "pricing.features.onPremise" : "On-premise & other Hosted Services", - "pricing.features.serviceProxies" : "Service Proxies", - "pricing.features.spellchecker" : "Spellchecker support", - "pricing.features.teamManagement" : "Team Management", - "pricing.features.thirdPartyServices" : "Install 3rd party services", - "pricing.features.unlimitedServices" : "Add unlimited services", - "pricing.features.workspaces" : "Ruang kerja", + "pricing.features.adFree" : "Bebas iklan selamanya", + "pricing.features.appDelays" : "Tanpa Layar Penjeda Waktu", + "pricing.features.customWebsites" : "Tambahkan Situs Web Khusus", + "pricing.features.onPremise" : "Layanan On-premise dan Hosted lainnya", + "pricing.features.serviceProxies" : "Proksi Layanan", + "pricing.features.spellchecker" : "Dukungan pengecek ejaan", + "pricing.features.teamManagement" : "Manajemen Tim", + "pricing.features.thirdPartyServices" : "Instal layanan pihak ketiga", + "pricing.features.unlimitedServices" : "Tambahkan layanan tak terbatas", + "pricing.features.workspaces" : "Ruang Kerja", "pricing.plan.free" : "Franz Free", "pricing.plan.legacy" : "Franz Premium", "pricing.plan.personal" : "Franz Personal", - "pricing.plan.personal-monthly" : "Franz Personal Monthly", - "pricing.plan.personal-yearly" : "Franz Personal Yearly", + "pricing.plan.personal-monthly" : "Franz Personal Bulanan", + "pricing.plan.personal-yearly" : "Franz Personal Tahunan", "pricing.plan.pro" : "Franz Professional", - "pricing.plan.pro-monthly" : "Franz Professional Monthly", - "pricing.plan.pro-yearly" : "Franz Professional Yearly", - "pricing.trial.cta.accept" : "Yes, upgrade my account to Franz Professional", - "pricing.trial.cta.skip" : "Continue to Franz", - "pricing.trial.error" : "Sorry, we could not activate your trial!", - "pricing.trial.features.headline" : "Franz Professional includes:", + "pricing.plan.pro-monthly" : "Franz Professional Bulanan", + "pricing.plan.pro-yearly" : "Franz Professional Tahunan", + "pricing.trial.cta.accept" : "Ya, tingkatkan akun saya ke Franz Professional", + "pricing.trial.cta.skip" : "Lanjutkan ke Franz", + "pricing.trial.error" : "Maaf, kami tidak bisa mengaktifkan uji coba Anda!", + "pricing.trial.features.headline" : "Franz Professional menyertakan:", "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Your personal welcome offer:", - "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", - "pricing.trial.terms.headline" : "No strings attached", - "pricing.trial.terms.noCreditCard" : "No credit card required", + "pricing.trial.subheadline" : "Penawaran spesial untuk Anda:", + "pricing.trial.terms.automaticTrialEnd" : "Uji coba gratis Anda berakhir secara otomatis dalam 14 hari", + "pricing.trial.terms.headline" : "Tanpa embel-embel", + "pricing.trial.terms.noCreditCard" : "Tidak memerlukan kartu kredit", "service.crashHandler.action" : "Muat Ulang {name}", "service.crashHandler.autoReload" : "Mencoba memulihkan {name} secara otomatis dalam {seconds} detik", "service.crashHandler.headline" : "Ya Ampun!", @@ -161,11 +161,11 @@ "service.errorHandler.headline" : "Oh tidak!", "service.errorHandler.message" : "Kesalahan", "service.errorHandler.text" : "{name} gagal dimuat", - "service.restrictedHandler.action" : "Upgrade Account", - "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", - "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", - "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", - "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", + "service.restrictedHandler.action" : "Tingkatkan Akun", + "service.restrictedHandler.customUrl.headline" : "Diperlukan Paket Franz Professional", + "service.restrictedHandler.customUrl.text" : "Tingkatkan ke paket Franz Professional untuk menggunakan URL khusus dan layanan hosted mandiri.", + "service.restrictedHandler.serviceLimit.headline" : "Anda telah mencapai batas kota layanan.", + "service.restrictedHandler.serviceLimit.text" : "Tingkatkan akun Anda untuk menggunakan lebih dari {count} layanan.", "service.webviewLoader.loading" : "Memuat", "services.getStarted" : "Memulai", "services.welcome" : "Selamat datang di Franz", @@ -183,19 +183,19 @@ "settings.account.headlinePassword" : "Ubah sandi", "settings.account.headlineProfile" : "Perbarui profil", "settings.account.headlineSubscription" : "Langganan Anda", - "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", - "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", + "settings.account.headlineTrialUpgrade" : "Dapatkan Uji Coba Gratis 14 Hari Franz Professional", + "settings.account.headlineUpgradeAccount" : "Tingkatkan akun Anda dan dapatkan pengalaman Franz lengkap", "settings.account.invoiceDownload" : "Unduh", "settings.account.manageSubscription.label" : "Kelola langganan Anda", "settings.account.successInfo" : "Perubahan Anda telah disimpan", - "settings.account.trial" : "Free Trial", - "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", - "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", + "settings.account.trial" : "Uji Coba Gratis", + "settings.account.trialEndsIn" : "Uji coba gratis Anda berakhir dalam {duration}.", + "settings.account.trialUpdateBillingInfo" : "Perbarui informasi penagihan Anda untuk melanjutkan menggunakan {license} setelah uji coba Anda berakhir.", "settings.account.tryReloadServices" : "Coba lagi", "settings.account.tryReloadUserInfoRequest" : "Coba lagi", - "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", + "settings.account.upgradeToPro.label" : "Tingkatkan ke Franz Professional", "settings.account.userInfoRequestFailed" : "Gagal memuat informasi pengguna", - "settings.account.yourLicense" : "Your Franz License", + "settings.account.yourLicense" : "Lisensi Franz Anda", "settings.app.buttonClearAllCache" : "Bersihkan singgahan", "settings.app.buttonInstallUpdate" : "Mulai ulang dan instal versi baru", "settings.app.buttonSearchForUpdate" : "Periksa pembaruan", @@ -208,8 +208,8 @@ "settings.app.form.enableGPUAcceleration" : "Aktifkan Akselerasi GPU", "settings.app.form.enableSpellchecking" : "Aktifkan pemeriksaan ejaan", "settings.app.form.enableSystemTray" : "Tampilkan Franz di baki sistem", - "settings.app.form.enableTodos" : "Enable Franz Todos", - "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", + "settings.app.form.enableTodos" : "Aktifkan Franz Todos", + "settings.app.form.keepAllWorkspacesLoaded" : "Muat semua ruang kerja Anda", "settings.app.form.language" : "Bahasa", "settings.app.form.minimizeToSystemTray" : "Perkecil Franz ke baki sistem", "settings.app.form.runInBackground" : "Tetap jalankan Franz di latar belakang saat menutup jendela", @@ -238,13 +238,13 @@ "settings.navigation.yourServices" : "Layanan Anda", "settings.navigation.yourWorkspaces" : "Ruang kerja Anda", "settings.recipes.all" : "Semua layanan", - "settings.recipes.custom" : "Custom Services", - "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", - "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", - "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", - "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", - "settings.recipes.customService.openDevDocs" : "Developer Documentation", - "settings.recipes.customService.openFolder" : "Open folder", + "settings.recipes.custom" : "Layanan Khusus", + "settings.recipes.customService.headline.communityRecipes" : "Resep Komunitas Pihak Ketiga", + "settings.recipes.customService.headline.customRecipes" : "Resep Khusus Pihak Ketiga", + "settings.recipes.customService.headline.devRecipes" : "Resep Layanan Pengembangan Anda", + "settings.recipes.customService.intro" : "Untuk menambahkan layanan khusus, salin resep layanan ke:", + "settings.recipes.customService.openDevDocs" : "Dokumentasi Pengembang", + "settings.recipes.customService.openFolder" : "Buka folder", "settings.recipes.headline" : "Layanan tersedia", "settings.recipes.missingService" : "Layanan tidak tersedia?", "settings.recipes.mostPopular" : "Terpopuler", @@ -257,7 +257,7 @@ "settings.service.form.addServiceHeadline" : "Tambahkan {name}", "settings.service.form.availableServices" : "Layanan tersedia", "settings.service.form.customUrl" : "Server khusus", - "settings.service.form.customUrlPremiumInfo" : "Untuk menambahkan layanan hosted yang dijalankan mandiri, Anda membutuhkan Franz Premium Supporter Account.", + "settings.service.form.customUrlPremiumInfo" : "Untuk menambahkan layanan hosted mandiri, Anda membutuhkan Franz Premium Supporter Account.", "settings.service.form.customUrlUpgradeAccount" : "Tingkatkan akun Anda", "settings.service.form.customUrlValidationError" : "Gagal memvalidasi server {nama} khusus.", "settings.service.form.deleteButton" : "Hapus layanan", @@ -331,10 +331,10 @@ "settings.workspaces.workspaceFeatureInfo" : "Ruang Kerja Franz dapat digunakan untuk tetap fokus pada hal penting saat ini. Siapkan sekelompok layanan yang berbeda dan dengan mudah beralih ke yang lain. Anda yang memutuskan layanan mana yang Anda perlukan dan kapan, agar kami bisa membantu Anda tetap berada di garis depan - atau dengan mudah mengakhiri hari kerja kapan saja Anda inginkan.", "settings.workspaces.workspacesRequestFailed" : "Tidak dapat memuat ruang kerja Anda", "sidebar.addNewService" : "Tambahkan layanan baru", - "sidebar.closeTodosDrawer" : "Close Franz Todos", + "sidebar.closeTodosDrawer" : "Tutup Franz Todos", "sidebar.closeWorkspaceDrawer" : "Tutup laci ruang kerja", "sidebar.muteApp" : "Nonaktifkan pemberitahuan & audio", - "sidebar.openTodosDrawer" : "Open Franz Todos", + "sidebar.openTodosDrawer" : "Buka Franz Todos", "sidebar.openWorkspaceDrawer" : "Buka laci ruang kerja", "sidebar.settings" : "Pengaturan", "sidebar.unmuteApp" : "Aktifkan pemberitahuan", @@ -349,12 +349,12 @@ "signup.link.login" : "Sudah punya akun, masuk?", "signup.password.label" : "Sandi", "signup.submit.label" : "Buat akun", - "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", - "subscription.cta.allOptions" : "See all options", - "subscription.cta.choosePlan" : "Choose your plan", - "subscription.includedProFeatures" : "The Franz Professional Plan includes:", - "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", - "subscription.teaser.intro" : "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", + "subscription.cta.activateTrial" : "Ya, mulai uji coba gratis Franz Professional", + "subscription.cta.allOptions" : "Lihat semua opsi", + "subscription.cta.choosePlan" : "Pilih paket Anda", + "subscription.includedProFeatures" : "Paket Franz Professional menyertakan:", + "subscription.teaser.includedFeatures" : "Paket Franz Berbayar mencakup:", + "subscription.teaser.intro" : "Franz 5 menyertakan berbagai macan fitur baru untuk mempercanggih komunikasi sehari-hari. Lihat paket baru kami dan temukan yang cocok untuk Anda!", "subscriptionPopup.buttonCancel" : "Batalkan", "subscriptionPopup.buttonDone" : "Selesai", "tabs.item.deleteService" : "Hapus layanan", @@ -371,10 +371,10 @@ "validation.oneRequired" : "Setidaknya diperlukan satu", "validation.required" : "{field} wajib diisi", "validation.url" : "{field} bukan URL yang benar", - "webControls.back" : "Back", - "webControls.forward" : "Forward", - "webControls.goHome" : "Home", - "webControls.openInBrowser" : "Open in Browser", + "webControls.back" : "Mundur", + "webControls.forward" : "Maju", + "webControls.goHome" : "Beranda", + "webControls.openInBrowser" : "Buka di Browser", "webControls.reload" : "Muat Ulang", "welcome.loginButton" : "Masuk ke akun Anda", "welcome.signupButton" : "Buat akun gratis", -- cgit v1.2.3-70-g09d2 From 7f11dff0588c975bf8dec6c98799ba7f92a5a9cc Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 8 Oct 2019 19:35:27 +0200 Subject: fix(Services): Restore services after 10 minutes system suspension --- src/stores/AppStore.js | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 0398b7533..87a661b2a 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -27,7 +27,9 @@ import { sleep } from '../helpers/async-helpers'; const debug = require('debug')('Franz:AppStore'); -const { app, systemPreferences, screen } = remote; +const { + app, systemPreferences, screen, powerMonitor, +} = remote; const mainWindow = remote.getCurrentWindow(); @@ -55,6 +57,8 @@ export default class AppStore extends Store { @observable isOnline = navigator.onLine; + @observable timeSuspensionStart; + @observable timeOfflineStart; @observable updateStatus = null; @@ -180,6 +184,27 @@ export default class AppStore extends Store { gaPage(pathname); }); + powerMonitor.on('suspend', () => { + debug('System suspended starting timer'); + + this.timeSuspensionStart = moment(); + }); + + powerMonitor.on('resume', () => { + debug('System resumed, last suspended on', this.timeSuspensionStart.toString()); + + if (this.timeSuspensionStart.add(10, 'm').isBefore(moment())) { + debug('Reloading services, user info and features'); + + this.actions.service.reloadAll(); + + this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); + this.stores.features.featuresRequest.invalidate({ immediately: true }); + + statsEvent('resumed-app'); + } + }); + statsEvent('app-start'); } -- cgit v1.2.3-70-g09d2 From 9e539a8be8368ed5f44cfd8e92e66afc06140cb5 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 8 Oct 2019 19:35:29 +0200 Subject: remove external url event --- src/stores/AppStore.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 87a661b2a..4a00cb294 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -304,8 +304,6 @@ export default class AppStore extends Store { if (isValidExternalURL(url)) { shell.openExternal(url); } - - gaEvent('External URL', 'open', parsedUrl.host); } @action _checkForUpdates() { -- cgit v1.2.3-70-g09d2 From e037b740972e6930d3e6693207db6af094e5813d Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 8 Oct 2019 23:44:15 +0200 Subject: Add macOS catalina notifications hack --- src/stores/AppStore.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 4a00cb294..f102fc370 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -38,6 +38,8 @@ const autoLauncher = new AutoLaunch({ name: 'Franz', }); +const CATALINA_NOTIFICATION_HACK_KEY = '_temp_askedForCatalinaNotificationPermissions'; + export default class AppStore extends Store { updateStatusTypes = { CHECKING: 'CHECKING', @@ -205,6 +207,18 @@ export default class AppStore extends Store { } }); + // macOS catalina notifications hack + // notifications got stuck after upgrade but forcing a notification + // via `new Notification` triggered the permission request + if (isMac && !localStorage.getItem(CATALINA_NOTIFICATION_HACK_KEY)) { + // eslint-disable-next-line no-new + new window.Notification('Welcome to Franz 5', { + body: 'Have a wonderful day & happy messaging.', + }); + + localStorage.setItem(CATALINA_NOTIFICATION_HACK_KEY, true); + } + statsEvent('app-start'); } -- cgit v1.2.3-70-g09d2 From 60d83383881254eda09c155286a0f13f89d9ca98 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 8 Oct 2019 23:59:46 +0200 Subject: Bump version to 5.4.0-beta.3 --- CHANGELOG.md | 13 +++++++++++++ package.json | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f4a960e6..af7f6a804 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +# [5.4.0-beta.3](https://github.com/meetfranz/franz/compare/v5.4.0-beta.2...v5.4.0-beta.3) (2019-10-08) + + +### Features + +* **Workspaces:** Only load workspace related services ([ad7fb84](https://github.com/meetfranz/franz/commit/ad7fb84)) + +### Bug Fixes + +* **Services:** Restore services after system sleep ([7f11dff](https://github.com/meetfranz/franz/commit/7f11dff)) + + + # [5.4.0-beta.2](https://github.com/meetfranz/franz/compare/v5.4.0-beta.1...v5.4.0-beta.2) (2019-10-04) diff --git a/package.json b/package.json index 3e32b65db..0ac473898 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "franz", "productName": "Franz", "appId": "com.meetfranz.franz", - "version": "5.4.0-beta.2", + "version": "5.4.0-beta.3", "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", "copyright": "adlk x franz - Stefan Malzner", "main": "index.js", -- cgit v1.2.3-70-g09d2 From 6a1676cb9f4765185d388656f5350ca664a42bef Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 9 Oct 2019 10:12:20 +0200 Subject: only use window.open when url exists --- src/webview/recipe.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/webview/recipe.js b/src/webview/recipe.js index e3e13b726..027d22c0a 100644 --- a/src/webview/recipe.js +++ b/src/webview/recipe.js @@ -207,7 +207,9 @@ window.open = (url, frameName, features) => { return ipcRenderer.sendToHost('new-window', url); } - return originalWindowOpen(url, frameName, features); + if (url) { + return originalWindowOpen(url, frameName, features); + } }; if (isDevMode) { -- cgit v1.2.3-70-g09d2 From 69f0a063fd64ee10984f1c7ed0b6fa0cd26bbf5c Mon Sep 17 00:00:00 2001 From: FranzBot Date: Wed, 9 Oct 2019 12:00:21 +0000 Subject: Automatic i18n update (i18n.meetfranz.com) --- src/i18n/locales/fr.json | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 5ba652004..7bfa523f1 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -9,7 +9,7 @@ "feature.delayApp.trial.headline" : "Obtenir l'essai gratuit de 14 jours pour Franz Professionnel et éviter la file d'attente", "feature.delayApp.upgrade.action" : "Acheter une license Franz", "feature.delayApp.upgrade.actionShort" : "Augmenter le niveau de mon compte", - "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", + "feature.serviceLimit.limitReached" : "Vous avez ajouté {amount} services sur les {limit} qui sont inclus dans votre offre. Veuillez améliorer votre compte pour ajouter plus de services.", "feature.shareFranz.action.email" : "Envoyer par mail", "feature.shareFranz.action.facebook" : "Partager sur Facebook", "feature.shareFranz.action.twitter" : "Partager sur Twitter", @@ -17,9 +17,9 @@ "feature.shareFranz.shareText.email" : "J'ai ajouté {count} services sur Franz ! Télécharger l'appli gratuite pour WhatsApp, Messenger, Skype et autres sur www.meetfranz.com", "feature.shareFranz.shareText.twitter" : "J'ai ajouté {count} services à Franz! Télécharge l'application gratuite pour WhatsApp, Messenger, Slack, Skype et autres sur www.meetfranz.com \/cc @FranzMessenger", "feature.shareFranz.text" : "Dites à vos amis et collègues a quel point Franz est super et aidez nous à faire passer le mot.", - "feature.todos.premium.info" : "Franz Todos are available to premium users now!", - "feature.todos.premium.rollout" : "Everyone else will have to wait a little longer.", - "feature.todos.premium.upgrade" : "Upgrade Account", + "feature.todos.premium.info" : "Franz Todos est maintenant disponible pour les utilisateurs premium !", + "feature.todos.premium.rollout" : "Tous les autres doivent encore attendre un peu.", + "feature.todos.premium.upgrade" : "Améliorer son Compte", "global.api.unhealthy" : "Impossible de se connecter aux services en ligne de Franz", "global.franzProRequired" : "Un abonnement Franz Professionnel est requis", "global.notConnectedToTheInternet" : "Vous n'êtes pas connecté à Internet.", @@ -27,7 +27,7 @@ "global.spellchecking.autodetect" : "Detecter automatiquement la langue", "global.spellchecking.autodetect.short" : "Automatiquement", "global.spellchecking.language" : "Langue de la vérification orthographique", - "global.upgradeButton.upgradeToPro" : "Upgrade to Franz Professional", + "global.upgradeButton.upgradeToPro" : "Passer à Franz Professional", "import.headline" : "Importez vos services depuis la version 4 de Franz.", "import.notSupportedHeadline" : "Ces services ne sont pas encore supportés par la version 5 de Franz", "import.skip.label" : "Je veux ajouter des services manuellement", @@ -37,7 +37,7 @@ "infobar.buttonReloadServices" : "Recharger les services", "infobar.requiredRequestsFailed" : "Impossible d'accéder aux services et informations de l'utilisateur", "infobar.servicesUpdated" : "Vos services ont été mis à jour.", - "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", + "infobar.trialActivated" : "Votre essai a été activé avec succès. Bon tchat !", "infobar.updateAvailable" : "Une nouvelle mise à jour de Franz est disponible.", "invite.email.label" : "Adresse Email", "invite.headline.friends" : "Invitez 3 amis ou collègues", @@ -54,8 +54,8 @@ "login.serverLogout" : "Votre session a expiré. Reconnectez-vous s'il vous plaît.", "login.submit.label" : "Se connecter", "login.tokenExpired" : "Votre session a expiré, veuillez vous reconnecter.", - "menu.Todoss.closeTodosDrawer" : "Close Todos drawer", - "menu.Todoss.openTodosDrawer" : "Open Todos drawer", + "menu.Todoss.closeTodosDrawer" : "Fermer Todos", + "menu.Todoss.openTodosDrawer" : "Ouvrir Todos", "menu.app.about" : "À propos de Franz", "menu.app.announcement" : "Quoi de neuf ? ", "menu.app.checkForUpdates" : "Vérifier les mises à jour", @@ -82,8 +82,8 @@ "menu.help" : "Aide", "menu.help.changelog" : "Liste des modifications", "menu.help.debugInfo" : "Copier les information de débogage", - "menu.help.debugInfoCopiedBody" : "Your Debug Information has been copied to your clipboard.", - "menu.help.debugInfoCopiedHeadline" : "Franz Debug Information", + "menu.help.debugInfoCopiedBody" : "Vos informations de débogage ont été copiées dans le presse-papier.", + "menu.help.debugInfoCopiedHeadline" : "Information de débogage", "menu.help.learnMore" : "En savoir plus", "menu.help.privacy" : "Déclaration de confidentialité", "menu.help.support" : "Assistance", @@ -91,10 +91,10 @@ "menu.services" : "Services", "menu.services.activatePreviousService" : "Activer le service précédent", "menu.services.addNewService" : "Ajouter un nouveau service...", - "menu.services.goHome" : "Home", + "menu.services.goHome" : "Accueil", "menu.services.setNextServiceActive" : "Activer le service suivant", - "menu.todos" : "Todos", - "menu.todos.enableTodos" : "Enable Todos", + "menu.todos" : "Tâches", + "menu.todos.enableTodos" : "Activers les Tâches", "menu.view" : "Aperçu", "menu.view.enterFullScreen" : "Entrer en mode plein écran", "menu.view.exitFullScreen" : "Sortir du mode plein écran", @@ -161,7 +161,7 @@ "service.errorHandler.headline" : "Oh non !", "service.errorHandler.message" : "Erreur", "service.errorHandler.text" : "Le chargement de {name} a échoué.", - "service.restrictedHandler.action" : "Upgrade Account", + "service.restrictedHandler.action" : "Améliorer son Compte", "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", "service.restrictedHandler.serviceLimit.headline" : "Vous avez atteint votre limite de services.", @@ -193,7 +193,7 @@ "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", "settings.account.tryReloadServices" : "Réessayer", "settings.account.tryReloadUserInfoRequest" : "Réessayer", - "settings.account.upgradeToPro.label" : "Upgrade to Franz Professional", + "settings.account.upgradeToPro.label" : "Passer à Franz Professional", "settings.account.userInfoRequestFailed" : "Impossible de charger les informations de l'utilisateur", "settings.account.yourLicense" : "Your Franz License", "settings.app.buttonClearAllCache" : "Vider le cache", @@ -373,7 +373,7 @@ "validation.url" : "{field} n'est pas une URL valide", "webControls.back" : "Back", "webControls.forward" : "Forward", - "webControls.goHome" : "Home", + "webControls.goHome" : "Accueil", "webControls.openInBrowser" : "Open in Browser", "webControls.reload" : "Reload", "welcome.loginButton" : "Se connecter sur son compte", -- cgit v1.2.3-70-g09d2 From 106174c56df9dee1647a9e14d0ffdee7336737b0 Mon Sep 17 00:00:00 2001 From: FranzBot Date: Fri, 11 Oct 2019 00:00:21 +0000 Subject: Automatic i18n update (i18n.meetfranz.com) --- src/i18n/locales/pt-BR.json | 64 ++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index dfdaaa1ee..df5404ccf 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json @@ -6,7 +6,7 @@ "feature.delayApp.text" : "Franz continuará em {seconds} segundos.", "feature.delayApp.trial.action" : "Sim, eu quero o período de testes gratuito de 14 dias do Franz Professional", "feature.delayApp.trial.actionShort" : "Ativar período de testes gratuito do Franz Professional", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", + "feature.delayApp.trial.headline" : "Teste o Franz Professional por 14 dias grátis e fure a fila.", "feature.delayApp.upgrade.action" : "Adquira uma licença de suporte Franz", "feature.delayApp.upgrade.actionShort" : "Atualizar conta", "feature.serviceLimit.limitReached" : "Você adicionou {amount} serviços de um total de {limit} que estão inclusos no seu plano. Por favor, atualize sua conta para adicionar mais serviços.", @@ -19,9 +19,9 @@ "feature.shareFranz.text" : "Conte aos seus amigos e colegas o quanto incrível o Franz é e nos ajude a espalhar a mensagem. ", "feature.todos.premium.info" : "As Listas de Tarefa do Franz estão disponíveis para usuários premium!", "feature.todos.premium.rollout" : "As outras pessoas terão que esperar um pouquinho mais.", - "feature.todos.premium.upgrade" : "Upgrade Account", + "feature.todos.premium.upgrade" : "Melhore sua conta", "global.api.unhealthy" : "Não foi possível conectar-se aos serviços on-line do Franz.", - "global.franzProRequired" : "Franz Professional Required", + "global.franzProRequired" : "Franz Profissional necessário", "global.notConnectedToTheInternet" : "Você não está conectado à internet", "global.spellchecker.useDefault" : "Use o padrão do sistema ({default})", "global.spellchecking.autodetect" : "Detectar idioma automaticamente.", @@ -91,10 +91,10 @@ "menu.services" : "Serviços", "menu.services.activatePreviousService" : "Pular para serviço anterior", "menu.services.addNewService" : "Adicionar Novo Serviço", - "menu.services.goHome" : "Home", + "menu.services.goHome" : "Inicio", "menu.services.setNextServiceActive" : "Pular para próximo serviço", - "menu.todos" : "Todos", - "menu.todos.enableTodos" : "Enable Todos", + "menu.todos" : "A fazer", + "menu.todos.enableTodos" : "Habilitar logs", "menu.view" : "Visualizar ", "menu.view.enterFullScreen" : "Modo Tela Cheia", "menu.view.exitFullScreen" : "Sair da Tela Cheia", @@ -123,15 +123,15 @@ "password.submit.label" : "Enviar", "password.successInfo" : "Por favor, verifique o seu e-mail", "premiumFeature.button.upgradeAccount" : "Atualizar conta", - "pricing.features.adFree" : "Forever ad-free", + "pricing.features.adFree" : "Pra sempre sem propagandas", "pricing.features.appDelays" : "Sem Telas de Espera", "pricing.features.customWebsites" : "Adicionar Websites Personalizados", "pricing.features.onPremise" : "On-premise & other Hosted Services", "pricing.features.serviceProxies" : "Service Proxies", "pricing.features.spellchecker" : "Spellchecker support", "pricing.features.teamManagement" : "Gestão de Time", - "pricing.features.thirdPartyServices" : "Install 3rd party services", - "pricing.features.unlimitedServices" : "Add unlimited services", + "pricing.features.thirdPartyServices" : "Instalar serviços de terceiros", + "pricing.features.unlimitedServices" : "Adicione ilimitados serviços", "pricing.features.workspaces" : "Áreas de Trabalho", "pricing.plan.free" : "Franz Gratuito", "pricing.plan.legacy" : "Franz Premium", @@ -149,7 +149,7 @@ "pricing.trial.subheadline" : "Sua oferta pessoal de boas-vindas:", "pricing.trial.terms.automaticTrialEnd" : "Seu período de testes encerra automaticamente em 14 dias", "pricing.trial.terms.headline" : "Sem vínculos", - "pricing.trial.terms.noCreditCard" : "No credit card required", + "pricing.trial.terms.noCreditCard" : "Cartão de crédito não exigido", "service.crashHandler.action" : "Recarregar {name}", "service.crashHandler.autoReload" : "Tentando reestabelecer {name} automaticamente em {seconds} segundos", "service.crashHandler.headline" : "Ah, não!", @@ -161,11 +161,11 @@ "service.errorHandler.headline" : "Ah, não!", "service.errorHandler.message" : "Erro", "service.errorHandler.text" : "{name} não pôde ser carregado.", - "service.restrictedHandler.action" : "Upgrade Account", - "service.restrictedHandler.customUrl.headline" : "Franz Professional Plan required", - "service.restrictedHandler.customUrl.text" : "Please upgrade to the Franz Professional plan to use custom urls & self hosted services.", - "service.restrictedHandler.serviceLimit.headline" : "You have reached your service limit.", - "service.restrictedHandler.serviceLimit.text" : "Please upgrade your account to use more than {count} services.", + "service.restrictedHandler.action" : "Melhorar sua conta", + "service.restrictedHandler.customUrl.headline" : "Franz Professional exigido", + "service.restrictedHandler.customUrl.text" : "Por favor, atualize para o Franz Professional para usar urls customizadas e serviços próprios", + "service.restrictedHandler.serviceLimit.headline" : "Você atingiu seu limite de serviço", + "service.restrictedHandler.serviceLimit.text" : "Por favor, atualize sua conta para usar mais do que {count} serviços", "service.webviewLoader.loading" : "Carregando", "services.getStarted" : "Iniciar", "services.welcome" : "Bem-vindo ao Franz!", @@ -183,19 +183,19 @@ "settings.account.headlinePassword" : "Mudar senha", "settings.account.headlineProfile" : "Atualizar perfil", "settings.account.headlineSubscription" : "Sua assinatura", - "settings.account.headlineTrialUpgrade" : "Get the free 14 day Franz Professional Trial", - "settings.account.headlineUpgradeAccount" : "Upgrade your account & get the full Franz experience", + "settings.account.headlineTrialUpgrade" : "Teste o Franz Professional por 14 dias de graça.", + "settings.account.headlineUpgradeAccount" : "Dê um upgrade na sua conta e tenha uma completa experiência do Franz", "settings.account.invoiceDownload" : "Baixar", "settings.account.manageSubscription.label" : "Gerencie a sua assinatura", "settings.account.successInfo" : "Suas alterações foram gravadas", - "settings.account.trial" : "Free Trial", - "settings.account.trialEndsIn" : "Your free trial ends in {duration}.", - "settings.account.trialUpdateBillingInfo" : "Please update your billing info to continue using {license} after your trial period.", + "settings.account.trial" : "Teste grátis", + "settings.account.trialEndsIn" : "Seu teste grátis acaba em {duration}", + "settings.account.trialUpdateBillingInfo" : "Por favor, atualize suas informações de compra para continuar usando {license} depois do período de teste grátis", "settings.account.tryReloadServices" : "Tente novamente", "settings.account.tryReloadUserInfoRequest" : "Tentar novamente", - "settings.account.upgradeToPro.label" : "Atualizar para o Franz Profissional", + "settings.account.upgradeToPro.label" : "Upgrade para o Franz Professional", "settings.account.userInfoRequestFailed" : "Não foi possível carregar as informações do usuário", - "settings.account.yourLicense" : "Your Franz License", + "settings.account.yourLicense" : "Sua lincença do Franz", "settings.app.buttonClearAllCache" : "Limpar cache", "settings.app.buttonInstallUpdate" : "Reiniciar e instalar atualização", "settings.app.buttonSearchForUpdate" : "Verificar por atualizações", @@ -209,7 +209,7 @@ "settings.app.form.enableSpellchecking" : "Ativar correção ortográfica", "settings.app.form.enableSystemTray" : "Exibir o Franz na barra de sistema", "settings.app.form.enableTodos" : "Enable Franz Todos", - "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", + "settings.app.form.keepAllWorkspacesLoaded" : "Matenha todos os workspaces carregados", "settings.app.form.language" : "Idioma", "settings.app.form.minimizeToSystemTray" : "Minimizar o Franz para a área de sistema", "settings.app.form.runInBackground" : "Manter o Franz no fundo quando fechar a janela", @@ -238,13 +238,13 @@ "settings.navigation.yourServices" : "Seus serviços", "settings.navigation.yourWorkspaces" : "Suas áreas de trabalho", "settings.recipes.all" : "Todos os serviços", - "settings.recipes.custom" : "Custom Services", + "settings.recipes.custom" : "Serviços customizados", "settings.recipes.customService.headline.communityRecipes" : "Community 3rd Party Recipes", "settings.recipes.customService.headline.customRecipes" : "Custom 3rd Party Recipes", "settings.recipes.customService.headline.devRecipes" : "Your Development Service Recipes", "settings.recipes.customService.intro" : "To add a custom service, copy the service recipe to:", - "settings.recipes.customService.openDevDocs" : "Developer Documentation", - "settings.recipes.customService.openFolder" : "Open folder", + "settings.recipes.customService.openDevDocs" : "Documentação do desenvolvedor", + "settings.recipes.customService.openFolder" : "Abrir pasta", "settings.recipes.headline" : "Serviços disponíveis", "settings.recipes.missingService" : "Sentiu falta de algum serviço?", "settings.recipes.mostPopular" : "Mais populares", @@ -350,9 +350,9 @@ "signup.password.label" : "Senha", "signup.submit.label" : "Criar uma conta", "subscription.cta.activateTrial" : "Yes, start the free Franz Professional trial", - "subscription.cta.allOptions" : "See all options", - "subscription.cta.choosePlan" : "Choose your plan", - "subscription.includedProFeatures" : "The Franz Professional Plan includes:", + "subscription.cta.allOptions" : "Ver todas as opções", + "subscription.cta.choosePlan" : "Escolha seu plano", + "subscription.includedProFeatures" : "O Franz Professional inclui:", "subscription.teaser.includedFeatures" : "Paid Franz Plans include:", "subscription.teaser.intro" : "O Franz 5 vem com uma variedade de novas funcionalidades para melhorar a sua comunicação diária - pilhas inclusas. Confira os nossos novos planos e encontre aquele que melhor serve para você!", "subscriptionPopup.buttonCancel" : "Cancelar", @@ -371,10 +371,10 @@ "validation.oneRequired" : "Necessário pelo menos um", "validation.required" : "{campo} obrigatório", "validation.url" : "{campo} essa URL não é válida", - "webControls.back" : "Back", - "webControls.forward" : "Forward", + "webControls.back" : "Voltar", + "webControls.forward" : "Avançar", "webControls.goHome" : "Home", - "webControls.openInBrowser" : "Open in Browser", + "webControls.openInBrowser" : "Abrir no navegador", "webControls.reload" : "Recarregar", "welcome.loginButton" : "Entrar na sua conta", "welcome.signupButton" : "Criar uma conta grátis", -- cgit v1.2.3-70-g09d2 From 65b0912c4595b0b3cfad0f1d19255f70ba2bc48a Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Mon, 14 Oct 2019 13:59:48 +0200 Subject: Move checkout to in app instead of external handling --- .../settings/account/AccountDashboard.js | 6 +++- src/components/subscription/SubscriptionPopup.js | 2 ++ src/containers/settings/AccountScreen.js | 5 +++- .../subscription/SubscriptionFormScreen.js | 32 ++++++++++++++++++++-- src/styles/subscription-popup.scss | 5 +++- 5 files changed, 45 insertions(+), 5 deletions(-) diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index ac2594604..08e86fda6 100644 --- a/src/components/settings/account/AccountDashboard.js +++ b/src/components/settings/account/AccountDashboard.js @@ -109,6 +109,7 @@ class AccountDashboard extends Component { openBilling: PropTypes.func.isRequired, upgradeToPro: PropTypes.func.isRequired, openInvoices: PropTypes.func.isRequired, + onCloseSubscriptionWindow: PropTypes.func.isRequired, }; static contextTypes = { @@ -130,6 +131,7 @@ class AccountDashboard extends Component { openBilling, upgradeToPro, openInvoices, + onCloseSubscriptionWindow, } = this.props; const { intl } = this.context; @@ -263,7 +265,9 @@ class AccountDashboard extends Component { {!user.isPremium && (
- +
)} diff --git a/src/components/subscription/SubscriptionPopup.js b/src/components/subscription/SubscriptionPopup.js index 12ef8a6e9..12a51ad7b 100644 --- a/src/components/subscription/SubscriptionPopup.js +++ b/src/components/subscription/SubscriptionPopup.js @@ -59,8 +59,10 @@ export default @observer class SubscriptionPopup extends Component { className="subscription-popup__webview" autosize + allowpopups src={encodeURI(url)} onDidNavigate={completeCheck} + onDidNavigateInPage={completeCheck} />
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js index 9c74cf2ab..b0354c86b 100644 --- a/src/containers/settings/AccountScreen.js +++ b/src/containers/settings/AccountScreen.js @@ -5,6 +5,7 @@ import { inject, observer } from 'mobx-react'; import PaymentStore from '../../stores/PaymentStore'; import UserStore from '../../stores/UserStore'; import AppStore from '../../stores/AppStore'; +import FeaturesStore from '../../stores/FeaturesStore'; import AccountDashboard from '../../components/settings/account/AccountDashboard'; import ErrorBoundary from '../../components/util/ErrorBoundary'; @@ -12,8 +13,9 @@ import { WEBSITE } from '../../environment'; export default @inject('stores', 'actions') @observer class AccountScreen extends Component { onCloseWindow() { - const { user } = this.props.stores; + const { user, features } = this.props.stores; user.getUserInfoRequest.invalidate({ immediately: true }); + features.featuresRequest.invalidate({ immediately: true }); } reloadData() { @@ -65,6 +67,7 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend AccountScreen.wrappedComponent.propTypes = { stores: PropTypes.shape({ user: PropTypes.instanceOf(UserStore).isRequired, + features: PropTypes.instanceOf(FeaturesStore).isRequired, payment: PropTypes.instanceOf(PaymentStore).isRequired, app: PropTypes.instanceOf(AppStore).isRequired, }).isRequired, diff --git a/src/containers/subscription/SubscriptionFormScreen.js b/src/containers/subscription/SubscriptionFormScreen.js index 726b10628..38e46a7ba 100644 --- a/src/containers/subscription/SubscriptionFormScreen.js +++ b/src/containers/subscription/SubscriptionFormScreen.js @@ -1,4 +1,5 @@ import React, { Component } from 'react'; +import { remote } from 'electron'; import PropTypes from 'prop-types'; import { inject, observer } from 'mobx-react'; @@ -7,11 +8,21 @@ import PaymentStore from '../../stores/PaymentStore'; import SubscriptionForm from '../../components/subscription/SubscriptionForm'; import TrialForm from '../../components/subscription/TrialForm'; +const { BrowserWindow } = remote; + export default @inject('stores', 'actions') @observer class SubscriptionFormScreen extends Component { + static propTypes = { + onCloseWindow: PropTypes.func, + } + + static defaultProps = { + onCloseWindow: () => null, + } + async openBrowser() { const { - actions, stores, + onCloseWindow, } = this.props; const { @@ -22,7 +33,24 @@ export default @inject('stores', 'actions') @observer class SubscriptionFormScre let hostedPageURL = features.features.planSelectionURL; hostedPageURL = user.getAuthURL(hostedPageURL); - actions.app.openExternalUrl({ url: hostedPageURL }); + const paymentWindow = new BrowserWindow({ + parent: remote.getCurrentWindow(), + modal: true, + title: '🔒 Franz Supporter License', + width: 800, + height: window.innerHeight - 100, + maxWidth: 800, + minWidth: 600, + webPreferences: { + nodeIntegration: true, + webviewTag: true, + }, + }); + paymentWindow.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPageURL)}`); + + paymentWindow.on('closed', () => { + onCloseWindow(); + }); } render() { diff --git a/src/styles/subscription-popup.scss b/src/styles/subscription-popup.scss index fb4795d6c..14e05e65d 100644 --- a/src/styles/subscription-popup.scss +++ b/src/styles/subscription-popup.scss @@ -2,7 +2,10 @@ height: 100%; &__content { height: calc(100% - 60px); } - &__webview { height: 100%; } + &__webview { + height: 100%; + background: #FFF; + } &__toolbar { background: $theme-gray-lightest; -- cgit v1.2.3-70-g09d2 From 7d365619170852b328252220c9d5ac1cf8980f81 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Mon, 14 Oct 2019 15:19:40 +0200 Subject: Optimize button width --- src/components/subscription/SubscriptionForm.js | 4 ++-- src/components/subscription/TrialForm.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/subscription/SubscriptionForm.js b/src/components/subscription/SubscriptionForm.js index cdfbbe60d..5f268a322 100644 --- a/src/components/subscription/SubscriptionForm.js +++ b/src/components/subscription/SubscriptionForm.js @@ -30,7 +30,8 @@ const messages = defineMessages({ const styles = () => ({ activateTrialButton: { - margin: [40, 0, 50], + margin: [40, 'auto', 50], + display: 'flex', }, }); @@ -62,7 +63,6 @@ export default @observer @injectSheet(styles) class SubscriptionForm extends Com className={classes.activateTrialButton} busy={isActivatingTrial} onClick={selectPlan} - stretch />

diff --git a/src/components/subscription/TrialForm.js b/src/components/subscription/TrialForm.js index 9ed548f16..f3f3458f3 100644 --- a/src/components/subscription/TrialForm.js +++ b/src/components/subscription/TrialForm.js @@ -43,7 +43,8 @@ const messages = defineMessages({ const styles = theme => ({ activateTrialButton: { - margin: [40, 0, 10], + margin: [40, 'auto', 10], + display: 'flex', }, allOptionsButton: { margin: [0, 0, 40], @@ -93,7 +94,6 @@ export default @observer @injectSheet(styles) class TrialForm extends Component className={classes.activateTrialButton} busy={isActivatingTrial} onClick={activateTrial} - stretch />

diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index 200777ae6..fe81b1911 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js @@ -19,6 +19,7 @@ import { workspaceStore } from '../../features/workspaces'; import AppUpdateInfoBar from '../AppUpdateInfoBar'; import TrialActivationInfoBar from '../TrialActivationInfoBar'; import Todos from '../../features/todos/containers/TodosScreen'; +import PlanSelection from '../../features/planSelection/containers/PlanSelectionScreen'; function createMarkup(HTMLString) { return { __html: HTMLString }; @@ -176,6 +177,7 @@ class AppLayout extends Component {
+ ); diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index 08e86fda6..9a1b31d0f 100644 --- a/src/components/settings/account/AccountDashboard.js +++ b/src/components/settings/account/AccountDashboard.js @@ -217,7 +217,8 @@ class AccountDashboard extends Component { {intl.formatMessage(messages.yourLicense)}

- {isPremiumOverrideUser ? 'Franz Premium' : planName} + Franz + {isPremiumOverrideUser ? 'Premium' : planName} {user.team.isTrial && ( <> {' – '} diff --git a/src/components/ui/FeatureItem.js b/src/components/ui/FeatureItem.js index 7c482c4d4..4926df470 100644 --- a/src/components/ui/FeatureItem.js +++ b/src/components/ui/FeatureItem.js @@ -10,6 +10,7 @@ const styles = theme => ({ padding: [8, 0], display: 'flex', alignItems: 'center', + textAlign: 'left', }, featureIcon: { fill: theme.brandSuccess, diff --git a/src/components/ui/FeatureList.js b/src/components/ui/FeatureList.js index 62944ad75..732b40e40 100644 --- a/src/components/ui/FeatureList.js +++ b/src/components/ui/FeatureList.js @@ -3,12 +3,33 @@ import PropTypes from 'prop-types'; import { defineMessages, intlShape } from 'react-intl'; import { FeatureItem } from './FeatureItem'; +import { PLANS } from '../../config'; const messages = defineMessages({ + availableRecipes: { + id: 'pricing.features.recipes', + defaultMessage: '!!!Choose from more than 70 Services', + }, + accountSync: { + id: 'pricing.features.accountSync', + defaultMessage: '!!!Account Synchronisation', + }, + desktopNotifications: { + id: 'pricing.features.desktopNotifications', + defaultMessage: '!!!Desktop Notifications', + }, unlimitedServices: { id: 'pricing.features.unlimitedServices', defaultMessage: '!!!Add unlimited services', }, + upToThreeServices: { + id: 'pricing.features.upToThreeServices', + defaultMessage: '!!!Add up to 3 services', + }, + upToSixServices: { + id: 'pricing.features.upToSixServices', + defaultMessage: '!!!Add up to 6 services', + }, spellchecker: { id: 'pricing.features.spellchecker', defaultMessage: '!!!Spellchecker support', @@ -51,6 +72,7 @@ export class FeatureList extends Component { static propTypes = { className: PropTypes.string, featureClassName: PropTypes.string, + plan: PropTypes.oneOf(PLANS).isRequired, }; static defaultProps = { @@ -66,21 +88,52 @@ export class FeatureList extends Component { const { className, featureClassName, + plan, } = this.props; const { intl } = this.context; + const features = []; + if (plan === PLANS.FREE) { + features.push( + messages.upToThreeServices, + messages.availableRecipes, + messages.accountSync, + messages.desktopNotifications, + ); + } else if (plan === PLANS.PERSONAL) { + features.push( + messages.upToSixServices, + messages.spellchecker, + messages.appDelays, + messages.adFree, + ); + } else if (plan === PLANS.PRO) { + features.push( + messages.unlimitedServices, + messages.workspaces, + messages.customWebsites, + // messages.onPremise, + messages.thirdPartyServices, + // messages.serviceProxies, + ); + } else { + features.push( + messages.unlimitedServices, + messages.spellchecker, + messages.workspaces, + messages.customWebsites, + messages.onPremise, + messages.thirdPartyServices, + messages.serviceProxies, + messages.teamManagement, + messages.appDelays, + messages.adFree, + ); + } + return (

    - - - - - - - - - - + {features.map(feature => )}
); } diff --git a/src/config.js b/src/config.js index 78a92d948..11e6cb91f 100644 --- a/src/config.js +++ b/src/config.js @@ -91,10 +91,10 @@ export const ALLOWED_PROTOCOLS = [ ]; export const PLANS = { - PERSONAL: 'PERSONAL', - PRO: 'PRO', - LEGACY: 'LEGACY', - FREE: 'FREE', + PERSONAL: 'personal', + PRO: 'pro', + LEGACY: 'legacy', + FREE: 'free', }; export const PLANS_MAPPING = { diff --git a/src/containers/auth/PricingScreen.js b/src/containers/auth/PricingScreen.js index af1651931..8e0ded16a 100644 --- a/src/containers/auth/PricingScreen.js +++ b/src/containers/auth/PricingScreen.js @@ -38,7 +38,7 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend } = this.props; const { getUserInfoRequest, activateTrialRequest } = stores.user; - const { featuresRequest } = stores.features; + const { featuresRequest, features } = stores.features; return ( ); diff --git a/src/features/planSelection/actions.js b/src/features/planSelection/actions.js new file mode 100644 index 000000000..21aa38ace --- /dev/null +++ b/src/features/planSelection/actions.js @@ -0,0 +1,13 @@ +import PropTypes from 'prop-types'; +import { createActionsFromDefinitions } from '../../actions/lib/actions'; + +export const planSelectionActions = createActionsFromDefinitions({ + upgradeAccount: { + planId: PropTypes.string.isRequired, + onCloseWindow: PropTypes.func.isRequired, + }, + downgradeAccount: {}, + hideOverlay: {}, +}, PropTypes.checkPropTypes); + +export default planSelectionActions; diff --git a/src/features/planSelection/api.js b/src/features/planSelection/api.js new file mode 100644 index 000000000..734643f10 --- /dev/null +++ b/src/features/planSelection/api.js @@ -0,0 +1,26 @@ +import { sendAuthRequest } from '../../api/utils/auth'; +import { API, API_VERSION } from '../../environment'; +import Request from '../../stores/lib/Request'; + +const debug = require('debug')('Franz:feature:planSelection:api'); + +export const planSelectionApi = { + downgrade: async () => { + const url = `${API}/${API_VERSION}/payment/downgrade`; + const options = { + method: 'PUT', + }; + debug('downgrade UPDATE', url, options); + const result = await sendAuthRequest(url, options); + debug('downgrade RESULT', result); + if (!result.ok) throw result; + + return result.ok; + }, +}; + +export const downgradeUserRequest = new Request(planSelectionApi, 'downgrade'); + +export const resetApiRequests = () => { + downgradeUserRequest.reset(); +}; diff --git a/src/features/planSelection/components/PlanItem.js b/src/features/planSelection/components/PlanItem.js new file mode 100644 index 000000000..a49cd40d3 --- /dev/null +++ b/src/features/planSelection/components/PlanItem.js @@ -0,0 +1,186 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { observer } from 'mobx-react'; +import { defineMessages, intlShape } from 'react-intl'; +import injectSheet from 'react-jss'; +import classnames from 'classnames'; +import color from 'color'; + +import { H2 } from '@meetfranz/ui'; + +import { Button } from '@meetfranz/forms'; +import { mdiArrowRight } from '@mdi/js'; +// import { FeatureList } from '../ui/FeatureList'; +// import { PLANS, PAYMENT_INTERVAL } from '../../config'; +// import { i18nPlanName, i18nIntervalName } from '../../helpers/plan-helpers'; +// import { PLAN_INTERVAL_CONFIG_TYPE } from './types'; + +const messages = defineMessages({ + perMonth: { + id: 'subscription.interval.perMonth', + defaultMessage: '!!!per month', + }, + perMonthPerUser: { + id: 'subscription.interval.perMonthPerUser', + defaultMessage: '!!!per month & user', + }, +}); + +const styles = theme => ({ + root: { + display: 'flex', + flexDirection: 'column', + borderRadius: theme.borderRadius, + flex: 1, + color: theme.styleTypes.primary.accent, + overflow: 'hidden', + textAlign: 'center', + + '& h2': { + textAlign: 'center', + marginBottom: 20, + fontSize: 30, + color: theme.styleTypes.primary.contrast, + // fontWeight: 'bold', + }, + }, + currency: { + fontSize: 35, + }, + priceWrapper: { + height: 50, + }, + price: { + fontSize: 50, + + '& sup': { + fontSize: 20, + verticalAlign: 20, + }, + }, + interval: { + // paddingBottom: 40, + }, + text: { + marginBottom: 'auto', + }, + cta: { + background: theme.styleTypes.primary.accent, + color: theme.styleTypes.primary.contrast, + margin: [40, 'auto', 0, 'auto'], + + // '&:active': { + // opacity: 0.7, + // }, + }, + divider: { + width: 40, + border: 0, + borderTop: [1, 'solid', theme.styleTypes.primary.contrast], + margin: [30, 'auto'], + }, + header: { + padding: 20, + background: color(theme.styleTypes.primary.accent).darken(0.25).hex(), + color: theme.styleTypes.primary.contrast, + }, + content: { + padding: 20, + // border: [1, 'solid', 'red'], + background: '#EFEFEF', + }, + simpleCTA: { + background: 'none', + color: theme.styleTypes.primary.accent, + + '& svg': { + fill: theme.styleTypes.primary.accent, + }, + }, +}); + + +export default @observer @injectSheet(styles) class PlanItem extends Component { + static propTypes = { + name: PropTypes.string.isRequired, + text: PropTypes.string.isRequired, + price: PropTypes.number.isRequired, + currency: PropTypes.string.isRequired, + upgrade: PropTypes.func.isRequired, + ctaLabel: PropTypes.string.isRequired, + simpleCTA: PropTypes.bool, + perUser: PropTypes.bool, + classes: PropTypes.object.isRequired, + children: PropTypes.element, + }; + + static defaultProps = { + simpleCTA: false, + perUser: false, + children: null, + } + + static contextTypes = { + intl: intlShape, + }; + + render() { + const { + name, + text, + price, + currency, + classes, + upgrade, + ctaLabel, + simpleCTA, + perUser, + children, + } = this.props; + const { intl } = this.context; + + const priceParts = `${price}`.split('.'); + // const intervalName = i18nIntervalName(PAYMENT_INTERVAL.MONTHLY, intl); + + return ( +
+
+

{name}

+

+ {text} +

+
+

+ {currency} + + {priceParts[0]} + {priceParts[1]} + +

+

+ {intl.formatMessage(perUser ? messages.perMonthPerUser : messages.perMonth)} +

+
+ +
+ {children} + +
+ +
+ ); + } +} diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js new file mode 100644 index 000000000..84d2d9e89 --- /dev/null +++ b/src/features/planSelection/components/PlanSelection.js @@ -0,0 +1,233 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { observer } from 'mobx-react'; +import injectSheet from 'react-jss'; +import { defineMessages, intlShape } from 'react-intl'; +import { H1, H2, Icon } from '@meetfranz/ui'; +import color from 'color'; + +import { mdiRocket } from '@mdi/js'; +import PlanItem from './PlanItem'; +import { i18nPlanName } from '../../../helpers/plan-helpers'; +import { PLANS } from '../../../config'; +import { FeatureList } from '../../../components/ui/FeatureList'; + +const messages = defineMessages({ + welcome: { + id: 'feature.planSelection.fullscreen.welcome', + defaultMessage: '!!!Welcome back, {name}', + }, + subheadline: { + id: 'feature.planSelection.fullscreen.subheadline', + defaultMessage: '!!!It\'s time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.', + }, + textFree: { + id: 'feature.planSelection.free.text', + defaultMessage: '!!!Basic functionality', + }, + textPersonal: { + id: 'feature.planSelection.personal.text', + defaultMessage: '!!!More services, no waiting - ideal for personal use.', + }, + textProfessional: { + id: 'feature.planSelection.pro.text', + defaultMessage: '!!!Unlimited services and professional features for you - and your team.', + }, + ctaStayOnFree: { + id: 'feature.planSelection.cta.stayOnFree', + defaultMessage: '!!!Stay on Free', + }, + ctaDowngradeFree: { + id: 'feature.planSelection.cta.ctaDowngradeFree', + defaultMessage: '!!!Downgrade to Free', + }, + actionTrial: { + id: 'feature.planSelection.cta.trial', + defaultMessage: '!!!Start my free 14-days Trial', + }, + shortActionPersonal: { + id: 'feature.planSelection.cta.upgradePersonal', + defaultMessage: '!!!Choose Personal', + }, + shortActionPro: { + id: 'feature.planSelection.cta.upgradePro', + defaultMessage: '!!!Choose Professional', + }, + fullFeatureList: { + id: 'feature.planSelection.fullFeatureList', + defaultMessage: '!!!Complete comparison of all plans', + }, +}); + +const styles = theme => ({ + root: { + background: theme.colorModalOverlayBackground, + width: '100%', + height: '100%', + position: 'absolute', + top: 0, + left: 0, + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + zIndex: 999999, + }, + container: { + width: '80%', + height: 'auto', + background: theme.styleTypes.primary.accent, + padding: 40, + borderRadius: theme.borderRadius, + maxWidth: 1000, + + '& h1, & h2': { + textAlign: 'center', + }, + }, + plans: { + display: 'flex', + margin: [40, 0, 0], + height: 'auto', + + '& > div': { + margin: [0, 15], + flex: 1, + height: 'auto', + background: theme.styleTypes.primary.contrast, + boxShadow: [0, 2, 30, color('#000').alpha(0.1).rgb().string()], + }, + }, + bigIcon: { + background: theme.styleTypes.danger.accent, + width: 120, + height: 120, + display: 'flex', + alignItems: 'center', + borderRadius: '100%', + justifyContent: 'center', + margin: [-100, 'auto', 20], + + '& svg': { + width: '80px !important', + }, + }, + headline: { + fontSize: 40, + }, + subheadline: { + maxWidth: 660, + fontSize: 22, + lineHeight: 1.1, + margin: [0, 'auto'], + }, + featureList: { + '& li': { + borderBottom: [1, 'solid', '#CECECE'], + }, + }, + fullFeatureList: { + marginTop: 40, + textAlign: 'center', + display: 'block', + color: `${theme.styleTypes.primary.contrast} !important`, + }, +}); + +@injectSheet(styles) @observer +class PlanSelection extends Component { + static propTypes = { + classes: PropTypes.object.isRequired, + firstname: PropTypes.string.isRequired, + plans: PropTypes.object.isRequired, + currency: PropTypes.string.isRequired, + subscriptionExpired: PropTypes.bool.isRequired, + upgradeAccount: PropTypes.func.isRequired, + stayOnFree: PropTypes.func.isRequired, + hadSubscription: PropTypes.bool.isRequired, + }; + + static contextTypes = { + intl: intlShape, + }; + + render() { + const { + classes, + firstname, + plans, + currency, + subscriptionExpired, + upgradeAccount, + stayOnFree, + hadSubscription, + } = this.props; + + const { intl } = this.context; + + return ( +
+
+
+ +
+

{intl.formatMessage(messages.welcome, { name: firstname })}

+

{intl.formatMessage(messages.subheadline)}

+
+ stayOnFree()} + simpleCTA + > + + + upgradeAccount(plans.personal.yearly.id)} + > + + + upgradeAccount(plans.personal.yearly.id)} + perUser + > + + +
+ + {intl.formatMessage(messages.fullFeatureList)} + +
+
+ ); + } +} + +export default PlanSelection; diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js new file mode 100644 index 000000000..b0d9b5ab5 --- /dev/null +++ b/src/features/planSelection/containers/PlanSelectionScreen.js @@ -0,0 +1,138 @@ +import React, { Component } from 'react'; +import { observer, inject } from 'mobx-react'; +import PropTypes from 'prop-types'; +import { remote } from 'electron'; +import { defineMessages, intlShape } from 'react-intl'; + +import FeaturesStore from '../../../stores/FeaturesStore'; +import UserStore from '../../../stores/UserStore'; +import PlanSelection from '../components/PlanSelection'; +import ErrorBoundary from '../../../components/util/ErrorBoundary'; +import { planSelectionStore } from '..'; + +const { dialog, app } = remote; + +const messages = defineMessages({ + dialogTitle: { + id: 'feature.planSelection.fullscreen.dialog.title', + defaultMessage: '!!!Downgrade your Franz Plan', + }, + dialogMessage: { + id: 'feature.planSelection.fullscreen.dialog.message', + defaultMessage: '!!!You\'re about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.', + }, + dialogCTADowngrade: { + id: 'feature.planSelection.fullscreen.dialog.cta.downgrade', + defaultMessage: '!!!Downgrade to Free', + }, + dialogCTAUpgrade: { + id: 'feature.planSelection.fullscreen.dialog.cta.upgrade', + defaultMessage: '!!!Choose Personal', + }, +}); + +@inject('stores', 'actions') @observer +class PlanSelectionScreen extends Component { + static contextTypes = { + intl: intlShape, + }; + + upgradeAccount(planId) { + const { user, features } = this.props.stores; + const { upgradeAccount, hideOverlay } = this.props.actions.planSelection; + + upgradeAccount({ + planId, + onCloseWindow: () => { + hideOverlay(); + user.getUserInfoRequest.invalidate({ immediately: true }); + features.featuresRequest.invalidate({ immediately: true }); + }, + }); + } + + render() { + if (!planSelectionStore || !planSelectionStore.isFeatureActive || !planSelectionStore.showPlanSelectionOverlay) { + return null; + } + + const { intl } = this.context; + + const { user, features } = this.props.stores; + const { plans, currency } = features.features.pricingConfig; + const { activateTrial } = this.props.actions.user; + const { upgradeAccount, downgradeAccount, hideOverlay } = this.props.actions.planSelection; + + // const planConfig = [{ + // id: 'free', + // price: 0, + // }, { + // id: plans.personal.yearly.id, + // price: plans.personal.yearly.price, + // }, { + // id: plans.pro.yearly.id, + // price: plans.pro.yearly.price, + // }]; + + return ( + + { + if (user.data.hadSubscription) { + this.upgradeAccount(planId); + } else { + activateTrial({ + planId, + }); + } + }} + stayOnFree={() => { + const selection = dialog.showMessageBoxSync(app.mainWindow, { + type: 'question', + message: intl.formatMessage(messages.dialogTitle), + detail: intl.formatMessage(messages.dialogMessage, { + currency, + price: plans.personal.yearly.price, + }), + buttons: [ + intl.formatMessage(messages.dialogCTADowngrade), + intl.formatMessage(messages.dialogCTAUpgrade), + ], + }); + + if (selection === 0) { + downgradeAccount(); + hideOverlay(); + } else { + upgradeAccount(plans.personal.yearly.id); + } + }} + subscriptionExpired={user.team && user.team.state === 'expired' && !user.team.userHasDowngraded} + hadSubscription={user.data.hadSubscription} + /> + + ); + } +} + +export default PlanSelectionScreen; + +PlanSelectionScreen.wrappedComponent.propTypes = { + stores: PropTypes.shape({ + features: PropTypes.instanceOf(FeaturesStore).isRequired, + user: PropTypes.instanceOf(UserStore).isRequired, + }).isRequired, + actions: PropTypes.shape({ + planSelection: PropTypes.shape({ + upgradeAccount: PropTypes.func.isRequired, + downgradeAccount: PropTypes.func.isRequired, + hideOverlay: PropTypes.func.isRequired, + }), + user: PropTypes.shape({ + activateTrial: PropTypes.func.isRequired, + }), + }).isRequired, +}; diff --git a/src/features/planSelection/index.js b/src/features/planSelection/index.js new file mode 100644 index 000000000..81189207a --- /dev/null +++ b/src/features/planSelection/index.js @@ -0,0 +1,30 @@ +import { reaction } from 'mobx'; +import PlanSelectionStore from './store'; + +const debug = require('debug')('Franz:feature:planSelection'); + +export const GA_CATEGORY_PLAN_SELECTION = 'planSelection'; + +export const planSelectionStore = new PlanSelectionStore(); + +export default function initPlanSelection(stores, actions) { + stores.planSelection = planSelectionStore; + const { features } = stores; + + // Toggle planSelection feature + reaction( + () => features.features.isPlanSelectionEnabled, + (isEnabled) => { + if (isEnabled) { + debug('Initializing `planSelection` feature'); + planSelectionStore.start(stores, actions); + } else if (planSelectionStore.isFeatureActive) { + debug('Disabling `planSelection` feature'); + planSelectionStore.stop(); + } + }, + { + fireImmediately: true, + }, + ); +} diff --git a/src/features/planSelection/store.js b/src/features/planSelection/store.js new file mode 100644 index 000000000..50e46dfb3 --- /dev/null +++ b/src/features/planSelection/store.js @@ -0,0 +1,113 @@ +import { + action, + observable, + computed, +} from 'mobx'; +import { remote } from 'electron'; + +import { planSelectionActions } from './actions'; +import { FeatureStore } from '../utils/FeatureStore'; +// import { createReactions } from '../../stores/lib/Reaction'; +import { createActionBindings } from '../utils/ActionBinding'; +import { downgradeUserRequest } from './api'; + +const debug = require('debug')('Franz:feature:planSelection:store'); + +const { BrowserWindow } = remote; + +export default class PlanSelectionStore extends FeatureStore { + @observable isFeatureEnabled = false; + + @observable isFeatureActive = false; + + @observable hideOverlay = false; + + @computed get showPlanSelectionOverlay() { + const { team } = this.stores.user; + if (team && !this.hideOverlay) { + return team.state === 'expired' && !team.userHasDowngraded; + } + + return false; + } + + // ========== PUBLIC API ========= // + + @action start(stores, actions, api) { + debug('PlanSelectionStore::start'); + this.stores = stores; + this.actions = actions; + this.api = api; + + // ACTIONS + + this._registerActions(createActionBindings([ + [planSelectionActions.upgradeAccount, this._upgradeAccount], + [planSelectionActions.downgradeAccount, this._downgradeAccount], + [planSelectionActions.hideOverlay, this._hideOverlay], + ])); + + // REACTIONS + + // this._allReactions = createReactions([ + // this._setFeatureEnabledReaction, + // this._updateTodosConfig, + // this._firstLaunchReaction, + // this._routeCheckReaction, + // ]); + + // this._registerReactions(this._allReactions); + + this.isFeatureActive = true; + } + + @action stop() { + super.stop(); + debug('PlanSelectionStore::stop'); + this.reset(); + this.isFeatureActive = false; + } + + // ========== PRIVATE METHODS ========= // + + // Actions + + @action _upgradeAccount = ({ planId, onCloseWindow = () => null }) => { + let hostedPageURL = this.stores.features.features.subscribeURL; + + const parsedUrl = new URL(hostedPageURL); + const params = new URLSearchParams(parsedUrl.search.slice(1)); + + params.set('plan', planId); + + hostedPageURL = this.stores.user.getAuthURL(`${parsedUrl.origin}${parsedUrl.pathname}?${params.toString()}`); + + const win = new BrowserWindow({ + parent: remote.getCurrentWindow(), + modal: true, + title: '🔒 Upgrade Your Franz Account', + width: 800, + height: window.innerHeight - 100, + maxWidth: 800, + minWidth: 600, + webPreferences: { + nodeIntegration: true, + webviewTag: true, + }, + }); + win.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPageURL)}`); + + win.on('closed', () => { + onCloseWindow(); + }); + }; + + @action _downgradeAccount = () => { + console.log('downgrade to free', downgradeUserRequest); + downgradeUserRequest.execute(); + } + + @action _hideOverlay = () => { + this.hideOverlay = true; + } +} diff --git a/src/features/shareFranz/index.js b/src/features/shareFranz/index.js index 87deacef4..a39d7a6e6 100644 --- a/src/features/shareFranz/index.js +++ b/src/features/shareFranz/index.js @@ -3,6 +3,7 @@ import ms from 'ms'; import { state as delayAppState } from '../delayApp'; import { gaEvent, gaPage } from '../../lib/analytics'; +import { planSelectionStore } from '../planSelection'; export { default as Component } from './Component'; @@ -35,7 +36,7 @@ export default function initialize(stores) { () => stores.user.isLoggedIn, () => { setTimeout(() => { - if (stores.settings.stats.appStarts % 50 === 0) { + if (stores.settings.stats.appStarts % 50 === 0 && !planSelectionStore.showPlanSelectionOverlay) { if (delayAppState.isDelayAppScreenVisible) { debug('Delaying share modal by 5 minutes'); setTimeout(() => showModal(), ms('5m')); diff --git a/src/helpers/plan-helpers.js b/src/helpers/plan-helpers.js index e0f1fd89a..ee22e4471 100644 --- a/src/helpers/plan-helpers.js +++ b/src/helpers/plan-helpers.js @@ -4,19 +4,19 @@ import { PLANS_MAPPING, PLANS } from '../config'; const messages = defineMessages({ [PLANS.PRO]: { id: 'pricing.plan.pro', - defaultMessage: '!!!Franz Professional', + defaultMessage: '!!!Professional', }, [PLANS.PERSONAL]: { id: 'pricing.plan.personal', - defaultMessage: '!!!Franz Personal', + defaultMessage: '!!!Personal', }, [PLANS.FREE]: { id: 'pricing.plan.free', - defaultMessage: '!!!Franz Free', + defaultMessage: '!!!Free', }, [PLANS.LEGACY]: { id: 'pricing.plan.legacy', - defaultMessage: '!!!Franz Premium', + defaultMessage: '!!!Premium', }, }); diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 703f800f9..210ea001a 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -430,7 +430,7 @@ } }, { - "defaultMessage": "!!!Your personal welcome offer:", + "defaultMessage": "!!!Here's a special welcome for you:", "end": { "column": 3, "line": 22 @@ -495,7 +495,7 @@ } }, { - "defaultMessage": "!!!Yes, upgrade my account to Franz Professional", + "defaultMessage": "!!!Start my 14-day Franz Professional Trial", "end": { "column": 3, "line": 42 @@ -721,39 +721,39 @@ "defaultMessage": "!!!Your services have been updated.", "end": { "column": 3, - "line": 31 + "line": 32 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.servicesUpdated", "start": { "column": 19, - "line": 28 + "line": 29 } }, { "defaultMessage": "!!!Reload services", "end": { "column": 3, - "line": 35 + "line": 36 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.buttonReloadServices", "start": { "column": 24, - "line": 32 + "line": 33 } }, { "defaultMessage": "!!!Could not load services and user information", "end": { "column": 3, - "line": 39 + "line": 40 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.requiredRequestsFailed", "start": { "column": 26, - "line": 36 + "line": 37 } } ], @@ -3016,134 +3016,199 @@ }, { "descriptors": [ + { + "defaultMessage": "!!!Choose from more than 70 Services", + "end": { + "column": 3, + "line": 12 + }, + "file": "src/components/ui/FeatureList.js", + "id": "pricing.features.recipes", + "start": { + "column": 20, + "line": 9 + } + }, + { + "defaultMessage": "!!!Account Synchronisation", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/ui/FeatureList.js", + "id": "pricing.features.accountSync", + "start": { + "column": 15, + "line": 13 + } + }, + { + "defaultMessage": "!!!Desktop Notifications", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/components/ui/FeatureList.js", + "id": "pricing.features.desktopNotifications", + "start": { + "column": 24, + "line": 17 + } + }, { "defaultMessage": "!!!Add unlimited services", "end": { "column": 3, - "line": 11 + "line": 24 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.unlimitedServices", "start": { "column": 21, - "line": 8 + "line": 21 + } + }, + { + "defaultMessage": "!!!Add up to 3 services", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/components/ui/FeatureList.js", + "id": "pricing.features.upToThreeServices", + "start": { + "column": 21, + "line": 25 + } + }, + { + "defaultMessage": "!!!Add up to 6 services", + "end": { + "column": 3, + "line": 32 + }, + "file": "src/components/ui/FeatureList.js", + "id": "pricing.features.upToSixServices", + "start": { + "column": 19, + "line": 29 } }, { "defaultMessage": "!!!Spellchecker support", "end": { "column": 3, - "line": 15 + "line": 36 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.spellchecker", "start": { "column": 16, - "line": 12 + "line": 33 } }, { "defaultMessage": "!!!Workspaces", "end": { "column": 3, - "line": 19 + "line": 40 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.workspaces", "start": { "column": 14, - "line": 16 + "line": 37 } }, { "defaultMessage": "!!!Add Custom Websites", "end": { "column": 3, - "line": 23 + "line": 44 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.customWebsites", "start": { "column": 18, - "line": 20 + "line": 41 } }, { "defaultMessage": "!!!On-premise & other Hosted Services", "end": { "column": 3, - "line": 27 + "line": 48 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.onPremise", "start": { "column": 13, - "line": 24 + "line": 45 } }, { "defaultMessage": "!!!Install 3rd party services", "end": { "column": 3, - "line": 31 + "line": 52 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.thirdPartyServices", "start": { "column": 22, - "line": 28 + "line": 49 } }, { "defaultMessage": "!!!Service Proxies", "end": { "column": 3, - "line": 35 + "line": 56 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.serviceProxies", "start": { "column": 18, - "line": 32 + "line": 53 } }, { "defaultMessage": "!!!Team Management", "end": { "column": 3, - "line": 39 + "line": 60 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.teamManagement", "start": { "column": 18, - "line": 36 + "line": 57 } }, { "defaultMessage": "!!!No Waiting Screens", "end": { "column": 3, - "line": 43 + "line": 64 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.appDelays", "start": { "column": 13, - "line": 40 + "line": 61 } }, { "defaultMessage": "!!!Forever ad-free", "end": { "column": 3, - "line": 47 + "line": 68 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.adFree", "start": { "column": 10, - "line": 44 + "line": 65 } } ], @@ -3831,6 +3896,273 @@ ], "path": "src/features/delayApp/Component.json" }, + { + "descriptors": [ + { + "defaultMessage": "!!!per month", + "end": { + "column": 3, + "line": 22 + }, + "file": "src/features/planSelection/components/PlanItem.js", + "id": "subscription.interval.perMonth", + "start": { + "column": 12, + "line": 19 + } + }, + { + "defaultMessage": "!!!per month & user", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/features/planSelection/components/PlanItem.js", + "id": "subscription.interval.perMonthPerUser", + "start": { + "column": 19, + "line": 23 + } + } + ], + "path": "src/features/planSelection/components/PlanItem.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Welcome back, {name}", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.fullscreen.welcome", + "start": { + "column": 11, + "line": 16 + } + }, + { + "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.fullscreen.subheadline", + "start": { + "column": 15, + "line": 20 + } + }, + { + "defaultMessage": "!!!Basic functionality", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.free.text", + "start": { + "column": 12, + "line": 24 + } + }, + { + "defaultMessage": "!!!More services, no waiting - ideal for personal use.", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.personal.text", + "start": { + "column": 16, + "line": 28 + } + }, + { + "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", + "end": { + "column": 3, + "line": 35 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.pro.text", + "start": { + "column": 20, + "line": 32 + } + }, + { + "defaultMessage": "!!!Stay on Free", + "end": { + "column": 3, + "line": 39 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.cta.stayOnFree", + "start": { + "column": 17, + "line": 36 + } + }, + { + "defaultMessage": "!!!Downgrade to Free", + "end": { + "column": 3, + "line": 43 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.cta.ctaDowngradeFree", + "start": { + "column": 20, + "line": 40 + } + }, + { + "defaultMessage": "!!!Start my free 14-days Trial", + "end": { + "column": 3, + "line": 47 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.cta.trial", + "start": { + "column": 15, + "line": 44 + } + }, + { + "defaultMessage": "!!!Choose Personal", + "end": { + "column": 3, + "line": 51 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.cta.upgradePersonal", + "start": { + "column": 23, + "line": 48 + } + }, + { + "defaultMessage": "!!!Choose Professional", + "end": { + "column": 3, + "line": 55 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.cta.upgradePro", + "start": { + "column": 18, + "line": 52 + } + }, + { + "defaultMessage": "!!!Complete comparison of all plans", + "end": { + "column": 3, + "line": 59 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.fullFeatureList", + "start": { + "column": 19, + "line": 56 + } + } + ], + "path": "src/features/planSelection/components/PlanSelection.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!per {interval}", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/planSelection/components/PlanTeaser.js", + "id": "subscription.interval.per", + "start": { + "column": 7, + "line": 16 + } + }, + { + "defaultMessage": "!!!Upgrade Account", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/planSelection/components/PlanTeaser.js", + "id": "subscription.planItem.upgradeAccount", + "start": { + "column": 7, + "line": 20 + } + } + ], + "path": "src/features/planSelection/components/PlanTeaser.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Downgrade your Franz Plan", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "id": "feature.planSelection.fullscreen.dialog.title", + "start": { + "column": 15, + "line": 16 + } + }, + { + "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "id": "feature.planSelection.fullscreen.dialog.message", + "start": { + "column": 17, + "line": 20 + } + }, + { + "defaultMessage": "!!!Downgrade to Free", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "id": "feature.planSelection.fullscreen.dialog.cta.downgrade", + "start": { + "column": 22, + "line": 24 + } + }, + { + "defaultMessage": "!!!Choose Personal", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "id": "feature.planSelection.fullscreen.dialog.cta.upgrade", + "start": { + "column": 20, + "line": 28 + } + } + ], + "path": "src/features/planSelection/containers/PlanSelectionScreen.json" + }, { "descriptors": [ { @@ -4487,7 +4819,7 @@ { "descriptors": [ { - "defaultMessage": "!!!Franz Professional", + "defaultMessage": "!!!Professional", "end": { "column": 3, "line": 8 @@ -4500,7 +4832,7 @@ } }, { - "defaultMessage": "!!!Franz Personal", + "defaultMessage": "!!!Personal", "end": { "column": 3, "line": 12 @@ -4513,7 +4845,7 @@ } }, { - "defaultMessage": "!!!Franz Free", + "defaultMessage": "!!!Free", "end": { "column": 3, "line": 16 @@ -4526,7 +4858,7 @@ } }, { - "defaultMessage": "!!!Franz Premium", + "defaultMessage": "!!!Premium", "end": { "column": 3, "line": 20 diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index aea74768d..4e1b01419 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -9,6 +9,21 @@ "feature.delayApp.trial.headline": "Get the free Franz Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Franz Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Franz Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Welcome back, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email": "Send as email", "feature.shareFranz.action.facebook": "Share on Facebook", @@ -123,30 +138,35 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", - "pricing.plan.free": "Franz Free", - "pricing.plan.legacy": "Franz Premium", - "pricing.plan.personal": "Franz Personal", - "pricing.plan.personal-monthly": "Franz Personal Monthly", - "pricing.plan.personal-yearly": "Franz Personal Yearly", - "pricing.plan.pro": "Franz Professional", - "pricing.plan.pro-monthly": "Franz Professional Monthly", - "pricing.plan.pro-yearly": "Franz Professional Yearly", - "pricing.trial.cta.accept": "Yes, upgrade my account to Franz Professional", + "pricing.plan.free": "Free", + "pricing.plan.legacy": "Premium", + "pricing.plan.personal": "Personal", + "pricing.plan.personal-monthly": "Personal Monthly", + "pricing.plan.personal-yearly": "Personal Yearly", + "pricing.plan.pro": "Professional", + "pricing.plan.pro-monthly": "Professional Monthly", + "pricing.plan.pro-yearly": "Professional Yearly", + "pricing.trial.cta.accept": "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip": "Continue to Franz", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Franz Professional includes:", "pricing.trial.headline": "Franz Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.subheadline": "Here's a special welcome for you:", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", @@ -353,6 +373,10 @@ "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Franz Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Franz Plans include:", "subscription.teaser.intro": "Franz 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", @@ -389,4 +413,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.

You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} \ No newline at end of file +} diff --git a/src/i18n/messages/src/components/auth/Pricing.json b/src/i18n/messages/src/components/auth/Pricing.json index f15617ca5..2d09c9ebb 100644 --- a/src/i18n/messages/src/components/auth/Pricing.json +++ b/src/i18n/messages/src/components/auth/Pricing.json @@ -14,7 +14,7 @@ }, { "id": "pricing.trial.subheadline", - "defaultMessage": "!!!Your personal welcome offer:", + "defaultMessage": "!!!Here's a special welcome for you:", "file": "src/components/auth/Pricing.js", "start": { "line": 19, @@ -79,7 +79,7 @@ }, { "id": "pricing.trial.cta.accept", - "defaultMessage": "!!!Yes, upgrade my account to Franz Professional", + "defaultMessage": "!!!Start my 14-day Franz Professional Trial", "file": "src/components/auth/Pricing.js", "start": { "line": 39, diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json index 44cf4fab9..22f11cedd 100644 --- a/src/i18n/messages/src/components/layout/AppLayout.json +++ b/src/i18n/messages/src/components/layout/AppLayout.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Your services have been updated.", "file": "src/components/layout/AppLayout.js", "start": { - "line": 28, + "line": 29, "column": 19 }, "end": { - "line": 31, + "line": 32, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!Reload services", "file": "src/components/layout/AppLayout.js", "start": { - "line": 32, + "line": 33, "column": 24 }, "end": { - "line": 35, + "line": 36, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Could not load services and user information", "file": "src/components/layout/AppLayout.js", "start": { - "line": 36, + "line": 37, "column": 26 }, "end": { - "line": 39, + "line": 40, "column": 3 } } diff --git a/src/i18n/messages/src/components/ui/FeatureList.json b/src/i18n/messages/src/components/ui/FeatureList.json index 497e299a4..3201115b3 100644 --- a/src/i18n/messages/src/components/ui/FeatureList.json +++ b/src/i18n/messages/src/components/ui/FeatureList.json @@ -1,14 +1,79 @@ [ + { + "id": "pricing.features.recipes", + "defaultMessage": "!!!Choose from more than 70 Services", + "file": "src/components/ui/FeatureList.js", + "start": { + "line": 9, + "column": 20 + }, + "end": { + "line": 12, + "column": 3 + } + }, + { + "id": "pricing.features.accountSync", + "defaultMessage": "!!!Account Synchronisation", + "file": "src/components/ui/FeatureList.js", + "start": { + "line": 13, + "column": 15 + }, + "end": { + "line": 16, + "column": 3 + } + }, + { + "id": "pricing.features.desktopNotifications", + "defaultMessage": "!!!Desktop Notifications", + "file": "src/components/ui/FeatureList.js", + "start": { + "line": 17, + "column": 24 + }, + "end": { + "line": 20, + "column": 3 + } + }, { "id": "pricing.features.unlimitedServices", "defaultMessage": "!!!Add unlimited services", "file": "src/components/ui/FeatureList.js", "start": { - "line": 8, + "line": 21, "column": 21 }, "end": { - "line": 11, + "line": 24, + "column": 3 + } + }, + { + "id": "pricing.features.upToThreeServices", + "defaultMessage": "!!!Add up to 3 services", + "file": "src/components/ui/FeatureList.js", + "start": { + "line": 25, + "column": 21 + }, + "end": { + "line": 28, + "column": 3 + } + }, + { + "id": "pricing.features.upToSixServices", + "defaultMessage": "!!!Add up to 6 services", + "file": "src/components/ui/FeatureList.js", + "start": { + "line": 29, + "column": 19 + }, + "end": { + "line": 32, "column": 3 } }, @@ -17,11 +82,11 @@ "defaultMessage": "!!!Spellchecker support", "file": "src/components/ui/FeatureList.js", "start": { - "line": 12, + "line": 33, "column": 16 }, "end": { - "line": 15, + "line": 36, "column": 3 } }, @@ -30,11 +95,11 @@ "defaultMessage": "!!!Workspaces", "file": "src/components/ui/FeatureList.js", "start": { - "line": 16, + "line": 37, "column": 14 }, "end": { - "line": 19, + "line": 40, "column": 3 } }, @@ -43,11 +108,11 @@ "defaultMessage": "!!!Add Custom Websites", "file": "src/components/ui/FeatureList.js", "start": { - "line": 20, + "line": 41, "column": 18 }, "end": { - "line": 23, + "line": 44, "column": 3 } }, @@ -56,11 +121,11 @@ "defaultMessage": "!!!On-premise & other Hosted Services", "file": "src/components/ui/FeatureList.js", "start": { - "line": 24, + "line": 45, "column": 13 }, "end": { - "line": 27, + "line": 48, "column": 3 } }, @@ -69,11 +134,11 @@ "defaultMessage": "!!!Install 3rd party services", "file": "src/components/ui/FeatureList.js", "start": { - "line": 28, + "line": 49, "column": 22 }, "end": { - "line": 31, + "line": 52, "column": 3 } }, @@ -82,11 +147,11 @@ "defaultMessage": "!!!Service Proxies", "file": "src/components/ui/FeatureList.js", "start": { - "line": 32, + "line": 53, "column": 18 }, "end": { - "line": 35, + "line": 56, "column": 3 } }, @@ -95,11 +160,11 @@ "defaultMessage": "!!!Team Management", "file": "src/components/ui/FeatureList.js", "start": { - "line": 36, + "line": 57, "column": 18 }, "end": { - "line": 39, + "line": 60, "column": 3 } }, @@ -108,11 +173,11 @@ "defaultMessage": "!!!No Waiting Screens", "file": "src/components/ui/FeatureList.js", "start": { - "line": 40, + "line": 61, "column": 13 }, "end": { - "line": 43, + "line": 64, "column": 3 } }, @@ -121,11 +186,11 @@ "defaultMessage": "!!!Forever ad-free", "file": "src/components/ui/FeatureList.js", "start": { - "line": 44, + "line": 65, "column": 10 }, "end": { - "line": 47, + "line": 68, "column": 3 } } diff --git a/src/i18n/messages/src/features/planSelection/components/PlanItem.json b/src/i18n/messages/src/features/planSelection/components/PlanItem.json new file mode 100644 index 000000000..839686390 --- /dev/null +++ b/src/i18n/messages/src/features/planSelection/components/PlanItem.json @@ -0,0 +1,28 @@ +[ + { + "id": "subscription.interval.perMonth", + "defaultMessage": "!!!per month", + "file": "src/features/planSelection/components/PlanItem.js", + "start": { + "line": 19, + "column": 12 + }, + "end": { + "line": 22, + "column": 3 + } + }, + { + "id": "subscription.interval.perMonthPerUser", + "defaultMessage": "!!!per month & user", + "file": "src/features/planSelection/components/PlanItem.js", + "start": { + "line": 23, + "column": 19 + }, + "end": { + "line": 26, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json new file mode 100644 index 000000000..3dc4f74f4 --- /dev/null +++ b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json @@ -0,0 +1,145 @@ +[ + { + "id": "feature.planSelection.fullscreen.welcome", + "defaultMessage": "!!!Welcome back, {name}", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 16, + "column": 11 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "feature.planSelection.fullscreen.subheadline", + "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 20, + "column": 15 + }, + "end": { + "line": 23, + "column": 3 + } + }, + { + "id": "feature.planSelection.free.text", + "defaultMessage": "!!!Basic functionality", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 24, + "column": 12 + }, + "end": { + "line": 27, + "column": 3 + } + }, + { + "id": "feature.planSelection.personal.text", + "defaultMessage": "!!!More services, no waiting - ideal for personal use.", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 28, + "column": 16 + }, + "end": { + "line": 31, + "column": 3 + } + }, + { + "id": "feature.planSelection.pro.text", + "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 32, + "column": 20 + }, + "end": { + "line": 35, + "column": 3 + } + }, + { + "id": "feature.planSelection.cta.stayOnFree", + "defaultMessage": "!!!Stay on Free", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 36, + "column": 17 + }, + "end": { + "line": 39, + "column": 3 + } + }, + { + "id": "feature.planSelection.cta.ctaDowngradeFree", + "defaultMessage": "!!!Downgrade to Free", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 40, + "column": 20 + }, + "end": { + "line": 43, + "column": 3 + } + }, + { + "id": "feature.planSelection.cta.trial", + "defaultMessage": "!!!Start my free 14-days Trial", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 44, + "column": 15 + }, + "end": { + "line": 47, + "column": 3 + } + }, + { + "id": "feature.planSelection.cta.upgradePersonal", + "defaultMessage": "!!!Choose Personal", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 48, + "column": 23 + }, + "end": { + "line": 51, + "column": 3 + } + }, + { + "id": "feature.planSelection.cta.upgradePro", + "defaultMessage": "!!!Choose Professional", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 52, + "column": 18 + }, + "end": { + "line": 55, + "column": 3 + } + }, + { + "id": "feature.planSelection.fullFeatureList", + "defaultMessage": "!!!Complete comparison of all plans", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 56, + "column": 19 + }, + "end": { + "line": 59, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/planSelection/components/PlanTeaser.json b/src/i18n/messages/src/features/planSelection/components/PlanTeaser.json new file mode 100644 index 000000000..015304a2e --- /dev/null +++ b/src/i18n/messages/src/features/planSelection/components/PlanTeaser.json @@ -0,0 +1,28 @@ +[ + { + "id": "subscription.interval.per", + "defaultMessage": "!!!per {interval}", + "file": "src/features/planSelection/components/PlanTeaser.js", + "start": { + "line": 16, + "column": 7 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "subscription.planItem.upgradeAccount", + "defaultMessage": "!!!Upgrade Account", + "file": "src/features/planSelection/components/PlanTeaser.js", + "start": { + "line": 20, + "column": 7 + }, + "end": { + "line": 23, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json b/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json new file mode 100644 index 000000000..04b2144b4 --- /dev/null +++ b/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json @@ -0,0 +1,54 @@ +[ + { + "id": "feature.planSelection.fullscreen.dialog.title", + "defaultMessage": "!!!Downgrade your Franz Plan", + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "start": { + "line": 16, + "column": 15 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "feature.planSelection.fullscreen.dialog.message", + "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "start": { + "line": 20, + "column": 17 + }, + "end": { + "line": 23, + "column": 3 + } + }, + { + "id": "feature.planSelection.fullscreen.dialog.cta.downgrade", + "defaultMessage": "!!!Downgrade to Free", + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "start": { + "line": 24, + "column": 22 + }, + "end": { + "line": 27, + "column": 3 + } + }, + { + "id": "feature.planSelection.fullscreen.dialog.cta.upgrade", + "defaultMessage": "!!!Choose Personal", + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "start": { + "line": 28, + "column": 20 + }, + "end": { + "line": 31, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/helpers/plan-helpers.json b/src/i18n/messages/src/helpers/plan-helpers.json index df8ee19e3..3f3e7e85d 100644 --- a/src/i18n/messages/src/helpers/plan-helpers.json +++ b/src/i18n/messages/src/helpers/plan-helpers.json @@ -1,7 +1,7 @@ [ { "id": "pricing.plan.pro", - "defaultMessage": "!!!Franz Professional", + "defaultMessage": "!!!Professional", "file": "src/helpers/plan-helpers.js", "start": { "line": 5, @@ -14,7 +14,7 @@ }, { "id": "pricing.plan.personal", - "defaultMessage": "!!!Franz Personal", + "defaultMessage": "!!!Personal", "file": "src/helpers/plan-helpers.js", "start": { "line": 9, @@ -27,7 +27,7 @@ }, { "id": "pricing.plan.free", - "defaultMessage": "!!!Franz Free", + "defaultMessage": "!!!Free", "file": "src/helpers/plan-helpers.js", "start": { "line": 13, @@ -40,7 +40,7 @@ }, { "id": "pricing.plan.legacy", - "defaultMessage": "!!!Franz Premium", + "defaultMessage": "!!!Premium", "file": "src/helpers/plan-helpers.js", "start": { "line": 17, diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js index cf28b6bec..bffcb01bc 100644 --- a/src/stores/FeaturesStore.js +++ b/src/stores/FeaturesStore.js @@ -19,6 +19,7 @@ import settingsWS from '../features/settingsWS'; import serviceLimit from '../features/serviceLimit'; import communityRecipes from '../features/communityRecipes'; import todos from '../features/todos'; +import planSelection from '../features/planSelection'; import { DEFAULT_FEATURES_CONFIG } from '../config'; @@ -81,5 +82,6 @@ export default class FeaturesStore extends Store { serviceLimit(this.stores, this.actions); communityRecipes(this.stores, this.actions); todos(this.stores, this.actions); + planSelection(this.stores, this.actions); } } diff --git a/src/stores/index.js b/src/stores/index.js index 10dd56665..4eeef7982 100644 --- a/src/stores/index.js +++ b/src/stores/index.js @@ -15,6 +15,7 @@ import { announcementsStore } from '../features/announcements'; import { serviceLimitStore } from '../features/serviceLimit'; import { communityRecipesStore } from '../features/communityRecipes'; import { todosStore } from '../features/todos'; +import { planSelectionStore } from '../features/planSelection'; export default (api, actions, router) => { const stores = {}; @@ -37,6 +38,7 @@ export default (api, actions, router) => { serviceLimit: serviceLimitStore, communityRecipes: communityRecipesStore, todos: todosStore, + planSelection: planSelectionStore, }); // Initialize all stores Object.keys(stores).forEach((name) => { -- cgit v1.2.3-70-g09d2 From 010211fe85fbd3d7ef9b221aa00c06e315ecb7d2 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 15 Oct 2019 21:56:03 +0200 Subject: icon polishing --- src/features/planSelection/components/PlanSelection.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js index 84d2d9e89..d26cc08a2 100644 --- a/src/features/planSelection/components/PlanSelection.js +++ b/src/features/planSelection/components/PlanSelection.js @@ -109,6 +109,7 @@ const styles = theme => ({ '& svg': { width: '80px !important', + filter: 'drop-shadow( 0px 2px 3px rgba(0, 0, 0, 0.3))', }, }, headline: { -- cgit v1.2.3-70-g09d2 From 726b18b12bb62932bab4107f7f1e685f48989a5d Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 15 Oct 2019 21:56:09 +0200 Subject: remove console log --- src/features/planSelection/store.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/features/planSelection/store.js b/src/features/planSelection/store.js index 50e46dfb3..57d71011b 100644 --- a/src/features/planSelection/store.js +++ b/src/features/planSelection/store.js @@ -103,7 +103,6 @@ export default class PlanSelectionStore extends FeatureStore { }; @action _downgradeAccount = () => { - console.log('downgrade to free', downgradeUserRequest); downgradeUserRequest.execute(); } -- cgit v1.2.3-70-g09d2 From 939c00860ae65231070338b5bc0b09db7af0e149 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 15 Oct 2019 22:28:44 +0200 Subject: plan selection polishing --- .../planSelection/components/PlanSelection.js | 123 +++++++++++---------- .../containers/PlanSelectionScreen.js | 13 ++- src/i18n/locales/en-US.json | 2 +- .../planSelection/components/PlanSelection.json | 44 ++++---- .../containers/PlanSelectionScreen.json | 16 +-- 5 files changed, 108 insertions(+), 90 deletions(-) diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js index d26cc08a2..9cd592083 100644 --- a/src/features/planSelection/components/PlanSelection.js +++ b/src/features/planSelection/components/PlanSelection.js @@ -11,6 +11,7 @@ import PlanItem from './PlanItem'; import { i18nPlanName } from '../../../helpers/plan-helpers'; import { PLANS } from '../../../config'; import { FeatureList } from '../../../components/ui/FeatureList'; +import Appear from '../../../components/ui/effects/Appear'; const messages = defineMessages({ welcome: { @@ -132,6 +133,10 @@ const styles = theme => ({ display: 'block', color: `${theme.styleTypes.primary.contrast} !important`, }, + scrollContainer: { + border: '1px solid red', + overflow: 'scroll-x', + }, }); @injectSheet(styles) @observer @@ -166,67 +171,69 @@ class PlanSelection extends Component { const { intl } = this.context; return ( -
-
-
- -
-

{intl.formatMessage(messages.welcome, { name: firstname })}

-

{intl.formatMessage(messages.subheadline)}

-
- stayOnFree()} - simpleCTA - > - - - upgradeAccount(plans.personal.yearly.id)} - > - - - upgradeAccount(plans.personal.yearly.id)} - perUser + +
+
+
+ +
+

{intl.formatMessage(messages.welcome, { name: firstname })}

+

{intl.formatMessage(messages.subheadline)}

+
+ stayOnFree()} + simpleCTA + > + + + upgradeAccount(plans.personal.yearly.id)} + > + + + upgradeAccount(plans.personal.yearly.id)} + perUser + > + + +
+ - - + {intl.formatMessage(messages.fullFeatureList)} +
- - {intl.formatMessage(messages.fullFeatureList)} -
-
+ ); } } diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js index b0d9b5ab5..01b357861 100644 --- a/src/features/planSelection/containers/PlanSelectionScreen.js +++ b/src/features/planSelection/containers/PlanSelectionScreen.js @@ -8,7 +8,8 @@ import FeaturesStore from '../../../stores/FeaturesStore'; import UserStore from '../../../stores/UserStore'; import PlanSelection from '../components/PlanSelection'; import ErrorBoundary from '../../../components/util/ErrorBoundary'; -import { planSelectionStore } from '..'; +import { planSelectionStore, GA_CATEGORY_PLAN_SELECTION } from '..'; +import { gaEvent } from '../../../lib/analytics'; const { dialog, app } = remote; @@ -37,6 +38,10 @@ class PlanSelectionScreen extends Component { intl: intlShape, }; + componentDidMount() { + gaEvent(GA_CATEGORY_PLAN_SELECTION, 'show'); + } + upgradeAccount(planId) { const { user, features } = this.props.stores; const { upgradeAccount, hideOverlay } = this.props.actions.planSelection; @@ -83,6 +88,8 @@ class PlanSelectionScreen extends Component { upgradeAccount={(planId) => { if (user.data.hadSubscription) { this.upgradeAccount(planId); + + gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', planId); } else { activateTrial({ planId, @@ -103,11 +110,15 @@ class PlanSelectionScreen extends Component { ], }); + gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', 'Stay on Free'); + if (selection === 0) { downgradeAccount(); hideOverlay(); } else { upgradeAccount(plans.personal.yearly.id); + + gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', 'Revoke'); } }} subscriptionExpired={user.team && user.team.state === 'expired' && !user.team.userHasDowngraded} diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 4e1b01419..f2fd7a52a 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -413,4 +413,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.

You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file diff --git a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json index 3dc4f74f4..76f4ed50b 100644 --- a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json +++ b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Welcome back, {name}", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 16, + "line": 17, "column": 11 }, "end": { - "line": 19, + "line": 20, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 20, + "line": 21, "column": 15 }, "end": { - "line": 23, + "line": 24, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Basic functionality", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 24, + "line": 25, "column": 12 }, "end": { - "line": 27, + "line": 28, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!More services, no waiting - ideal for personal use.", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 28, + "line": 29, "column": 16 }, "end": { - "line": 31, + "line": 32, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 32, + "line": 33, "column": 20 }, "end": { - "line": 35, + "line": 36, "column": 3 } }, @@ -69,11 +69,11 @@ "defaultMessage": "!!!Stay on Free", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 36, + "line": 37, "column": 17 }, "end": { - "line": 39, + "line": 40, "column": 3 } }, @@ -82,11 +82,11 @@ "defaultMessage": "!!!Downgrade to Free", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 40, + "line": 41, "column": 20 }, "end": { - "line": 43, + "line": 44, "column": 3 } }, @@ -95,11 +95,11 @@ "defaultMessage": "!!!Start my free 14-days Trial", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 44, + "line": 45, "column": 15 }, "end": { - "line": 47, + "line": 48, "column": 3 } }, @@ -108,11 +108,11 @@ "defaultMessage": "!!!Choose Personal", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 48, + "line": 49, "column": 23 }, "end": { - "line": 51, + "line": 52, "column": 3 } }, @@ -121,11 +121,11 @@ "defaultMessage": "!!!Choose Professional", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 52, + "line": 53, "column": 18 }, "end": { - "line": 55, + "line": 56, "column": 3 } }, @@ -134,11 +134,11 @@ "defaultMessage": "!!!Complete comparison of all plans", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 56, + "line": 57, "column": 19 }, "end": { - "line": 59, + "line": 60, "column": 3 } } diff --git a/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json b/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json index 04b2144b4..905c6e09a 100644 --- a/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json +++ b/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Downgrade your Franz Plan", "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "start": { - "line": 16, + "line": 17, "column": 15 }, "end": { - "line": 19, + "line": 20, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "start": { - "line": 20, + "line": 21, "column": 17 }, "end": { - "line": 23, + "line": 24, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Downgrade to Free", "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "start": { - "line": 24, + "line": 25, "column": 22 }, "end": { - "line": 27, + "line": 28, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!Choose Personal", "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "start": { - "line": 28, + "line": 29, "column": 20 }, "end": { - "line": 31, + "line": 32, "column": 3 } } -- cgit v1.2.3-70-g09d2 From a7c222298e07800d0e09fa064ad257df4e0b6515 Mon Sep 17 00:00:00 2001 From: FranzBot Date: Wed, 16 Oct 2019 00:00:21 +0000 Subject: Automatic i18n update (i18n.meetfranz.com) --- src/i18n/locales/pl.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index 13207f0ef..e803cc282 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json @@ -37,7 +37,7 @@ "infobar.buttonReloadServices" : "Odśwież usługi", "infobar.requiredRequestsFailed" : "Nie można załadować usług i informacji użytkownika", "infobar.servicesUpdated" : "Usługi zostały zaktualizowane.", - "infobar.trialActivated" : "Your trial was successfully activated. Happy messaging!", + "infobar.trialActivated" : "Twój okres próbny właśnie się rozpoczął.Pozytywnych wrażeń!", "infobar.updateAvailable" : "Dostępna jest nowa wersja Franza.", "invite.email.label" : "Adres email", "invite.headline.friends" : "Zaproś 3 znajomych lub kolegów", @@ -91,7 +91,7 @@ "menu.services" : "Usługi", "menu.services.activatePreviousService" : "Poprzednia usługa", "menu.services.addNewService" : "Dodaj nową usługę...", - "menu.services.goHome" : "Home", + "menu.services.goHome" : "Strona główna", "menu.services.setNextServiceActive" : "Następna usługa", "menu.todos" : "Lista zadań", "menu.todos.enableTodos" : "Enable Todos", @@ -124,7 +124,7 @@ "password.successInfo" : "Proszę sprawdzić swój email", "premiumFeature.button.upgradeAccount" : "Ulepsz konto", "pricing.features.adFree" : "Na zawsze bez reklam", - "pricing.features.appDelays" : "No Waiting Screens", + "pricing.features.appDelays" : "Bez czekania", "pricing.features.customWebsites" : "Dodawanie dowolnych stron internetowych", "pricing.features.onPremise" : "On-premise & other Hosted Services", "pricing.features.serviceProxies" : "Service Proxies", @@ -373,7 +373,7 @@ "validation.url" : "Pole {field} nie jest poprawnym ciągiem URL.", "webControls.back" : "Back", "webControls.forward" : "Forward", - "webControls.goHome" : "Home", + "webControls.goHome" : "Strona główna", "webControls.openInBrowser" : "Open in Browser", "webControls.reload" : "Reload", "welcome.loginButton" : "Zaloguj się na swoje konto", -- cgit v1.2.3-70-g09d2 From ba578b8a6df8d31136fb170e78b70a71dad85e31 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 16 Oct 2019 10:22:00 +0200 Subject: polishing --- src/components/auth/Pricing.js | 15 +++ src/containers/auth/PricingScreen.js | 11 +++ src/features/planSelection/components/PlanItem.js | 50 +++++++--- .../planSelection/components/PlanSelection.js | 27 +++--- .../containers/PlanSelectionScreen.js | 14 --- src/features/planSelection/store.js | 3 + src/i18n/locales/defaultMessages.json | 102 +++++++++++++-------- src/i18n/locales/en-US.json | 4 +- src/i18n/messages/src/components/auth/Pricing.json | 29 ++++-- .../planSelection/components/PlanItem.json | 19 +++- 10 files changed, 184 insertions(+), 90 deletions(-) diff --git a/src/components/auth/Pricing.js b/src/components/auth/Pricing.js index 40ce49814..67af04470 100644 --- a/src/components/auth/Pricing.js +++ b/src/components/auth/Pricing.js @@ -32,6 +32,10 @@ const messages = defineMessages({ id: 'pricing.trial.terms.automaticTrialEnd', defaultMessage: '!!!Your free trial ends automatically after 14 days', }, + trialWorth: { + id: 'pricing.trial.terms.trialWorth', + defaultMessage: '!!!Free trial (normally {currency}{price} per month)', + }, activationError: { id: 'pricing.trial.error', defaultMessage: '!!!Sorry, we could not activate your trial!', @@ -104,6 +108,8 @@ export default @observer @injectSheet(styles) class Signup extends Component { trialActivationError: PropTypes.bool.isRequired, canSkipTrial: PropTypes.bool.isRequired, classes: PropTypes.object.isRequired, + currency: PropTypes.string.isRequired, + price: PropTypes.number.isRequired, }; static contextTypes = { @@ -118,6 +124,8 @@ export default @observer @injectSheet(styles) class Signup extends Component { trialActivationError, canSkipTrial, classes, + currency, + price, } = this.props; const { intl } = this.context; @@ -156,6 +164,13 @@ export default @observer @injectSheet(styles) class Signup extends Component { {intl.formatMessage(messages.noStringsAttachedHeadline)}
    +
diff --git a/src/containers/auth/PricingScreen.js b/src/containers/auth/PricingScreen.js index 8e0ded16a..ff378bd8b 100644 --- a/src/containers/auth/PricingScreen.js +++ b/src/containers/auth/PricingScreen.js @@ -40,6 +40,15 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend const { getUserInfoRequest, activateTrialRequest } = stores.user; const { featuresRequest, features } = stores.features; + const { pricingConfig } = features; + + let currency = '$'; + let price = '5.99'; + if (pricingConfig) { + ({ currency } = pricingConfig); + ({ price } = pricingConfig.plans.pro.yearly); + } + return ( ); } diff --git a/src/features/planSelection/components/PlanItem.js b/src/features/planSelection/components/PlanItem.js index a49cd40d3..ea04c8448 100644 --- a/src/features/planSelection/components/PlanItem.js +++ b/src/features/planSelection/components/PlanItem.js @@ -10,10 +10,6 @@ import { H2 } from '@meetfranz/ui'; import { Button } from '@meetfranz/forms'; import { mdiArrowRight } from '@mdi/js'; -// import { FeatureList } from '../ui/FeatureList'; -// import { PLANS, PAYMENT_INTERVAL } from '../../config'; -// import { i18nPlanName, i18nIntervalName } from '../../helpers/plan-helpers'; -// import { PLAN_INTERVAL_CONFIG_TYPE } from './types'; const messages = defineMessages({ perMonth: { @@ -24,6 +20,10 @@ const messages = defineMessages({ id: 'subscription.interval.perMonthPerUser', defaultMessage: '!!!per month & user', }, + bestValue: { + id: 'subscription.bestValue', + defaultMessage: '!!!Best value', + }, }); const styles = theme => ({ @@ -41,7 +41,6 @@ const styles = theme => ({ marginBottom: 20, fontSize: 30, color: theme.styleTypes.primary.contrast, - // fontWeight: 'bold', }, }, currency: { @@ -58,9 +57,6 @@ const styles = theme => ({ verticalAlign: 20, }, }, - interval: { - // paddingBottom: 40, - }, text: { marginBottom: 'auto', }, @@ -68,10 +64,6 @@ const styles = theme => ({ background: theme.styleTypes.primary.accent, color: theme.styleTypes.primary.contrast, margin: [40, 'auto', 0, 'auto'], - - // '&:active': { - // opacity: 0.7, - // }, }, divider: { width: 40, @@ -83,10 +75,10 @@ const styles = theme => ({ padding: 20, background: color(theme.styleTypes.primary.accent).darken(0.25).hex(), color: theme.styleTypes.primary.contrast, + position: 'relative', }, content: { padding: 20, - // border: [1, 'solid', 'red'], background: '#EFEFEF', }, simpleCTA: { @@ -97,6 +89,20 @@ const styles = theme => ({ fill: theme.styleTypes.primary.accent, }, }, + bestValue: { + background: theme.styleTypes.success.accent, + color: theme.styleTypes.success.contrast, + right: -66, + top: -40, + height: 'auto', + position: 'absolute', + transform: 'rotateZ(45deg)', + textAlign: 'center', + padding: [5, 50], + transformOrigin: 'left bottom', + fontSize: 12, + boxShadow: '0 2px 6px rgba(0,0,0,0.15)', + }, }); @@ -111,6 +117,8 @@ export default @observer @injectSheet(styles) class PlanItem extends Component { simpleCTA: PropTypes.bool, perUser: PropTypes.bool, classes: PropTypes.object.isRequired, + bestValue: PropTypes.bool, + className: PropTypes.string, children: PropTypes.element, }; @@ -118,6 +126,8 @@ export default @observer @injectSheet(styles) class PlanItem extends Component { simpleCTA: false, perUser: false, children: null, + bestValue: false, + className: '', } static contextTypes = { @@ -135,16 +145,26 @@ export default @observer @injectSheet(styles) class PlanItem extends Component { ctaLabel, simpleCTA, perUser, + bestValue, + className, children, } = this.props; const { intl } = this.context; const priceParts = `${price}`.split('.'); - // const intervalName = i18nIntervalName(PAYMENT_INTERVAL.MONTHLY, intl); return ( -
+
+ {bestValue && ( +
+ {intl.formatMessage(messages.bestValue)} +
+ )}

{name}

{text} diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js index 9cd592083..1a45cf035 100644 --- a/src/features/planSelection/components/PlanSelection.js +++ b/src/features/planSelection/components/PlanSelection.js @@ -137,6 +137,9 @@ const styles = theme => ({ border: '1px solid red', overflow: 'scroll-x', }, + featuredPlan: { + transform: 'scale(1.05)', + }, }); @injectSheet(styles) @observer @@ -197,29 +200,31 @@ class PlanSelection extends Component { /> upgradeAccount(plans.personal.yearly.id)} + className={classes.featuredPlan} + perUser + bestValue > upgradeAccount(plans.personal.yearly.id)} - perUser > diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js index 01b357861..dff9051d8 100644 --- a/src/features/planSelection/containers/PlanSelectionScreen.js +++ b/src/features/planSelection/containers/PlanSelectionScreen.js @@ -43,15 +43,12 @@ class PlanSelectionScreen extends Component { } upgradeAccount(planId) { - const { user, features } = this.props.stores; const { upgradeAccount, hideOverlay } = this.props.actions.planSelection; upgradeAccount({ planId, onCloseWindow: () => { hideOverlay(); - user.getUserInfoRequest.invalidate({ immediately: true }); - features.featuresRequest.invalidate({ immediately: true }); }, }); } @@ -68,17 +65,6 @@ class PlanSelectionScreen extends Component { const { activateTrial } = this.props.actions.user; const { upgradeAccount, downgradeAccount, hideOverlay } = this.props.actions.planSelection; - // const planConfig = [{ - // id: 'free', - // price: 0, - // }, { - // id: plans.personal.yearly.id, - // price: plans.personal.yearly.price, - // }, { - // id: plans.pro.yearly.id, - // price: plans.pro.yearly.price, - // }]; - return ( { + this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); + this.stores.features.featuresRequest.invalidate({ immediately: true }); + onCloseWindow(); }); }; diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 210ea001a..eafac1f87 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -482,55 +482,68 @@ } }, { - "defaultMessage": "!!!Sorry, we could not activate your trial!", + "defaultMessage": "!!!Free trial (normally {currency}{price} per month)", "end": { "column": 3, "line": 38 }, "file": "src/components/auth/Pricing.js", + "id": "pricing.trial.terms.trialWorth", + "start": { + "column": 14, + "line": 35 + } + }, + { + "defaultMessage": "!!!Sorry, we could not activate your trial!", + "end": { + "column": 3, + "line": 42 + }, + "file": "src/components/auth/Pricing.js", "id": "pricing.trial.error", "start": { "column": 19, - "line": 35 + "line": 39 } }, { "defaultMessage": "!!!Start my 14-day Franz Professional Trial", "end": { "column": 3, - "line": 42 + "line": 46 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.cta.accept", "start": { "column": 13, - "line": 39 + "line": 43 } }, { "defaultMessage": "!!!Continue to Franz", "end": { "column": 3, - "line": 46 + "line": 50 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.cta.skip", "start": { "column": 11, - "line": 43 + "line": 47 } }, { "defaultMessage": "!!!Franz Professional includes:", "end": { "column": 3, - "line": 50 + "line": 54 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.features.headline", "start": { "column": 20, - "line": 47 + "line": 51 } } ], @@ -3923,6 +3936,19 @@ "column": 19, "line": 23 } + }, + { + "defaultMessage": "!!!Best value", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/features/planSelection/components/PlanItem.js", + "id": "subscription.bestValue", + "start": { + "column": 13, + "line": 27 + } } ], "path": "src/features/planSelection/components/PlanItem.json" @@ -3933,143 +3959,143 @@ "defaultMessage": "!!!Welcome back, {name}", "end": { "column": 3, - "line": 19 + "line": 20 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.fullscreen.welcome", "start": { "column": 11, - "line": 16 + "line": 17 } }, { "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "end": { "column": 3, - "line": 23 + "line": 24 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.fullscreen.subheadline", "start": { "column": 15, - "line": 20 + "line": 21 } }, { "defaultMessage": "!!!Basic functionality", "end": { "column": 3, - "line": 27 + "line": 28 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.free.text", "start": { "column": 12, - "line": 24 + "line": 25 } }, { "defaultMessage": "!!!More services, no waiting - ideal for personal use.", "end": { "column": 3, - "line": 31 + "line": 32 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.personal.text", "start": { "column": 16, - "line": 28 + "line": 29 } }, { "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", "end": { "column": 3, - "line": 35 + "line": 36 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.pro.text", "start": { "column": 20, - "line": 32 + "line": 33 } }, { "defaultMessage": "!!!Stay on Free", "end": { "column": 3, - "line": 39 + "line": 40 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.cta.stayOnFree", "start": { "column": 17, - "line": 36 + "line": 37 } }, { "defaultMessage": "!!!Downgrade to Free", "end": { "column": 3, - "line": 43 + "line": 44 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.cta.ctaDowngradeFree", "start": { "column": 20, - "line": 40 + "line": 41 } }, { "defaultMessage": "!!!Start my free 14-days Trial", "end": { "column": 3, - "line": 47 + "line": 48 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.cta.trial", "start": { "column": 15, - "line": 44 + "line": 45 } }, { "defaultMessage": "!!!Choose Personal", "end": { "column": 3, - "line": 51 + "line": 52 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.cta.upgradePersonal", "start": { "column": 23, - "line": 48 + "line": 49 } }, { "defaultMessage": "!!!Choose Professional", "end": { "column": 3, - "line": 55 + "line": 56 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.cta.upgradePro", "start": { "column": 18, - "line": 52 + "line": 53 } }, { "defaultMessage": "!!!Complete comparison of all plans", "end": { "column": 3, - "line": 59 + "line": 60 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.fullFeatureList", "start": { "column": 19, - "line": 56 + "line": 57 } } ], @@ -4112,52 +4138,52 @@ "defaultMessage": "!!!Downgrade your Franz Plan", "end": { "column": 3, - "line": 19 + "line": 20 }, "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "id": "feature.planSelection.fullscreen.dialog.title", "start": { "column": 15, - "line": 16 + "line": 17 } }, { "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "end": { "column": 3, - "line": 23 + "line": 24 }, "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "id": "feature.planSelection.fullscreen.dialog.message", "start": { "column": 17, - "line": 20 + "line": 21 } }, { "defaultMessage": "!!!Downgrade to Free", "end": { "column": 3, - "line": 27 + "line": 28 }, "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "id": "feature.planSelection.fullscreen.dialog.cta.downgrade", "start": { "column": 22, - "line": 24 + "line": 25 } }, { "defaultMessage": "!!!Choose Personal", "end": { "column": 3, - "line": 31 + "line": 32 }, "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "id": "feature.planSelection.fullscreen.dialog.cta.upgrade", "start": { "column": 20, - "line": 28 + "line": 29 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index f2fd7a52a..6977ec096 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -170,6 +170,7 @@ "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -369,6 +370,7 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Franz Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", @@ -413,4 +415,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.

You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} \ No newline at end of file +} diff --git a/src/i18n/messages/src/components/auth/Pricing.json b/src/i18n/messages/src/components/auth/Pricing.json index 2d09c9ebb..3f0cf4e86 100644 --- a/src/i18n/messages/src/components/auth/Pricing.json +++ b/src/i18n/messages/src/components/auth/Pricing.json @@ -64,16 +64,29 @@ "column": 3 } }, + { + "id": "pricing.trial.terms.trialWorth", + "defaultMessage": "!!!Free trial (normally {currency}{price} per month)", + "file": "src/components/auth/Pricing.js", + "start": { + "line": 35, + "column": 14 + }, + "end": { + "line": 38, + "column": 3 + } + }, { "id": "pricing.trial.error", "defaultMessage": "!!!Sorry, we could not activate your trial!", "file": "src/components/auth/Pricing.js", "start": { - "line": 35, + "line": 39, "column": 19 }, "end": { - "line": 38, + "line": 42, "column": 3 } }, @@ -82,11 +95,11 @@ "defaultMessage": "!!!Start my 14-day Franz Professional Trial", "file": "src/components/auth/Pricing.js", "start": { - "line": 39, + "line": 43, "column": 13 }, "end": { - "line": 42, + "line": 46, "column": 3 } }, @@ -95,11 +108,11 @@ "defaultMessage": "!!!Continue to Franz", "file": "src/components/auth/Pricing.js", "start": { - "line": 43, + "line": 47, "column": 11 }, "end": { - "line": 46, + "line": 50, "column": 3 } }, @@ -108,11 +121,11 @@ "defaultMessage": "!!!Franz Professional includes:", "file": "src/components/auth/Pricing.js", "start": { - "line": 47, + "line": 51, "column": 20 }, "end": { - "line": 50, + "line": 54, "column": 3 } } diff --git a/src/i18n/messages/src/features/planSelection/components/PlanItem.json b/src/i18n/messages/src/features/planSelection/components/PlanItem.json index 839686390..5a94f32ee 100644 --- a/src/i18n/messages/src/features/planSelection/components/PlanItem.json +++ b/src/i18n/messages/src/features/planSelection/components/PlanItem.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!per month", "file": "src/features/planSelection/components/PlanItem.js", "start": { - "line": 19, + "line": 15, "column": 12 }, "end": { - "line": 22, + "line": 18, "column": 3 } }, @@ -17,9 +17,22 @@ "defaultMessage": "!!!per month & user", "file": "src/features/planSelection/components/PlanItem.js", "start": { - "line": 23, + "line": 19, "column": 19 }, + "end": { + "line": 22, + "column": 3 + } + }, + { + "id": "subscription.bestValue", + "defaultMessage": "!!!Best value", + "file": "src/features/planSelection/components/PlanItem.js", + "start": { + "line": 23, + "column": 13 + }, "end": { "line": 26, "column": 3 -- cgit v1.2.3-70-g09d2 From 0b08e1e7e6a07acd21af71fd27f4c4acfa34dbba Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 16 Oct 2019 15:16:26 +0200 Subject: Add trialStatusBar & polishing --- packages/theme/src/themes/dark/index.ts | 13 +- packages/theme/src/themes/default/index.ts | 11 ++ src/actions/index.js | 2 + src/actions/payment.js | 4 + src/components/layout/AppLayout.js | 2 + src/components/ui/FeatureList.js | 3 +- src/features/planSelection/actions.js | 4 - .../planSelection/components/PlanSelection.js | 2 +- .../containers/PlanSelectionScreen.js | 13 +- src/features/planSelection/store.js | 40 +----- src/features/trialStatusBar/actions.js | 13 ++ .../trialStatusBar/components/ProgressBar.js | 46 +++++++ .../trialStatusBar/components/TrialStatusBar.js | 135 +++++++++++++++++++++ .../containers/TrialStatusBarScreen.js | 101 +++++++++++++++ src/features/trialStatusBar/index.js | 30 +++++ src/features/trialStatusBar/store.js | 72 +++++++++++ src/i18n/locales/defaultMessages.json | 125 +++++++++++++++++-- src/i18n/locales/en-US.json | 7 ++ .../messages/src/components/layout/AppLayout.json | 12 +- .../trialStatusBar/components/TrialStatusBar.json | 41 +++++++ .../containers/TrialStatusBarScreen.json | 54 +++++++++ src/stores/AppStore.js | 14 +++ src/stores/FeaturesStore.js | 2 + src/stores/PaymentStore.js | 37 ++++++ src/stores/UserStore.js | 4 +- 25 files changed, 718 insertions(+), 69 deletions(-) create mode 100644 src/features/trialStatusBar/actions.js create mode 100644 src/features/trialStatusBar/components/ProgressBar.js create mode 100644 src/features/trialStatusBar/components/TrialStatusBar.js create mode 100644 src/features/trialStatusBar/containers/TrialStatusBarScreen.js create mode 100644 src/features/trialStatusBar/index.js create mode 100644 src/features/trialStatusBar/store.js create mode 100644 src/i18n/messages/src/features/trialStatusBar/components/TrialStatusBar.json create mode 100644 src/i18n/messages/src/features/trialStatusBar/containers/TrialStatusBarScreen.json diff --git a/packages/theme/src/themes/dark/index.ts b/packages/theme/src/themes/dark/index.ts index 9a66f3463..30cc19d99 100644 --- a/packages/theme/src/themes/dark/index.ts +++ b/packages/theme/src/themes/dark/index.ts @@ -65,7 +65,7 @@ export const selectOptionItemHoverColor = selectColor; export const selectSearchColor = inputBackground; // Modal -export const colorModalOverlayBackground = color(legacyStyles.darkThemeBlack).alpha(0.5).rgb().string(); +export const colorModalOverlayBackground = color(legacyStyles.darkThemeBlack).alpha(0.8).rgb().string(); export const colorModalBackground = legacyStyles.darkThemeGrayDark; // Services @@ -146,3 +146,14 @@ export const todos = merge({}, defaultStyles.todos, { background: legacyStyles.themeGrayLight, }, }); + +// TrialStatusBar +export const trialStatusBar = merge({}, defaultStyles.trialStatusBar, { + bar: { + background: legacyStyles.darkThemeGray, + }, + progressBar: { + background: legacyStyles.darkThemeGrayLighter, + progressIndicator: legacyStyles.darkThemeGrayLightest, + }, +}); diff --git a/packages/theme/src/themes/default/index.ts b/packages/theme/src/themes/default/index.ts index 057fde72f..b484d9972 100644 --- a/packages/theme/src/themes/default/index.ts +++ b/packages/theme/src/themes/default/index.ts @@ -238,3 +238,14 @@ export const todos = { backgroundHover: styleTypes.primary.accent, }, }; + +// TrialStatusBar +export const trialStatusBar = { + bar: { + background: legacyStyles.themeGray, + }, + progressBar: { + background: legacyStyles.themeGrayLight, + progressIndicator: legacyStyles.themeGrayLighter, + }, +}; diff --git a/src/actions/index.js b/src/actions/index.js index 1c033fb96..9d3684edc 100644 --- a/src/actions/index.js +++ b/src/actions/index.js @@ -15,6 +15,7 @@ import announcements from '../features/announcements/actions'; import workspaces from '../features/workspaces/actions'; import todos from '../features/todos/actions'; import planSelection from '../features/planSelection/actions'; +import trialStatusBar from '../features/trialStatusBar/actions'; const actions = Object.assign({}, { service, @@ -35,4 +36,5 @@ export default Object.assign( { workspaces }, { todos }, { planSelection }, + { trialStatusBar }, ); diff --git a/src/actions/payment.js b/src/actions/payment.js index 2aaefc025..f61faf197 100644 --- a/src/actions/payment.js +++ b/src/actions/payment.js @@ -4,5 +4,9 @@ export default { createHostedPage: { planId: PropTypes.string.isRequired, }, + upgradeAccount: { + planId: PropTypes.string.isRequired, + onCloseWindow: PropTypes.func, + }, createDashboardUrl: {}, }; diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js index fe81b1911..9b110262a 100644 --- a/src/components/layout/AppLayout.js +++ b/src/components/layout/AppLayout.js @@ -20,6 +20,7 @@ import AppUpdateInfoBar from '../AppUpdateInfoBar'; import TrialActivationInfoBar from '../TrialActivationInfoBar'; import Todos from '../../features/todos/containers/TodosScreen'; import PlanSelection from '../../features/planSelection/containers/PlanSelectionScreen'; +import TrialStatusBar from '../../features/trialStatusBar/containers/TrialStatusBarScreen'; function createMarkup(HTMLString) { return { __html: HTMLString }; @@ -174,6 +175,7 @@ class AppLayout extends Component { {services} {children} +
diff --git a/src/components/ui/FeatureList.js b/src/components/ui/FeatureList.js index 732b40e40..7ba8b54d7 100644 --- a/src/components/ui/FeatureList.js +++ b/src/components/ui/FeatureList.js @@ -72,12 +72,13 @@ export class FeatureList extends Component { static propTypes = { className: PropTypes.string, featureClassName: PropTypes.string, - plan: PropTypes.oneOf(PLANS).isRequired, + plan: PropTypes.oneOf(PLANS), }; static defaultProps = { className: '', featureClassName: '', + plan: false, } static contextTypes = { diff --git a/src/features/planSelection/actions.js b/src/features/planSelection/actions.js index 21aa38ace..83f58bfd7 100644 --- a/src/features/planSelection/actions.js +++ b/src/features/planSelection/actions.js @@ -2,10 +2,6 @@ import PropTypes from 'prop-types'; import { createActionsFromDefinitions } from '../../actions/lib/actions'; export const planSelectionActions = createActionsFromDefinitions({ - upgradeAccount: { - planId: PropTypes.string.isRequired, - onCloseWindow: PropTypes.func.isRequired, - }, downgradeAccount: {}, hideOverlay: {}, }, PropTypes.checkPropTypes); diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js index 1a45cf035..cf4474114 100644 --- a/src/features/planSelection/components/PlanSelection.js +++ b/src/features/planSelection/components/PlanSelection.js @@ -205,7 +205,7 @@ class PlanSelection extends Component { price={plans.pro.yearly.price} currency={currency} ctaLabel={intl.formatMessage(hadSubscription ? messages.shortActionPro : messages.actionTrial)} - upgrade={() => upgradeAccount(plans.personal.yearly.id)} + upgrade={() => upgradeAccount(plans.pro.yearly.id)} className={classes.featuredPlan} perUser bestValue diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js index dff9051d8..6e8cdbf47 100644 --- a/src/features/planSelection/containers/PlanSelectionScreen.js +++ b/src/features/planSelection/containers/PlanSelectionScreen.js @@ -43,13 +43,10 @@ class PlanSelectionScreen extends Component { } upgradeAccount(planId) { - const { upgradeAccount, hideOverlay } = this.props.actions.planSelection; + const { upgradeAccount } = this.props.actions.payment; upgradeAccount({ planId, - onCloseWindow: () => { - hideOverlay(); - }, }); } @@ -63,7 +60,7 @@ class PlanSelectionScreen extends Component { const { user, features } = this.props.stores; const { plans, currency } = features.features.pricingConfig; const { activateTrial } = this.props.actions.user; - const { upgradeAccount, downgradeAccount, hideOverlay } = this.props.actions.planSelection; + const { downgradeAccount, hideOverlay } = this.props.actions.planSelection; return ( @@ -102,7 +99,7 @@ class PlanSelectionScreen extends Component { downgradeAccount(); hideOverlay(); } else { - upgradeAccount(plans.personal.yearly.id); + this.upgradeAccount(plans.personal.yearly.id); gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', 'Revoke'); } @@ -123,8 +120,10 @@ PlanSelectionScreen.wrappedComponent.propTypes = { user: PropTypes.instanceOf(UserStore).isRequired, }).isRequired, actions: PropTypes.shape({ - planSelection: PropTypes.shape({ + payment: PropTypes.shape({ upgradeAccount: PropTypes.func.isRequired, + }), + planSelection: PropTypes.shape({ downgradeAccount: PropTypes.func.isRequired, hideOverlay: PropTypes.func.isRequired, }), diff --git a/src/features/planSelection/store.js b/src/features/planSelection/store.js index e229c37e5..0d4672722 100644 --- a/src/features/planSelection/store.js +++ b/src/features/planSelection/store.js @@ -42,7 +42,6 @@ export default class PlanSelectionStore extends FeatureStore { // ACTIONS this._registerActions(createActionBindings([ - [planSelectionActions.upgradeAccount, this._upgradeAccount], [planSelectionActions.downgradeAccount, this._downgradeAccount], [planSelectionActions.hideOverlay, this._hideOverlay], ])); @@ -64,47 +63,12 @@ export default class PlanSelectionStore extends FeatureStore { @action stop() { super.stop(); debug('PlanSelectionStore::stop'); - this.reset(); this.isFeatureActive = false; } // ========== PRIVATE METHODS ========= // // Actions - - @action _upgradeAccount = ({ planId, onCloseWindow = () => null }) => { - let hostedPageURL = this.stores.features.features.subscribeURL; - - const parsedUrl = new URL(hostedPageURL); - const params = new URLSearchParams(parsedUrl.search.slice(1)); - - params.set('plan', planId); - - hostedPageURL = this.stores.user.getAuthURL(`${parsedUrl.origin}${parsedUrl.pathname}?${params.toString()}`); - - const win = new BrowserWindow({ - parent: remote.getCurrentWindow(), - modal: true, - title: '🔒 Upgrade Your Franz Account', - width: 800, - height: window.innerHeight - 100, - maxWidth: 800, - minWidth: 600, - webPreferences: { - nodeIntegration: true, - webviewTag: true, - }, - }); - win.loadURL(`file://${__dirname}/../../index.html#/payment/${encodeURIComponent(hostedPageURL)}`); - - win.on('closed', () => { - this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); - this.stores.features.featuresRequest.invalidate({ immediately: true }); - - onCloseWindow(); - }); - }; - @action _downgradeAccount = () => { downgradeUserRequest.execute(); } @@ -112,4 +76,8 @@ export default class PlanSelectionStore extends FeatureStore { @action _hideOverlay = () => { this.hideOverlay = true; } + + @action _showOverlay = () => { + this.hideOverlay = false; + } } diff --git a/src/features/trialStatusBar/actions.js b/src/features/trialStatusBar/actions.js new file mode 100644 index 000000000..38df76458 --- /dev/null +++ b/src/features/trialStatusBar/actions.js @@ -0,0 +1,13 @@ +import PropTypes from 'prop-types'; +import { createActionsFromDefinitions } from '../../actions/lib/actions'; + +export const trialStatusBarActions = createActionsFromDefinitions({ + upgradeAccount: { + planId: PropTypes.string.isRequired, + onCloseWindow: PropTypes.func.isRequired, + }, + downgradeAccount: {}, + hideOverlay: {}, +}, PropTypes.checkPropTypes); + +export default trialStatusBarActions; diff --git a/src/features/trialStatusBar/components/ProgressBar.js b/src/features/trialStatusBar/components/ProgressBar.js new file mode 100644 index 000000000..80d478d8c --- /dev/null +++ b/src/features/trialStatusBar/components/ProgressBar.js @@ -0,0 +1,46 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { observer } from 'mobx-react'; +import injectSheet from 'react-jss'; + +const styles = theme => ({ + root: { + background: theme.trialStatusBar.progressBar.background, + width: '25%', + maxWidth: 200, + height: 8, + display: 'flex', + alignItems: 'center', + borderRadius: theme.borderRadius, + overflow: 'hidden', + }, + progress: { + background: theme.trialStatusBar.progressBar.progressIndicator, + width: ({ percent }) => `${percent}%`, + height: '100%', + }, +}); + +@injectSheet(styles) @observer +class ProgressBar extends Component { + static propTypes = { + classes: PropTypes.object.isRequired, + percent: PropTypes.number.isRequired, + }; + + render() { + const { + classes, + } = this.props; + + return ( +
+
+
+ ); + } +} + +export default ProgressBar; diff --git a/src/features/trialStatusBar/components/TrialStatusBar.js b/src/features/trialStatusBar/components/TrialStatusBar.js new file mode 100644 index 000000000..b8fe4acc9 --- /dev/null +++ b/src/features/trialStatusBar/components/TrialStatusBar.js @@ -0,0 +1,135 @@ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { observer } from 'mobx-react'; +import injectSheet from 'react-jss'; +import { defineMessages, intlShape } from 'react-intl'; +import { Icon } from '@meetfranz/ui'; +import { mdiArrowRight, mdiWindowClose } from '@mdi/js'; +import classnames from 'classnames'; + +import ProgressBar from './ProgressBar'; + +const messages = defineMessages({ + restTime: { + id: 'feature.trialStatusBar.restTime', + defaultMessage: '!!!Your Free Franz {plan} Trial ends in {time}.', + }, + expired: { + id: 'feature.trialStatusBar.expired', + defaultMessage: '!!!Your free Franz {plan} Trial has expired, please upgrade your account.', + }, + cta: { + id: 'feature.trialStatusBar.cta', + defaultMessage: '!!!Upgrade now', + }, +}); + +const styles = theme => ({ + root: { + background: theme.trialStatusBar.bar.background, + width: '100%', + height: 25, + order: 10, + display: 'flex', + alignItems: 'center', + fontSize: 12, + padding: [0, 10], + justifyContent: 'flex-end', + }, + ended: { + background: theme.styleTypes.warning.accent, + color: theme.styleTypes.warning.contrast, + }, + message: { + marginLeft: 20, + }, + action: { + marginLeft: 20, + fontSize: 12, + color: theme.colorText, + textDecoration: 'underline', + display: 'flex', + + '& svg': { + margin: [1, 2, 0, 0], + }, + }, +}); + +@injectSheet(styles) @observer +class TrialStatusBar extends Component { + static propTypes = { + planName: PropTypes.string.isRequired, + percent: PropTypes.number.isRequired, + upgradeAccount: PropTypes.func.isRequired, + hideOverlay: PropTypes.func.isRequired, + trialEnd: PropTypes.string.isRequired, + hasEnded: PropTypes.bool.isRequired, + classes: PropTypes.object.isRequired, + }; + + static contextTypes = { + intl: intlShape, + }; + + render() { + const { + planName, + percent, + upgradeAccount, + hideOverlay, + trialEnd, + hasEnded, + classes, + } = this.props; + + const { intl } = this.context; + + return ( +
+ + {' '} + + {!hasEnded ? ( + intl.formatMessage(messages.restTime, { + plan: planName, + time: trialEnd, + }) + ) : ( + intl.formatMessage(messages.expired, { + plan: planName, + }) + )} + + + +
+ ); + } +} + +export default TrialStatusBar; diff --git a/src/features/trialStatusBar/containers/TrialStatusBarScreen.js b/src/features/trialStatusBar/containers/TrialStatusBarScreen.js new file mode 100644 index 000000000..eb0aafaea --- /dev/null +++ b/src/features/trialStatusBar/containers/TrialStatusBarScreen.js @@ -0,0 +1,101 @@ +import React, { Component } from 'react'; +import { observer, inject } from 'mobx-react'; +import PropTypes from 'prop-types'; +import ms from 'ms'; + +import FeaturesStore from '../../../stores/FeaturesStore'; +import UserStore from '../../../stores/UserStore'; +import TrialStatusBar from '../components/TrialStatusBar'; +import ErrorBoundary from '../../../components/util/ErrorBoundary'; +import { trialStatusBarStore } from '..'; + +@inject('stores', 'actions') @observer +class TrialStatusBarScreen extends Component { + state = { + showOverlay: true, + percent: 0, + restTime: '', + hasEnded: false, + }; + + percentInterval = null; + + componentDidMount() { + this.percentInterval = setInterval(() => { + this.calculateRestTime(); + }, ms('1m')); + + this.calculateRestTime(); + } + + componentWillUnmount() { + clearInterval(this.percentInterval); + } + + calculateRestTime() { + const { trialEndTime } = trialStatusBarStore; + const percent = Math.abs(100 - Math.abs(trialEndTime.asMilliseconds()) * 100 / ms('14d')).toFixed(2); + const restTime = trialEndTime.humanize(); + const hasEnded = trialEndTime.asMilliseconds() > 0; + + this.setState({ + percent, + restTime, + hasEnded, + }); + } + + hideOverlay() { + this.setState({ + showOverlay: false, + }); + } + + + render() { + const { + showOverlay, + percent, + restTime, + hasEnded, + } = this.state; + + if (!trialStatusBarStore || !trialStatusBarStore.isFeatureActive || !showOverlay || !trialStatusBarStore.showTrialStatusBarOverlay) { + return null; + } + + const { user } = this.props.stores; + const { upgradeAccount } = this.props.actions.payment; + + console.log('hasEnded', hasEnded); + + return ( + + upgradeAccount({ + planId: user.team.plan, + })} + hideOverlay={() => this.hideOverlay()} + hasEnded={hasEnded} + /> + + ); + } +} + +export default TrialStatusBarScreen; + +TrialStatusBarScreen.wrappedComponent.propTypes = { + stores: PropTypes.shape({ + features: PropTypes.instanceOf(FeaturesStore).isRequired, + user: PropTypes.instanceOf(UserStore).isRequired, + }).isRequired, + actions: PropTypes.shape({ + payment: PropTypes.shape({ + upgradeAccount: PropTypes.func.isRequired, + }), + }).isRequired, +}; diff --git a/src/features/trialStatusBar/index.js b/src/features/trialStatusBar/index.js new file mode 100644 index 000000000..ec84cdfd7 --- /dev/null +++ b/src/features/trialStatusBar/index.js @@ -0,0 +1,30 @@ +import { reaction } from 'mobx'; +import TrialStatusBarStore from './store'; + +const debug = require('debug')('Franz:feature:trialStatusBar'); + +export const GA_CATEGORY_TRIAL_STATUS_BAR = 'trialStatusBar'; + +export const trialStatusBarStore = new TrialStatusBarStore(); + +export default function initTrialStatusBar(stores, actions) { + stores.trialStatusBar = trialStatusBarStore; + const { features } = stores; + + // Toggle trialStatusBar feature + reaction( + () => features.features.isTrialStatusBarEnabled, + (isEnabled) => { + if (isEnabled) { + debug('Initializing `trialStatusBar` feature'); + trialStatusBarStore.start(stores, actions); + } else if (trialStatusBarStore.isFeatureActive) { + debug('Disabling `trialStatusBar` feature'); + trialStatusBarStore.stop(); + } + }, + { + fireImmediately: true, + }, + ); +} diff --git a/src/features/trialStatusBar/store.js b/src/features/trialStatusBar/store.js new file mode 100644 index 000000000..89cf32392 --- /dev/null +++ b/src/features/trialStatusBar/store.js @@ -0,0 +1,72 @@ +import { + action, + observable, + computed, +} from 'mobx'; +import moment from 'moment'; + +import { trialStatusBarActions } from './actions'; +import { FeatureStore } from '../utils/FeatureStore'; +import { createActionBindings } from '../utils/ActionBinding'; + +const debug = require('debug')('Franz:feature:trialStatusBar:store'); + +export default class TrialStatusBarStore extends FeatureStore { + @observable isFeatureActive = false; + + @observable isFeatureEnabled = false; + + @computed get showTrialStatusBarOverlay() { + if (this.isFeatureActive) { + const { team } = this.stores.user; + if (team && !this.hideOverlay) { + return team.state !== 'expired' && team.isTrial; + } + } + + return false; + } + + @computed get trialEndTime() { + if (this.isFeatureActive) { + const { team } = this.stores.user; + + if (team && !this.hideOverlay) { + return moment.duration(moment().diff(team.trialEnd)); + } + } + + return moment.duration(); + } + + // ========== PUBLIC API ========= // + + @action start(stores, actions, api) { + debug('TrialStatusBarStore::start'); + this.stores = stores; + this.actions = actions; + this.api = api; + + // ACTIONS + + this._registerActions(createActionBindings([ + [trialStatusBarActions.hideOverlay, this._hideOverlay], + ])); + + this.isFeatureActive = true; + } + + @action stop() { + super.stop(); + debug('TrialStatusBarStore::stop'); + this.isFeatureActive = false; + } + + // ========== PRIVATE METHODS ========= // + + // Actions + + @action _hideOverlay = () => { + this.hideOverlay = true; + } +} diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index eafac1f87..98f37cf8a 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -734,39 +734,39 @@ "defaultMessage": "!!!Your services have been updated.", "end": { "column": 3, - "line": 32 + "line": 33 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.servicesUpdated", "start": { "column": 19, - "line": 29 + "line": 30 } }, { "defaultMessage": "!!!Reload services", "end": { "column": 3, - "line": 36 + "line": 37 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.buttonReloadServices", "start": { "column": 24, - "line": 33 + "line": 34 } }, { "defaultMessage": "!!!Could not load services and user information", "end": { "column": 3, - "line": 40 + "line": 41 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.requiredRequestsFailed", "start": { "column": 26, - "line": 37 + "line": 38 } } ], @@ -3915,39 +3915,39 @@ "defaultMessage": "!!!per month", "end": { "column": 3, - "line": 22 + "line": 18 }, "file": "src/features/planSelection/components/PlanItem.js", "id": "subscription.interval.perMonth", "start": { "column": 12, - "line": 19 + "line": 15 } }, { "defaultMessage": "!!!per month & user", "end": { "column": 3, - "line": 26 + "line": 22 }, "file": "src/features/planSelection/components/PlanItem.js", "id": "subscription.interval.perMonthPerUser", "start": { "column": 19, - "line": 23 + "line": 19 } }, { "defaultMessage": "!!!Best value", "end": { "column": 3, - "line": 30 + "line": 26 }, "file": "src/features/planSelection/components/PlanItem.js", "id": "subscription.bestValue", "start": { "column": 13, - "line": 27 + "line": 23 } } ], @@ -4378,6 +4378,107 @@ ], "path": "src/features/todos/components/TodosWebview.json" }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your Free Franz {plan} Trial ends in {time}.", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/features/trialStatusBar/components/TrialStatusBar.js", + "id": "feature.trialStatusBar.restTime", + "start": { + "column": 12, + "line": 13 + } + }, + { + "defaultMessage": "!!!Your free Franz {plan} Trial has expired, please upgrade your account.", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/features/trialStatusBar/components/TrialStatusBar.js", + "id": "feature.trialStatusBar.expired", + "start": { + "column": 11, + "line": 17 + } + }, + { + "defaultMessage": "!!!Upgrade now", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/features/trialStatusBar/components/TrialStatusBar.js", + "id": "feature.trialStatusBar.cta", + "start": { + "column": 7, + "line": 21 + } + } + ], + "path": "src/features/trialStatusBar/components/TrialStatusBar.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Downgrade your Franz Plan", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "id": "feature.trialStatusBar.fullscreen.dialog.title", + "start": { + "column": 15, + "line": 16 + } + }, + { + "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "id": "feature.trialStatusBar.fullscreen.dialog.message", + "start": { + "column": 17, + "line": 20 + } + }, + { + "defaultMessage": "!!!Downgrade to Free", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "id": "feature.trialStatusBar.fullscreen.dialog.cta.downgrade", + "start": { + "column": 22, + "line": 24 + } + }, + { + "defaultMessage": "!!!Choose Personal", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "id": "feature.trialStatusBar.fullscreen.dialog.cta.upgrade", + "start": { + "column": 20, + "line": 28 + } + } + ], + "path": "src/features/trialStatusBar/containers/TrialStatusBarScreen.json" + }, { "descriptors": [ { diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 6977ec096..1ba91bdfa 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -35,6 +35,13 @@ "feature.todos.premium.info": "Franz Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Franz {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Franz Plan", + "feature.trialStatusBar.restTime": "Your Free Franz {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Franz online services", "global.franzProRequired": "Franz Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json index 22f11cedd..95da24042 100644 --- a/src/i18n/messages/src/components/layout/AppLayout.json +++ b/src/i18n/messages/src/components/layout/AppLayout.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Your services have been updated.", "file": "src/components/layout/AppLayout.js", "start": { - "line": 29, + "line": 30, "column": 19 }, "end": { - "line": 32, + "line": 33, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!Reload services", "file": "src/components/layout/AppLayout.js", "start": { - "line": 33, + "line": 34, "column": 24 }, "end": { - "line": 36, + "line": 37, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Could not load services and user information", "file": "src/components/layout/AppLayout.js", "start": { - "line": 37, + "line": 38, "column": 26 }, "end": { - "line": 40, + "line": 41, "column": 3 } } diff --git a/src/i18n/messages/src/features/trialStatusBar/components/TrialStatusBar.json b/src/i18n/messages/src/features/trialStatusBar/components/TrialStatusBar.json new file mode 100644 index 000000000..bf211a016 --- /dev/null +++ b/src/i18n/messages/src/features/trialStatusBar/components/TrialStatusBar.json @@ -0,0 +1,41 @@ +[ + { + "id": "feature.trialStatusBar.restTime", + "defaultMessage": "!!!Your Free Franz {plan} Trial ends in {time}.", + "file": "src/features/trialStatusBar/components/TrialStatusBar.js", + "start": { + "line": 13, + "column": 12 + }, + "end": { + "line": 16, + "column": 3 + } + }, + { + "id": "feature.trialStatusBar.expired", + "defaultMessage": "!!!Your free Franz {plan} Trial has expired, please upgrade your account.", + "file": "src/features/trialStatusBar/components/TrialStatusBar.js", + "start": { + "line": 17, + "column": 11 + }, + "end": { + "line": 20, + "column": 3 + } + }, + { + "id": "feature.trialStatusBar.cta", + "defaultMessage": "!!!Upgrade now", + "file": "src/features/trialStatusBar/components/TrialStatusBar.js", + "start": { + "line": 21, + "column": 7 + }, + "end": { + "line": 24, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/i18n/messages/src/features/trialStatusBar/containers/TrialStatusBarScreen.json b/src/i18n/messages/src/features/trialStatusBar/containers/TrialStatusBarScreen.json new file mode 100644 index 000000000..306cd0fee --- /dev/null +++ b/src/i18n/messages/src/features/trialStatusBar/containers/TrialStatusBarScreen.json @@ -0,0 +1,54 @@ +[ + { + "id": "feature.trialStatusBar.fullscreen.dialog.title", + "defaultMessage": "!!!Downgrade your Franz Plan", + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "start": { + "line": 16, + "column": 15 + }, + "end": { + "line": 19, + "column": 3 + } + }, + { + "id": "feature.trialStatusBar.fullscreen.dialog.message", + "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "start": { + "line": 20, + "column": 17 + }, + "end": { + "line": 23, + "column": 3 + } + }, + { + "id": "feature.trialStatusBar.fullscreen.dialog.cta.downgrade", + "defaultMessage": "!!!Downgrade to Free", + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "start": { + "line": 24, + "column": 22 + }, + "end": { + "line": 27, + "column": 3 + } + }, + { + "id": "feature.trialStatusBar.fullscreen.dialog.cta.upgrade", + "defaultMessage": "!!!Choose Personal", + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "start": { + "line": 28, + "column": 20 + }, + "end": { + "line": 31, + "column": 3 + } + } +] \ No newline at end of file diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index f102fc370..329c43f32 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -81,6 +81,8 @@ export default class AppStore extends Store { dictionaries = []; + fetchDataInterval = null; + constructor(...args) { super(...args); @@ -102,6 +104,7 @@ export default class AppStore extends Store { this._setLocale.bind(this), this._muteAppHandler.bind(this), this._handleFullScreen.bind(this), + this._handleLogout.bind(this), ]); } @@ -129,6 +132,11 @@ export default class AppStore extends Store { this._systemDND(); setInterval(() => this._systemDND(), ms('5s')); + this.fetchDataInterval = setInterval(() => { + this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); + this.stores.features.featuresRequest.invalidate({ immediately: true }); + }, ms('10s')); + // Check for updates once every 4 hours setInterval(() => this._checkForUpdates(), CHECK_INTERVAL); // Check for an update in 30s (need a delay to prevent Squirrel Installer lock file issues) @@ -430,6 +438,12 @@ export default class AppStore extends Store { } } + _handleLogout() { + if (!this.stores.user.isLoggedIn) { + clearInterval(this.fetchDataInterval); + } + } + // Helpers _appStartsCounter() { this.actions.settings.update({ diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js index bffcb01bc..5d379fd3e 100644 --- a/src/stores/FeaturesStore.js +++ b/src/stores/FeaturesStore.js @@ -20,6 +20,7 @@ import serviceLimit from '../features/serviceLimit'; import communityRecipes from '../features/communityRecipes'; import todos from '../features/todos'; import planSelection from '../features/planSelection'; +import trialStatusBar from '../features/trialStatusBar'; import { DEFAULT_FEATURES_CONFIG } from '../config'; @@ -83,5 +84,6 @@ export default class FeaturesStore extends Store { communityRecipes(this.stores, this.actions); todos(this.stores, this.actions); planSelection(this.stores, this.actions); + trialStatusBar(this.stores, this.actions); } } diff --git a/src/stores/PaymentStore.js b/src/stores/PaymentStore.js index d4de476c8..b90e8f006 100644 --- a/src/stores/PaymentStore.js +++ b/src/stores/PaymentStore.js @@ -1,10 +1,13 @@ import { action, observable, computed } from 'mobx'; +import { remote } from 'electron'; import Store from './lib/Store'; import CachedRequest from './lib/CachedRequest'; import Request from './lib/Request'; import { gaEvent } from '../lib/analytics'; +const { BrowserWindow } = remote; + export default class PaymentStore extends Store { @observable plansRequest = new CachedRequest(this.api.payment, 'plans'); @@ -14,6 +17,7 @@ export default class PaymentStore extends Store { super(...args); this.actions.payment.createHostedPage.listen(this._createHostedPage.bind(this)); + this.actions.payment.upgradeAccount.listen(this._upgradeAccount.bind(this)); } @computed get plan() { @@ -30,4 +34,37 @@ export default class PaymentStore extends Store { return request; } + + @action _upgradeAccount({ planId, onCloseWindow = () => null }) { + let hostedPageURL = this.stores.features.features.subscribeURL; + + const parsedUrl = new URL(hostedPageURL); + const params = new URLSearchParams(parsedUrl.search.slice(1)); + + params.set('plan', planId); + + hostedPageURL = this.stores.user.getAuthURL(`${parsedUrl.origin}${parsedUrl.pathname}?${params.toString()}`); + + const win = new BrowserWindow({ + parent: remote.getCurrentWindow(), + modal: true, + title: '🔒 Upgrade Your Franz Account', + width: 800, + height: window.innerHeight - 100, + maxWidth: 800, + minWidth: 600, + webPreferences: { + nodeIntegration: true, + webviewTag: true, + }, + }); + win.loadURL(`file://${__dirname}/../index.html#/payment/${encodeURIComponent(hostedPageURL)}`); + + win.on('closed', () => { + this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); + this.stores.features.featuresRequest.invalidate({ immediately: true }); + + onCloseWindow(); + }); + } } diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index b652098f9..735e8f886 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js @@ -77,6 +77,8 @@ export default class UserStore extends Store { @observable logoutReason = null; + fetchUserInfoInterval = null; + constructor(...args) { super(...args); @@ -161,7 +163,7 @@ export default class UserStore extends Store { } @computed get isPremiumOverride() { - return ((!this.team || !this.team.plan) && this.isPremium) || (this.team.state === 'expired' && this.isPremium); + return ((!this.team || !this.team.plan) && this.isPremium) || (this.team && this.team.state === 'expired' && this.isPremium); } @computed get isPersonal() { -- cgit v1.2.3-70-g09d2 From fad0c62765b697e2a973368ff4cca862f99e70c9 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 16 Oct 2019 15:29:19 +0200 Subject: fix linting issues --- src/features/planSelection/store.js | 15 --------------- src/features/trialStatusBar/components/ProgressBar.js | 1 - 2 files changed, 16 deletions(-) diff --git a/src/features/planSelection/store.js b/src/features/planSelection/store.js index 0d4672722..8622d4e5a 100644 --- a/src/features/planSelection/store.js +++ b/src/features/planSelection/store.js @@ -3,18 +3,14 @@ import { observable, computed, } from 'mobx'; -import { remote } from 'electron'; import { planSelectionActions } from './actions'; import { FeatureStore } from '../utils/FeatureStore'; -// import { createReactions } from '../../stores/lib/Reaction'; import { createActionBindings } from '../utils/ActionBinding'; import { downgradeUserRequest } from './api'; const debug = require('debug')('Franz:feature:planSelection:store'); -const { BrowserWindow } = remote; - export default class PlanSelectionStore extends FeatureStore { @observable isFeatureEnabled = false; @@ -46,17 +42,6 @@ export default class PlanSelectionStore extends FeatureStore { [planSelectionActions.hideOverlay, this._hideOverlay], ])); - // REACTIONS - - // this._allReactions = createReactions([ - // this._setFeatureEnabledReaction, - // this._updateTodosConfig, - // this._firstLaunchReaction, - // this._routeCheckReaction, - // ]); - - // this._registerReactions(this._allReactions); - this.isFeatureActive = true; } diff --git a/src/features/trialStatusBar/components/ProgressBar.js b/src/features/trialStatusBar/components/ProgressBar.js index 80d478d8c..41b74d396 100644 --- a/src/features/trialStatusBar/components/ProgressBar.js +++ b/src/features/trialStatusBar/components/ProgressBar.js @@ -25,7 +25,6 @@ const styles = theme => ({ class ProgressBar extends Component { static propTypes = { classes: PropTypes.object.isRequired, - percent: PropTypes.number.isRequired, }; render() { -- cgit v1.2.3-70-g09d2 From 55f833c6e5cdbc9679795699433065afb7046d5b Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 16 Oct 2019 16:13:52 +0200 Subject: Update text --- src/i18n/locales/en-US.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 1ba91bdfa..16f4bff46 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -2,12 +2,12 @@ "app.errorHandler.action": "Reload", "app.errorHandler.headline": "Something went wrong", "feature.announcements.changelog.headline": "Changes in Franz {version}", - "feature.delayApp.headline": "Please purchase a Franz Supporter License to skip waiting", + "feature.delayApp.headline": "Upgrade your Franz plan to skip the wait", "feature.delayApp.text": "Franz will continue in {seconds} seconds.", "feature.delayApp.trial.action": "Yes, I want the free 14 day trial of Franz Professional", "feature.delayApp.trial.actionShort": "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline": "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action": "Get a Franz Supporter License", + "feature.delayApp.trial.headline": "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action": "Upgrade Franz", "feature.delayApp.upgrade.actionShort": "Upgrade account", "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", "feature.planSelection.cta.stayOnFree": "Stay on Free", -- cgit v1.2.3-70-g09d2 From 8c194bb9c5423fb9b44d11609dae72ac8497eb85 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 16 Oct 2019 16:54:59 +0200 Subject: add space --- src/components/settings/account/AccountDashboard.js | 1 + src/i18n/locales/en-US.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index 9a1b31d0f..776a8fd08 100644 --- a/src/components/settings/account/AccountDashboard.js +++ b/src/components/settings/account/AccountDashboard.js @@ -218,6 +218,7 @@ class AccountDashboard extends Component {

Franz + {' '} {isPremiumOverrideUser ? 'Premium' : planName} {user.team.isTrial && ( <> diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 16f4bff46..ce35c29a8 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -422,4 +422,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.

You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 066dd3639676c07ed61f9d8eb3f1a1f85cae9db4 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 16 Oct 2019 22:05:07 +0200 Subject: polishing --- src/features/delayApp/Component.js | 2 +- src/i18n/messages/src/features/delayApp/Component.json | 2 +- src/styles/settings.scss | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/features/delayApp/Component.js b/src/features/delayApp/Component.js index 6344edb89..fcc27c75c 100644 --- a/src/features/delayApp/Component.js +++ b/src/features/delayApp/Component.js @@ -24,7 +24,7 @@ const messages = defineMessages({ }, action: { id: 'feature.delayApp.upgrade.action', - defaultMessage: '!!!Get a Franz Supporter License', + defaultMessage: '!!!Upgrade Franz', }, actionTrial: { id: 'feature.delayApp.trial.action', diff --git a/src/i18n/messages/src/features/delayApp/Component.json b/src/i18n/messages/src/features/delayApp/Component.json index 0d345a47b..f6bf9369a 100644 --- a/src/i18n/messages/src/features/delayApp/Component.json +++ b/src/i18n/messages/src/features/delayApp/Component.json @@ -27,7 +27,7 @@ }, { "id": "feature.delayApp.upgrade.action", - "defaultMessage": "!!!Get a Franz Supporter License", + "defaultMessage": "!!!Upgrade Franz", "file": "src/features/delayApp/Component.js", "start": { "line": 25, diff --git a/src/styles/settings.scss b/src/styles/settings.scss index bb95ab5d2..150d58e76 100644 --- a/src/styles/settings.scss +++ b/src/styles/settings.scss @@ -366,7 +366,7 @@ .account__subscription-button { margin-left: auto; } .franz-form__button { white-space: nowrap; } div { height: auto; } - [data-type="franz-button"] div { height: 100% } + [data-type="franz-button"] div { height: 20px } .invoices { width: 100%; -- cgit v1.2.3-70-g09d2 From c8457a6e48a384c8ae2f2d206558759bc12f519c Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 16 Oct 2019 22:05:13 +0200 Subject: fix interval time --- src/stores/AppStore.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 329c43f32..ca5cad836 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -135,7 +135,8 @@ export default class AppStore extends Store { this.fetchDataInterval = setInterval(() => { this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); this.stores.features.featuresRequest.invalidate({ immediately: true }); - }, ms('10s')); + this.stores.news.latestNewsRequest.invalidate({ immediately: true }); + }, ms('10m')); // Check for updates once every 4 hours setInterval(() => this._checkForUpdates(), CHECK_INTERVAL); -- cgit v1.2.3-70-g09d2 From 800ef0bad64d21e2f4c93221f984dafe6fee7bec Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 16 Oct 2019 22:09:50 +0200 Subject: Update defaultMessages.json --- src/i18n/locales/defaultMessages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 98f37cf8a..cd876c0ea 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3868,7 +3868,7 @@ } }, { - "defaultMessage": "!!!Get a Franz Supporter License", + "defaultMessage": "!!!Upgrade Franz", "end": { "column": 3, "line": 28 -- cgit v1.2.3-70-g09d2 From 86b692b8e6c9710f216b17a04d96a815a8715387 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 16 Oct 2019 22:24:40 +0200 Subject: polishing --- src/components/settings/account/AccountDashboard.js | 8 +++++--- src/containers/settings/AccountScreen.js | 7 +++++-- src/features/trialStatusBar/containers/TrialStatusBarScreen.js | 2 -- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index 776a8fd08..b4ff072ab 100644 --- a/src/components/settings/account/AccountDashboard.js +++ b/src/components/settings/account/AccountDashboard.js @@ -242,14 +242,16 @@ class AccountDashboard extends Component {

)} -
- {!isProUser && ( + {!isProUser && ( +
+ )} +
diff --git a/src/containers/auth/PricingScreen.js b/src/containers/auth/PricingScreen.js index ff378bd8b..55811ed23 100644 --- a/src/containers/auth/PricingScreen.js +++ b/src/containers/auth/PricingScreen.js @@ -20,14 +20,19 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend } = this.props; const { activateTrialRequest } = stores.user; - const { defaultTrialPlan } = stores.features.features; + const { defaultTrialPlan, canSkipTrial } = stores.features.anonymousFeatures; - actions.user.activateTrial({ planId: defaultTrialPlan }); - await activateTrialRequest._promise; - - if (!activateTrialRequest.isError) { + if (!canSkipTrial) { stores.router.push('/'); stores.user.hasCompletedSignup = true; + } else { + actions.user.activateTrial({ planId: defaultTrialPlan }); + await activateTrialRequest._promise; + + if (!activateTrialRequest.isError) { + stores.router.push('/'); + stores.user.hasCompletedSignup = true; + } } } @@ -43,7 +48,7 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend const { pricingConfig } = features; let currency = '$'; - let price = '5.99'; + let price = 5.99; if (pricingConfig) { ({ currency } = pricingConfig); ({ price } = pricingConfig.plans.pro.yearly); diff --git a/src/containers/auth/SignupScreen.js b/src/containers/auth/SignupScreen.js index efc7ea4c1..f93498be2 100644 --- a/src/containers/auth/SignupScreen.js +++ b/src/containers/auth/SignupScreen.js @@ -4,6 +4,7 @@ import { inject, observer } from 'mobx-react'; import Signup from '../../components/auth/Signup'; import UserStore from '../../stores/UserStore'; +import FeaturesStore from '../../stores/FeaturesStore'; import { globalError as globalErrorPropType } from '../../prop-types'; @@ -12,11 +13,27 @@ export default @inject('stores', 'actions') @observer class SignupScreen extends error: globalErrorPropType.isRequired, }; + onSignup(values) { + const { actions, stores } = this.props; + + const { canSkipTrial, defaultTrialPlan, pricingConfig } = stores.features.anonymousFeatures; + + if (!canSkipTrial) { + Object.assign(values, { + plan: defaultTrialPlan, + currency: pricingConfig.currencyID, + }); + } + + actions.user.signup(values); + } + render() { - const { actions, stores, error } = this.props; + const { stores, error } = this.props; + return ( this.onSignup(values)} isSubmitting={stores.user.signupRequest.isExecuting} loginRoute={stores.user.loginRoute} error={error} @@ -33,5 +50,6 @@ SignupScreen.wrappedComponent.propTypes = { }).isRequired, stores: PropTypes.shape({ user: PropTypes.instanceOf(UserStore).isRequired, + features: PropTypes.instanceOf(FeaturesStore).isRequired, }).isRequired, }; diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index cd876c0ea..e46c69d67 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -417,133 +417,185 @@ { "descriptors": [ { - "defaultMessage": "!!!Franz Professional", + "defaultMessage": "!!!Hi {name}, welcome to Franz", "end": { "column": 3, "line": 18 }, "file": "src/components/auth/Pricing.js", - "id": "pricing.trial.headline", + "id": "pricing.trial.headline.pro", "start": { "column": 12, "line": 15 } }, { - "defaultMessage": "!!!Here's a special welcome for you:", + "defaultMessage": "!!!We have a special treat for you.", "end": { "column": 3, "line": 22 }, "file": "src/components/auth/Pricing.js", + "id": "pricing.trial.intro.specialTreat", + "start": { + "column": 16, + "line": 19 + } + }, + { + "defaultMessage": "!!!Try out the full Franz Professional experience completely free for 14 days.", + "end": { + "column": 3, + "line": 26 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.trial.intro.tryPro", + "start": { + "column": 10, + "line": 23 + } + }, + { + "defaultMessage": "!!!Happy messaging,", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.trial.intro.happyMessaging", + "start": { + "column": 18, + "line": 27 + } + }, + { + "defaultMessage": "!!!Here's a special welcome for you:", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/auth/Pricing.js", "id": "pricing.trial.subheadline", "start": { "column": 17, - "line": 19 + "line": 31 } }, { "defaultMessage": "!!!No strings attached", "end": { "column": 3, - "line": 26 + "line": 38 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.headline", "start": { "column": 29, - "line": 23 + "line": 35 } }, { "defaultMessage": "!!!No credit card required", "end": { "column": 3, - "line": 30 + "line": 42 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.noCreditCard", "start": { "column": 16, - "line": 27 + "line": 39 } }, { "defaultMessage": "!!!Your free trial ends automatically after 14 days", "end": { "column": 3, - "line": 34 + "line": 46 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.automaticTrialEnd", "start": { "column": 21, - "line": 31 + "line": 43 } }, { "defaultMessage": "!!!Free trial (normally {currency}{price} per month)", "end": { "column": 3, - "line": 38 + "line": 50 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.trialWorth", "start": { "column": 14, - "line": 35 + "line": 47 } }, { "defaultMessage": "!!!Sorry, we could not activate your trial!", "end": { "column": 3, - "line": 42 + "line": 54 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.error", "start": { "column": 19, - "line": 39 + "line": 51 } }, { "defaultMessage": "!!!Start my 14-day Franz Professional Trial", "end": { "column": 3, - "line": 46 + "line": 58 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.cta.accept", "start": { "column": 13, - "line": 43 + "line": 55 + } + }, + { + "defaultMessage": "!!!Start using Franz", + "end": { + "column": 3, + "line": 62 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.trial.cta.start", + "start": { + "column": 12, + "line": 59 } }, { "defaultMessage": "!!!Continue to Franz", "end": { "column": 3, - "line": 50 + "line": 66 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.cta.skip", "start": { "column": 11, - "line": 47 + "line": 63 } }, { "defaultMessage": "!!!Franz Professional includes:", "end": { "column": 3, - "line": 54 + "line": 70 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.features.headline", "start": { "column": 20, - "line": 51 + "line": 67 } } ], @@ -3956,7 +4008,7 @@ { "descriptors": [ { - "defaultMessage": "!!!Welcome back, {name}", + "defaultMessage": "!!!Are you ready to choose, {name}", "end": { "column": 3, "line": 20 diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 8af42554b..6b0aebb13 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -170,9 +170,13 @@ "pricing.plan.pro-yearly": "Professional Yearly", "pricing.trial.cta.accept": "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip": "Continue to Franz", + "pricing.trial.cta.start": "Start using Franz", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Franz Professional includes:", - "pricing.trial.headline": "Franz Professional", + "pricing.trial.headline.pro": "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.subheadline": "Here's a special welcome for you:", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", diff --git a/src/i18n/messages/src/components/auth/Pricing.json b/src/i18n/messages/src/components/auth/Pricing.json index 3f0cf4e86..6db39148c 100644 --- a/src/i18n/messages/src/components/auth/Pricing.json +++ b/src/i18n/messages/src/components/auth/Pricing.json @@ -1,7 +1,7 @@ [ { - "id": "pricing.trial.headline", - "defaultMessage": "!!!Franz Professional", + "id": "pricing.trial.headline.pro", + "defaultMessage": "!!!Hi {name}, welcome to Franz", "file": "src/components/auth/Pricing.js", "start": { "line": 15, @@ -13,28 +13,54 @@ } }, { - "id": "pricing.trial.subheadline", - "defaultMessage": "!!!Here's a special welcome for you:", + "id": "pricing.trial.intro.specialTreat", + "defaultMessage": "!!!We have a special treat for you.", "file": "src/components/auth/Pricing.js", "start": { "line": 19, - "column": 17 + "column": 16 }, "end": { "line": 22, "column": 3 } }, + { + "id": "pricing.trial.intro.tryPro", + "defaultMessage": "!!!Enjoy the full Franz Professional experience completely free for 14 days.", + "file": "src/components/auth/Pricing.js", + "start": { + "line": 23, + "column": 10 + }, + "end": { + "line": 26, + "column": 3 + } + }, + { + "id": "pricing.trial.intro.happyMessaging", + "defaultMessage": "!!!Happy messaging,", + "file": "src/components/auth/Pricing.js", + "start": { + "line": 27, + "column": 18 + }, + "end": { + "line": 30, + "column": 3 + } + }, { "id": "pricing.trial.terms.headline", "defaultMessage": "!!!No strings attached", "file": "src/components/auth/Pricing.js", "start": { - "line": 23, + "line": 31, "column": 29 }, "end": { - "line": 26, + "line": 34, "column": 3 } }, @@ -43,11 +69,11 @@ "defaultMessage": "!!!No credit card required", "file": "src/components/auth/Pricing.js", "start": { - "line": 27, + "line": 35, "column": 16 }, "end": { - "line": 30, + "line": 38, "column": 3 } }, @@ -56,11 +82,11 @@ "defaultMessage": "!!!Your free trial ends automatically after 14 days", "file": "src/components/auth/Pricing.js", "start": { - "line": 31, + "line": 39, "column": 21 }, "end": { - "line": 34, + "line": 42, "column": 3 } }, @@ -69,11 +95,11 @@ "defaultMessage": "!!!Free trial (normally {currency}{price} per month)", "file": "src/components/auth/Pricing.js", "start": { - "line": 35, + "line": 43, "column": 14 }, "end": { - "line": 38, + "line": 46, "column": 3 } }, @@ -82,11 +108,11 @@ "defaultMessage": "!!!Sorry, we could not activate your trial!", "file": "src/components/auth/Pricing.js", "start": { - "line": 39, + "line": 47, "column": 19 }, "end": { - "line": 42, + "line": 50, "column": 3 } }, @@ -95,11 +121,24 @@ "defaultMessage": "!!!Start my 14-day Franz Professional Trial", "file": "src/components/auth/Pricing.js", "start": { - "line": 43, + "line": 51, "column": 13 }, "end": { - "line": 46, + "line": 54, + "column": 3 + } + }, + { + "id": "pricing.trial.cta.start", + "defaultMessage": "!!!Start using Franz", + "file": "src/components/auth/Pricing.js", + "start": { + "line": 55, + "column": 12 + }, + "end": { + "line": 58, "column": 3 } }, @@ -108,11 +147,11 @@ "defaultMessage": "!!!Continue to Franz", "file": "src/components/auth/Pricing.js", "start": { - "line": 47, + "line": 59, "column": 11 }, "end": { - "line": 50, + "line": 62, "column": 3 } }, @@ -121,11 +160,11 @@ "defaultMessage": "!!!Franz Professional includes:", "file": "src/components/auth/Pricing.js", "start": { - "line": 51, + "line": 63, "column": 20 }, "end": { - "line": 54, + "line": 66, "column": 3 } } diff --git a/src/stores/FeaturesStore.js b/src/stores/FeaturesStore.js index 5d379fd3e..adbd401b4 100644 --- a/src/stores/FeaturesStore.js +++ b/src/stores/FeaturesStore.js @@ -67,6 +67,7 @@ export default class FeaturesStore extends Store { if (this.stores.user.isLoggedIn) { this.featuresRequest.invalidate({ immediately: true }); } else { + this.defaultFeaturesRequest.execute(); this.defaultFeaturesRequest.invalidate({ immediately: true }); } } diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index 735e8f886..297ea1121 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js @@ -205,7 +205,7 @@ export default class UserStore extends Store { } @action async _signup({ - firstname, lastname, email, password, accountType, company, + firstname, lastname, email, password, accountType, company, plan, currency, }) { const authToken = await this.signupRequest.execute({ firstname, @@ -215,6 +215,8 @@ export default class UserStore extends Store { accountType, company, locale: this.stores.app.locale, + plan, + currency, }); this.hasCompletedSignup = false; -- cgit v1.2.3-70-g09d2 From 501790b55625a59831e369ed263f14c72164fa70 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Thu, 17 Oct 2019 14:14:24 +0200 Subject: update strings --- src/i18n/locales/defaultMessages.json | 51 +++++++++++++---------------------- src/i18n/locales/en-US.json | 3 +-- 2 files changed, 20 insertions(+), 34 deletions(-) diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index e46c69d67..e283614d2 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -443,7 +443,7 @@ } }, { - "defaultMessage": "!!!Try out the full Franz Professional experience completely free for 14 days.", + "defaultMessage": "!!!Enjoy the full Franz Professional experience completely free for 14 days.", "end": { "column": 3, "line": 26 @@ -468,134 +468,121 @@ "line": 27 } }, - { - "defaultMessage": "!!!Here's a special welcome for you:", - "end": { - "column": 3, - "line": 34 - }, - "file": "src/components/auth/Pricing.js", - "id": "pricing.trial.subheadline", - "start": { - "column": 17, - "line": 31 - } - }, { "defaultMessage": "!!!No strings attached", "end": { "column": 3, - "line": 38 + "line": 34 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.headline", "start": { "column": 29, - "line": 35 + "line": 31 } }, { "defaultMessage": "!!!No credit card required", "end": { "column": 3, - "line": 42 + "line": 38 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.noCreditCard", "start": { "column": 16, - "line": 39 + "line": 35 } }, { "defaultMessage": "!!!Your free trial ends automatically after 14 days", "end": { "column": 3, - "line": 46 + "line": 42 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.automaticTrialEnd", "start": { "column": 21, - "line": 43 + "line": 39 } }, { "defaultMessage": "!!!Free trial (normally {currency}{price} per month)", "end": { "column": 3, - "line": 50 + "line": 46 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.trialWorth", "start": { "column": 14, - "line": 47 + "line": 43 } }, { "defaultMessage": "!!!Sorry, we could not activate your trial!", "end": { "column": 3, - "line": 54 + "line": 50 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.error", "start": { "column": 19, - "line": 51 + "line": 47 } }, { "defaultMessage": "!!!Start my 14-day Franz Professional Trial", "end": { "column": 3, - "line": 58 + "line": 54 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.cta.accept", "start": { "column": 13, - "line": 55 + "line": 51 } }, { "defaultMessage": "!!!Start using Franz", "end": { "column": 3, - "line": 62 + "line": 58 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.cta.start", "start": { "column": 12, - "line": 59 + "line": 55 } }, { "defaultMessage": "!!!Continue to Franz", "end": { "column": 3, - "line": 66 + "line": 62 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.cta.skip", "start": { "column": 11, - "line": 63 + "line": 59 } }, { "defaultMessage": "!!!Franz Professional includes:", "end": { "column": 3, - "line": 70 + "line": 66 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.features.headline", "start": { "column": 20, - "line": 67 + "line": 63 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 6b0aebb13..8bef09d4d 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -177,7 +177,6 @@ "pricing.trial.intro.happyMessaging": "Happy messaging,", "pricing.trial.intro.specialTreat": "We have a special treat for you.", "pricing.trial.intro.tryPro": "Enjoy the full Franz Professional experience completely free for 14 days.", - "pricing.trial.subheadline": "Here's a special welcome for you:", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", @@ -426,4 +425,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.

You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file -- cgit v1.2.3-70-g09d2 From a220bcde9585ca611f591622c675b2e8b7ab6924 Mon Sep 17 00:00:00 2001 From: FranzBot Date: Thu, 17 Oct 2019 12:20:31 +0000 Subject: Automatic i18n update (i18n.meetfranz.com) --- src/i18n/locales/ca.json | 15 +++++++++------ src/i18n/locales/cs.json | 15 +++++++++------ src/i18n/locales/de.json | 15 +++++++++------ src/i18n/locales/el.json | 15 +++++++++------ src/i18n/locales/es.json | 15 +++++++++------ src/i18n/locales/fr.json | 15 +++++++++------ src/i18n/locales/ga.json | 15 +++++++++------ src/i18n/locales/hr.json | 15 +++++++++------ src/i18n/locales/hu.json | 15 +++++++++------ src/i18n/locales/id.json | 15 +++++++++------ src/i18n/locales/it.json | 15 +++++++++------ src/i18n/locales/ja.json | 15 +++++++++------ src/i18n/locales/ka.json | 15 +++++++++------ src/i18n/locales/nl-BE.json | 15 +++++++++------ src/i18n/locales/nl.json | 15 +++++++++------ src/i18n/locales/pl.json | 15 +++++++++------ src/i18n/locales/pt-BR.json | 15 +++++++++------ src/i18n/locales/pt.json | 15 +++++++++------ src/i18n/locales/ru.json | 15 +++++++++------ src/i18n/locales/sk.json | 15 +++++++++------ src/i18n/locales/sr.json | 15 +++++++++------ src/i18n/locales/tr.json | 15 +++++++++------ src/i18n/locales/uk.json | 15 +++++++++------ src/i18n/locales/zh-TW.json | 15 +++++++++------ 24 files changed, 216 insertions(+), 144 deletions(-) diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 1495f2d44..79deb7c87 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Recarrega", "app.errorHandler.headline" : "Quelcom ha anat malament", "feature.announcements.changelog.headline" : "Canvis en Franz {version}", - "feature.delayApp.headline" : "Si us plau, compra una llicència de suport per a Franz per saltar l'espera", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz continuarà en {seconds} segons", "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Aconsegueix una llicència de suport per a Franz", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Millorar el teu compte", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index 4064372c4..658c813e6 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Obnovit", "app.errorHandler.headline" : "Něco se pokazilo", "feature.announcements.changelog.headline" : "Změny ve Franz {version}", - "feature.delayApp.headline" : "Kup si Franz Supporter licenci a nebudeš už muset čekat", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz bude pokračovat v {seconds} sekundách.", "feature.delayApp.trial.action" : "Ano, chci vyzkoušet Franz Professional na 14 dní zdarma.", "feature.delayApp.trial.actionShort" : "Aktivovat zdarma zkušební verzi Franz Professional", - "feature.delayApp.trial.headline" : "Získejte zdarma zkušební verzi Franz Profesionnal na 14 dní a už nečekejte", - "feature.delayApp.upgrade.action" : "Podpoř Franz a získej Supporter licenci", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Vylepši si svůj účet", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Přidali jste {amount} z {limit} služeb, které jsou součástí vašeho předplatného. Pro přidání dalších služeb proveďte upgrade vašeho účtu.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 589d7fa4d..74579592a 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Neu laden", "app.errorHandler.headline" : "Es ist ein Fehler aufgetreten", "feature.announcements.changelog.headline" : "Was ist neu in Franz {version}", - "feature.delayApp.headline" : "Erspare dir das Warten mit Franz Premium!", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "In {seconds} Sekunden geht's weiter!", "feature.delayApp.trial.action" : "Ja, ich möchte Franz Professional 14 Tage gratis testen", "feature.delayApp.trial.actionShort" : "Aktiviere die kostenlose Franz Professional Testlizenz", - "feature.delayApp.trial.headline" : "Hol dir die kostenlose Franz Professional Testlizenz und es geht ohne Warten weiter!", - "feature.delayApp.upgrade.action" : "Hol dir Franz Premium!", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Account upgraden", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Du hast {amount} von {limit} in deiner Lizenz inkludierten Services hinzugefügt. Bitte führe ein Upgrade deines Accounts durch, um mehr Services hinzuzufügen.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Weiter zu Franz!", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Tut uns leid, wir konnten deine kostenlose Testlizenz nicht aktivieren.", "pricing.trial.features.headline" : "Franz Professional beinhaltet:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Deine kostenlose Testlizenz endet automatisch nach 14 Tagen", "pricing.trial.terms.headline" : "Ohne Bindung, ohne Haken", "pricing.trial.terms.noCreditCard" : "Keine Kreditkarte notwendig", diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index b53b21c86..b9995de0b 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Επαναφόρτωση", "app.errorHandler.headline" : "Κάτι δεν λειτουργεί", "feature.announcements.changelog.headline" : "Changes in Franz {version}", - "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz θα συνεχίσει σε {seconds} δευτερόλεπτα.", "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Get a Franz Supporter License", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Upgrade account", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index dfd843098..fdc3b22af 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Volver a cargar", "app.errorHandler.headline" : "Algo salió mal.", "feature.announcements.changelog.headline" : "Cambios en Franz {version}", - "feature.delayApp.headline" : "Por favor compra una Licencia de Soporte de Franz para omitir la espera", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz continuará en {seconds} segundos.", "feature.delayApp.trial.action" : "Si! Quiero probar Franz Profesional por 14 días, gratis!", "feature.delayApp.trial.actionShort" : "Activar el período de prueba de Franz Profesional", - "feature.delayApp.trial.headline" : "Empieza el periodo de prueba de Franz Profesional por 14 días y cruza la linea.", - "feature.delayApp.upgrade.action" : "Consigue una Licencia de Soporte de Franz", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Mejora tu cuenta", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Has sumado {amount} servicios más de los que están incluídos en tu plan. Por favor mejora tu cuenta para sumar más servicios.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continuar a Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Disculpe, no pudimos activar su prueba!", "pricing.trial.features.headline" : "Franz Profesional incluye:", - "pricing.trial.headline" : "Franz Profesional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Su prueba gratis finaliza automáticamente después de 14 días", "pricing.trial.terms.headline" : "Sin condiciones", "pricing.trial.terms.noCreditCard" : "No necesita tarjeta de crédito", diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 127df0334..ee4df697a 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Actualiser", "app.errorHandler.headline" : "On dirait que quelque chose ne va pas", "feature.announcements.changelog.headline" : "Les nouveaux changements dans Franz {version}", - "feature.delayApp.headline" : "Achetez la licence Franz pour ne plus avoir de temps d'attente", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz s'ouvrira dans {seconds} secondes.", "feature.delayApp.trial.action" : "Oui, je veux les 14 jours d'essai gratuits de Franz Professionnel", "feature.delayApp.trial.actionShort" : "Activer l'essai gratuit de Franz Professionnel ", - "feature.delayApp.trial.headline" : "Obtenir l'essai gratuit de 14 jours pour Franz Professionnel et éviter la file d'attente", - "feature.delayApp.upgrade.action" : "Acheter une license Franz", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Augmenter le niveau de mon compte", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Vous avez ajouté {amount} services sur les {limit} qui sont inclus dans votre offre. Veuillez améliorer votre compte pour ajouter plus de services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index 7aed75d4b..d206c04e1 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Athlódáil", "app.errorHandler.headline" : "Chuaigh cúrsaí chun donais", "feature.announcements.changelog.headline" : "Athraithe i Franz {version}", - "feature.delayApp.headline" : "Ceannaigh Franz Premium chun am a spáráil, le do thoil", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Leanfaidh Franz ar aghaidh i gceann {seconds} soicind.", "feature.delayApp.trial.action" : "Sea, ba mhaith liom Franz Professional a thástáil le feadh 14 lá", "feature.delayApp.trial.actionShort" : "Cuir tástáil saor Franz Professional i bhfeidhm", - "feature.delayApp.trial.headline" : "Tástáil Franz Professional le feadh 14 lá agus gearr isteach sa scuaine!", - "feature.delayApp.upgrade.action" : "Faigh Franz Premium!", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Uasghrádaigh cuntas", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Tá {amount} as {limit} seirbhísí atá san áireamh i do phlean curtha agat cheana féin. Uasghrádaigh do chuntas chun tuilleadh seirbhísí a chur leis, le do thoil.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index 61e5c3f01..7fb3169e5 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Ponovno učitavanje", "app.errorHandler.headline" : "Something went wrong", "feature.announcements.changelog.headline" : "Changes in Franz {version}", - "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Get a Franz Supporter License", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Upgrade account", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index 38c3c1197..4bf6fc0e3 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Újratöltés", "app.errorHandler.headline" : "Valami nem jött össze", "feature.announcements.changelog.headline" : "Franz {version} változásai", - "feature.delayApp.headline" : "Kérjük vásárolj egy Franc Támogatói Liszencet a várakozás átugrásához", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "A Franz továbblép {seconds} másodperc múlva.", "feature.delayApp.trial.action" : "Igen, szeretném kipróbálni 14 napig a Franz Professional-t ingyen", "feature.delayApp.trial.actionShort" : "Aktiválom az ingyenes Franz Professional próbaidőszakot", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Szerezz egy Franz Támogatói Liszencet", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Fiók frissítése", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index 203bf5185..40cffb49d 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Muat Ulang", "app.errorHandler.headline" : "Terjadi kesalahan", "feature.announcements.changelog.headline" : "Perubahan dalam Franz {version}", - "feature.delayApp.headline" : "Beli Lisensi Pendukung Franz agar tidak perlu menunggu", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz akan melanjutkan dalam {seconds} detik.", "feature.delayApp.trial.action" : "Ya, saya ingin menguji gratis 14 hari Franz Professional", "feature.delayApp.trial.actionShort" : "Aktifkan uji coba gratis Franz Professional", - "feature.delayApp.trial.headline" : "Dapatkan uji coba gratis 14 hari Franz Professional dan tak perlu lagi menunggu!", - "feature.delayApp.upgrade.action" : "Dapatkan Lisensi Pendukung Franz", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Tingkatkan akun", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Anda telah menambahkan {amount} dari kuota {limit} layanan yang tersedia untuk paket Anda. Tingkatkan akun untuk menambahkan layanan lain.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Lanjutkan ke Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Maaf, kami tidak bisa mengaktifkan uji coba Anda!", "pricing.trial.features.headline" : "Franz Professional menyertakan:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Uji coba gratis Anda berakhir secara otomatis dalam 14 hari", "pricing.trial.terms.headline" : "Tanpa embel-embel", "pricing.trial.terms.noCreditCard" : "Tidak memerlukan kartu kredit", diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index a9a814412..2edbfd2e8 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Ricarica", "app.errorHandler.headline" : "Qualcosa è andato storto", "feature.announcements.changelog.headline" : "Modifiche in Franz {Version}", - "feature.delayApp.headline" : "Per favore, compra una Licenza Supporter di Franz per saltare l'attesa", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz continuerà tra {seconds} secondi.", "feature.delayApp.trial.action" : "Sì, voglio la prova gratuita di 14 giorni di Franz Professional", "feature.delayApp.trial.actionShort" : "Attiva la prova gratuita di Franz Professional", - "feature.delayApp.trial.headline" : "Ottieni la prova gratuita per 14 giorni di Franz Professional e salta la coda", - "feature.delayApp.upgrade.action" : "Ricevi una Licenza Supporter di Franz", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Effettua l'upgrade del tuo account", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Hai aggiunto {amount} su {limit} servizi che sono inclusi nel tuo piano. Per favore potenzia il tuo account per aggiungere più servizi.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continua su Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Ci dispiace, non abbiamo potuto attivare la tua prova!", "pricing.trial.features.headline" : "Franz Professional include:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "La tua prova gratuita finirà automaticamente dopo 14 giorni", "pricing.trial.terms.headline" : "Senza impegno", "pricing.trial.terms.noCreditCard" : "Nessuna carta di credito richiesta", diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 27cb6a3c7..98132854f 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "再読み込み", "app.errorHandler.headline" : "間違えている部分があります", "feature.announcements.changelog.headline" : "Changes in Franz {version}", - "feature.delayApp.headline" : "Franzをすぐに起動するには、Franz サポーターライセンスを購入してください。", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franzはあと{seconds}秒後に起動します。", "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Franzサポーターライセンスを購入する", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "アカウントをアップグレード", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index 7440fd916..c9236622d 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "ჩატვირთვა", "app.errorHandler.headline" : "Something went wrong", "feature.announcements.changelog.headline" : "Changes in Franz {version}", - "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Get a Franz Supporter License", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Upgrade account", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index 349e4f80c..d5cf9ac1e 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Herladen", "app.errorHandler.headline" : "Er ging iets mis", "feature.announcements.changelog.headline" : "Wijzigingen in Franz {versie}", - "feature.delayApp.headline" : "Neem een Franz Supporter Licentie om niet meer te hoeven wachten", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.", "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Neem een Franz Supporter Licentie ", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Upgrade account", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index 61a212335..a80f80674 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Herladen", "app.errorHandler.headline" : "Er is iets mis gegaan", "feature.announcements.changelog.headline" : "Wijzigingen in Franz {version}", - "feature.delayApp.headline" : "Sponsor Franz om wachten over te slaan", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz gaat over {seconds} seconden verder.", "feature.delayApp.trial.action" : "Ja, ik wil graag 14 dagen lang Franz Professional uitproberen", "feature.delayApp.trial.actionShort" : "Activeer de gratis Franz Professional probeerversie", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Sponsor Franz", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Upgrade Account", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index 2ea92b2b3..71b35f626 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Odśwież", "app.errorHandler.headline" : "Coś poszło nie tak.", "feature.announcements.changelog.headline" : "Zmiany we Franzie {version}", - "feature.delayApp.headline" : "Aby nie czekać, kup licencję Franz Supporter", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz będzie kontynuował za {seconds} sekund.", "feature.delayApp.trial.action" : "Tak, chcę darmową 14-dniową wersję próbną Franz Professional", "feature.delayApp.trial.actionShort" : "Aktywuj darmową wersję próbną Franz Professional", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Uzyskaj licencję Franz Supporter", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Ulepsz swoje konto", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Dodałeś {amount} z {limit} usług, które oferuje twój plan. Ulepsz swoje konto, aby dodać więcej usług.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index 1ee7c04de..e42f68a8f 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Recarregar", "app.errorHandler.headline" : "Opa! Algo deu errado.", "feature.announcements.changelog.headline" : "Mudanças no Franz {version}", - "feature.delayApp.headline" : "Por favor, adquira uma licença para pular o tempo de espera", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz continuará em {seconds} segundos.", "feature.delayApp.trial.action" : "Sim, eu quero o período de testes gratuito de 14 dias do Franz Professional", "feature.delayApp.trial.actionShort" : "Ativar período de testes gratuito do Franz Professional", - "feature.delayApp.trial.headline" : "Teste o Franz Professional por 14 dias grátis e fure a fila.", - "feature.delayApp.upgrade.action" : "Adquira uma licença de suporte Franz", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Atualizar conta", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Você adicionou {amount} serviços de um total de {limit} que estão inclusos no seu plano. Por favor, atualize sua conta para adicionar mais serviços.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continuar para o Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Desculpe, não conseguimos ativar o seu período de testes", "pricing.trial.features.headline" : "Incluso no Franz Profissional:", - "pricing.trial.headline" : "Franz Profissional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Seu período de testes encerra automaticamente em 14 dias", "pricing.trial.terms.headline" : "Sem vínculos", "pricing.trial.terms.noCreditCard" : "Cartão de crédito não exigido", diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index 0b553b049..0224668d7 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Recarregar", "app.errorHandler.headline" : "Alguma coisa correu mal", "feature.announcements.changelog.headline" : "Alterações no Franz {version}", - "feature.delayApp.headline" : "Por favor compre uma licença Franz Supporter para saltar a fila de espera", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz irá continuar em {seconds} segundos.", "feature.delayApp.trial.action" : "Sim, Quero a versão experimental do Franz Profissional de 14 dias", "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Faz parte do grupo de apoio do Franz", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Atualiza a tua conta", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 37dcd4712..133614cf1 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Перезагрузить", "app.errorHandler.headline" : "Что-то пошло не так", "feature.announcements.changelog.headline" : "Изменения в версии Franz {version}", - "feature.delayApp.headline" : "Пожалуйста приобретите лицензию Franz Supporter чтобы убрать ожидание", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz продолжит работу через {seconds} секунд.", "feature.delayApp.trial.action" : "Да, я хочу бесплатную 14-дневную триальную версию Franz Professional", "feature.delayApp.trial.actionShort" : "Активировать бесплатную триальную версию Franz Professional", - "feature.delayApp.trial.headline" : "Получить бесплатную 14-дневную триальную версию Franz Professional и перейти к следующему полю", - "feature.delayApp.upgrade.action" : "Получите лицензию поддержки Franz", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Апгрейдить аккаунт", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Вы добавили {amount} максимальное {limit} количество сервисов, входящих в ваш план. Пожалуйста, обновите свой план чтобы добавить больше сервисов.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index e853dac7f..35752c4ad 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Obnoviť", "app.errorHandler.headline" : "Niečo sa pokazilo", "feature.announcements.changelog.headline" : "Zmeny vo Franz {version}", - "feature.delayApp.headline" : "Prosím, kúp si licenciu Franz Supporter a nebudeš musieť čakať", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz bude pokračovať v {seconds} sekundách.", "feature.delayApp.trial.action" : "Áno, chcem bezplatnú 14-dňovú skúšobnú verziu Franz Professional", "feature.delayApp.trial.actionShort" : "Aktivujte bezplatnú skúšobnú verziu Franz Professional", - "feature.delayApp.trial.headline" : "Získajte bezplatnú 14 dňovú skúšobnú verziu Franz Professional a preskočte riadok", - "feature.delayApp.upgrade.action" : "Získajte licenciu pre Franz podporu", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Upgradovať účet", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Pridali ste {amount} z {limit} služieb, ktoré sú zahrnuté vo vašom pláne. Ak chcete pridať ďalšie služby, inovujte svoj účet.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index dc2d0af08..889f3e526 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Ponovno učitavanje", "app.errorHandler.headline" : "Something went wrong", "feature.announcements.changelog.headline" : "Changes in Franz {version}", - "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz will continue in {seconds} seconds.", "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Get a Franz Supporter License", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Upgrade account", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index d40d3323d..e20266cd8 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Tekrar Yükle", "app.errorHandler.headline" : "Bir terslik çıktı", "feature.announcements.changelog.headline" : "Changes in Franz {version}", - "feature.delayApp.headline" : "Beklememek için Franz Destek Lisansı'nı satın alın", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz {seconds} saniye sonra devam edecek.", "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "Franz Destek Lisansı'nı alın", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Hesabı Yükselt", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index c20b3b6b9..69b608e94 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "Перезавантажити", "app.errorHandler.headline" : "Щось пішло не так", "feature.announcements.changelog.headline" : "Зміни у версії Franz {version}", - "feature.delayApp.headline" : "Будь ласка, придбайте ліцензію Franz Supporter аби пропустити очікування", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz відновить роботу за {seconds} секунд", "feature.delayApp.trial.action" : "Так, я хочу безкоштовну 14-денну триальную версію Franz Professional", "feature.delayApp.trial.actionShort" : "Активувати безкоштовну триальную версію Franz Professional", - "feature.delayApp.trial.headline" : "Отримати безкоштовну 14-денну триальную версію Franz Professional і перейти до наступного поля", - "feature.delayApp.upgrade.action" : "Отримати ліцензію Franz Supporter ", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Преміум акаунт", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Ви додали {amount} максимальну {limit} кількість сервісів, що входять в ваш план. Будь ласка, поновіть свій план щоб додати більше сервісів.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json index 17dadebdf..e24b3a6f4 100644 --- a/src/i18n/locales/zh-TW.json +++ b/src/i18n/locales/zh-TW.json @@ -2,12 +2,12 @@ "app.errorHandler.action" : "重新整理", "app.errorHandler.headline" : "糟糕!有些地方出問題了。", "feature.announcements.changelog.headline" : "透過 email 傳送", - "feature.delayApp.headline" : "請購買 Franz 支援授權以跳過等候", + "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", "feature.delayApp.text" : "Franz 會在 {seconds} 秒後繼續。", "feature.delayApp.trial.action" : "Yes, I want the free 14 day trial of Franz Professional", "feature.delayApp.trial.actionShort" : "Activate the free Franz Professional trial", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action" : "取得 Franz 支援授權", + "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", + "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "升級帳號", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", @@ -21,7 +21,7 @@ "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Welcome back, {name}", + "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", @@ -170,10 +170,13 @@ "pricing.plan.pro-yearly" : "Professional Yearly", "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", "pricing.trial.cta.skip" : "Continue to Franz", + "pricing.trial.cta.start" : "Start using Franz", "pricing.trial.error" : "Sorry, we could not activate your trial!", "pricing.trial.features.headline" : "Franz Professional includes:", - "pricing.trial.headline" : "Franz Professional", - "pricing.trial.subheadline" : "Here's a special welcome for you:", + "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", + "pricing.trial.intro.happyMessaging" : "Happy messaging,", + "pricing.trial.intro.specialTreat" : "We have a special treat for you.", + "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd" : "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline" : "No strings attached", "pricing.trial.terms.noCreditCard" : "No credit card required", -- cgit v1.2.3-70-g09d2 From 2469be543048b575c0cd8e8fccdef2a73e6046d3 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Thu, 17 Oct 2019 14:57:57 +0200 Subject: Add debugging logs --- src/webview/lib/RecipeWebview.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/webview/lib/RecipeWebview.js b/src/webview/lib/RecipeWebview.js index be29142af..e3212d0e6 100644 --- a/src/webview/lib/RecipeWebview.js +++ b/src/webview/lib/RecipeWebview.js @@ -2,6 +2,8 @@ const { ipcRenderer } = require('electron'); const fs = require('fs-extra'); +const debug = require('debug')('Franz:Plugin:RecipeWebview'); + class RecipeWebview { constructor() { this.countCache = { @@ -11,6 +13,8 @@ class RecipeWebview { ipcRenderer.on('poll', () => { this.loopFunc(); + + debug('Poll event'); }); } @@ -44,8 +48,11 @@ class RecipeWebview { indirect: indirect > 0 ? indirect : 0, }; + ipcRenderer.sendToHost('messages', count); Object.assign(this.countCache, count); + + debug('Sending badge count to host', count); } /** @@ -61,6 +68,8 @@ class RecipeWebview { styles.innerHTML = data.toString(); document.querySelector('head').appendChild(styles); + + debug('Append styles', styles); }); } -- cgit v1.2.3-70-g09d2 From d33fd710cce0a40469de513df7fe79cdef306730 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Thu, 17 Oct 2019 16:57:21 +0200 Subject: fix icon size --- src/features/planSelection/components/PlanSelection.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js index 9407f6dd3..74f90868a 100644 --- a/src/features/planSelection/components/PlanSelection.js +++ b/src/features/planSelection/components/PlanSelection.js @@ -111,6 +111,7 @@ const styles = theme => ({ '& svg': { width: '80px !important', + height: '80px !important', filter: 'drop-shadow( 0px 2px 3px rgba(0, 0, 0, 0.3))', fill: theme.styleTypes.danger.contrast, }, -- cgit v1.2.3-70-g09d2 From 9a5f64fbf0ca1d8c73614d03dc7ed3b4cd285387 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Thu, 17 Oct 2019 20:41:58 +0200 Subject: test to reload app after resume --- src/stores/AppStore.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index ca5cad836..c38e84639 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -207,10 +207,7 @@ export default class AppStore extends Store { if (this.timeSuspensionStart.add(10, 'm').isBefore(moment())) { debug('Reloading services, user info and features'); - this.actions.service.reloadAll(); - - this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); - this.stores.features.featuresRequest.invalidate({ immediately: true }); + window.location.reload(); statsEvent('resumed-app'); } -- cgit v1.2.3-70-g09d2 From 66e43c5d21f90893b047a7cabbc31bb0e83035d5 Mon Sep 17 00:00:00 2001 From: Bennett Date: Thu, 17 Oct 2019 21:20:01 +0200 Subject: Fix disable spell checker method for Electron 6 While Electron <6 still [required a second "autoCorrectWord" argument](https://github.com/electron/electron/blob/v3.1.0/docs/api/web-frame.md#webframesetspellcheckproviderlanguage-autocorrectword-provider), Electron 6 [no longer needs this argument](https://electronjs.org/docs/api/web-frame#webframesetspellcheckproviderlanguage-provider). Because of this, Franz's service webview when trying to disable the Spellchecker. --- src/webview/spellchecker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js index 06cbd283a..d8f71f61f 100644 --- a/src/webview/spellchecker.js +++ b/src/webview/spellchecker.js @@ -96,7 +96,7 @@ export function isEnabled() { export function disable() { if (isEnabled()) { - webFrame.setSpellCheckProvider(currentDict, true, { spellCheck: () => true }); + webFrame.setSpellCheckProvider(currentDict, { spellCheck: () => true }); _isEnabled = false; currentDict = null; } -- cgit v1.2.3-70-g09d2 From 452ff4a35af6df43e6f76d2e5db8de2e1b194ccc Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 18 Oct 2019 09:25:22 +0200 Subject: make plan selection scrollable --- src/features/planSelection/components/PlanSelection.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js index 74f90868a..355187516 100644 --- a/src/features/planSelection/components/PlanSelection.js +++ b/src/features/planSelection/components/PlanSelection.js @@ -72,6 +72,7 @@ const styles = theme => ({ justifyContent: 'center', alignItems: 'center', zIndex: 999999, + overflowY: 'scroll', }, container: { width: '80%', -- cgit v1.2.3-70-g09d2 From 3f150f9863672e61cdbe1310c70d22e12042cc73 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 18 Oct 2019 09:25:33 +0200 Subject: apply diet --- src/features/planSelection/components/PlanItem.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/features/planSelection/components/PlanItem.js b/src/features/planSelection/components/PlanItem.js index ea04c8448..ec061377b 100644 --- a/src/features/planSelection/components/PlanItem.js +++ b/src/features/planSelection/components/PlanItem.js @@ -38,7 +38,7 @@ const styles = theme => ({ '& h2': { textAlign: 'center', - marginBottom: 20, + marginBottom: 10, fontSize: 30, color: theme.styleTypes.primary.contrast, }, @@ -48,6 +48,7 @@ const styles = theme => ({ }, priceWrapper: { height: 50, + marginBottom: 0, }, price: { fontSize: 50, @@ -69,7 +70,7 @@ const styles = theme => ({ width: 40, border: 0, borderTop: [1, 'solid', theme.styleTypes.primary.contrast], - margin: [30, 'auto'], + margin: [15, 'auto', 20], }, header: { padding: 20, @@ -78,7 +79,7 @@ const styles = theme => ({ position: 'relative', }, content: { - padding: 20, + padding: [10, 20, 20], background: '#EFEFEF', }, simpleCTA: { -- cgit v1.2.3-70-g09d2 From 5c1c0db73ba1317ed138b1db8831677ef27c1633 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 18 Oct 2019 12:00:43 +0200 Subject: fix(Workspaces): Allow scrolling in Workspaces drawer --- src/features/workspaces/components/WorkspaceDrawer.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js index ee6f8416c..d5616b4da 100644 --- a/src/features/workspaces/components/WorkspaceDrawer.js +++ b/src/features/workspaces/components/WorkspaceDrawer.js @@ -52,6 +52,8 @@ const styles = theme => ({ drawer: { background: theme.workspaces.drawer.background, width: `${theme.workspaces.drawer.width}px`, + display: 'flex', + flexDirection: 'column', }, headline: { fontSize: '24px', @@ -75,6 +77,7 @@ const styles = theme => ({ }, workspaces: { height: 'auto', + overflowY: 'scroll', }, premiumAnnouncement: { padding: '20px', @@ -89,7 +92,7 @@ const styles = theme => ({ addNewWorkspaceLabel: { height: 'auto', color: theme.workspaces.drawer.buttons.color, - marginTop: 40, + margin: [40, 0], textAlign: 'center', '& > svg': { fill: theme.workspaces.drawer.buttons.color, -- cgit v1.2.3-70-g09d2 From 9e92cff901522f438c34543836a8c2dc6578f5c1 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 18 Oct 2019 12:00:51 +0200 Subject: remove flow tag --- src/webview/lib/RecipeWebview.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/webview/lib/RecipeWebview.js b/src/webview/lib/RecipeWebview.js index e3212d0e6..859f7787f 100644 --- a/src/webview/lib/RecipeWebview.js +++ b/src/webview/lib/RecipeWebview.js @@ -1,4 +1,3 @@ -// @flow const { ipcRenderer } = require('electron'); const fs = require('fs-extra'); -- cgit v1.2.3-70-g09d2 From ed071ba4e298d19c69c7994194f118cf3b75b277 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 18 Oct 2019 14:30:16 +0200 Subject: share app version with webview --- src/stores/ServicesStore.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index 70b775503..65e68e4d7 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js @@ -6,6 +6,7 @@ import { } from 'mobx'; import { debounce, remove } from 'lodash'; import ms from 'ms'; +import { remote } from 'electron'; import Store from './lib/Store'; import Request from './lib/Request'; @@ -18,6 +19,8 @@ import { RESTRICTION_TYPES } from '../models/Service'; const debug = require('debug')('Franz:ServiceStore'); +const { app } = remote; + export default class ServicesStore extends Store { @observable allServicesRequest = new CachedRequest(this.api.services, 'all'); @@ -728,7 +731,9 @@ export default class ServicesStore extends Store { if (service.webview) { debug('Initialize recipe', service.recipe.id, service.name); - service.webview.send('initialize-recipe', service.shareWithWebview, service.recipe); + service.webview.send('initialize-recipe', Object.assign({ + franzVersion: app.getVersion(), + }, service.shareWithWebview), service.recipe); } } -- cgit v1.2.3-70-g09d2 From 71b9e05d45bac8a592b859dbb707fe4ac8ff4ffd Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Fri, 18 Oct 2019 14:30:29 +0200 Subject: Fix name in pricing screen --- src/components/auth/Pricing.js | 4 +++- src/containers/auth/PricingScreen.js | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/auth/Pricing.js b/src/components/auth/Pricing.js index 86b6a4263..53ae046a0 100644 --- a/src/components/auth/Pricing.js +++ b/src/components/auth/Pricing.js @@ -150,6 +150,7 @@ export default @observer @injectSheet(styles) class Signup extends Component { classes: PropTypes.object.isRequired, currency: PropTypes.string.isRequired, price: PropTypes.number.isRequired, + name: PropTypes.string.isRequired, }; static contextTypes = { @@ -166,6 +167,7 @@ export default @observer @injectSheet(styles) class Signup extends Component { classes, currency, price, + name, } = this.props; const { intl } = this.context; @@ -182,7 +184,7 @@ export default @observer @injectSheet(styles) class Signup extends Component { alt="" /> )} -

{intl.formatMessage(messages.headline, { name: 'Stefan' })}

+

{intl.formatMessage(messages.headline, { name })}

{intl.formatMessage(messages.specialTreat)} diff --git a/src/containers/auth/PricingScreen.js b/src/containers/auth/PricingScreen.js index 55811ed23..21c859c12 100644 --- a/src/containers/auth/PricingScreen.js +++ b/src/containers/auth/PricingScreen.js @@ -42,7 +42,7 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend stores, } = this.props; - const { getUserInfoRequest, activateTrialRequest } = stores.user; + const { getUserInfoRequest, activateTrialRequest, data } = stores.user; const { featuresRequest, features } = stores.features; const { pricingConfig } = features; @@ -64,6 +64,7 @@ export default @inject('stores', 'actions') @observer class PricingScreen extend error={error} currency={currency} price={price} + name={data.firstname} /> ); } -- cgit v1.2.3-70-g09d2 From 452cb3dcf7fd2f40a1b9006110f93001749bf578 Mon Sep 17 00:00:00 2001 From: FranzBot Date: Sun, 20 Oct 2019 00:00:21 +0000 Subject: Automatic i18n update (i18n.meetfranz.com) --- src/i18n/locales/pt-BR.json | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index e42f68a8f..ef38e6e0a 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json @@ -10,20 +10,20 @@ "feature.delayApp.upgrade.action" : "Upgrade Franz", "feature.delayApp.upgrade.actionShort" : "Atualizar conta", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", - "feature.planSelection.cta.stayOnFree" : "Stay on Free", - "feature.planSelection.cta.trial" : "Start my free 14-days Trial", - "feature.planSelection.cta.upgradePersonal" : "Choose Personal", - "feature.planSelection.cta.upgradePro" : "Choose Professional", - "feature.planSelection.free.text" : "Basic functionality", - "feature.planSelection.fullFeatureList" : "Complete comparison of all plans", + "feature.planSelection.cta.stayOnFree" : "Continuar no plano grátis", + "feature.planSelection.cta.trial" : "Iniciar minha avaliação gratuita de 14 dias", + "feature.planSelection.cta.upgradePersonal" : "Escolha o plano Pessoal", + "feature.planSelection.cta.upgradePro" : "Escolha o plano Profissional", + "feature.planSelection.free.text" : "Funcionalidade básica", + "feature.planSelection.fullFeatureList" : "Comparação completa de todos os planos", "feature.planSelection.fullscreen.dialog.cta.downgrade" : "Downgrade to Free", - "feature.planSelection.fullscreen.dialog.cta.upgrade" : "Choose Personal", - "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", - "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", - "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", - "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", - "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", + "feature.planSelection.fullscreen.dialog.cta.upgrade" : "Escolha o plano Pessoal", + "feature.planSelection.fullscreen.dialog.message" : "Você está prestes a mudar para o plano Gratuito. Você tem certeza? Se não, clique aqui para obter mais serviços e funcionalidade por apenas {currency}{price} por mês.", + "feature.planSelection.fullscreen.dialog.title" : "Alterar seu Plano Franz", + "feature.planSelection.fullscreen.subheadline" : "É hora de fazer uma escolha. O Franz trabalha melhor nos nossos planos Pessoal e Profissional. Por favor, dê uma olhada e veja qual a melhor opção para você.", + "feature.planSelection.fullscreen.welcome" : "Você está pronto para escolher, {name}?", + "feature.planSelection.personal.text" : "Mais serviços, sem espera - ideal para uso pessoal.", + "feature.planSelection.pro.text" : "Serviços ilimitados e funcionalidades profissionais para você - e seu time.", "feature.serviceLimit.limitReached" : "Você adicionou {amount} serviços de um total de {limit} que estão inclusos no seu plano. Por favor, atualize sua conta para adicionar mais serviços.", "feature.shareFranz.action.email" : "Enviar por e-mail", "feature.shareFranz.action.facebook" : "Compartilhar no Facebook", @@ -35,12 +35,12 @@ "feature.todos.premium.info" : "As Listas de Tarefa do Franz estão disponíveis para usuários premium!", "feature.todos.premium.rollout" : "As outras pessoas terão que esperar um pouquinho mais.", "feature.todos.premium.upgrade" : "Melhore sua conta", - "feature.trialStatusBar.cta" : "Upgrade now", + "feature.trialStatusBar.cta" : "Atualizar agora", "feature.trialStatusBar.expired" : "Your free Franz {plan} Trial has expired, please upgrade your account.", "feature.trialStatusBar.fullscreen.dialog.cta.downgrade" : "Downgrade to Free", - "feature.trialStatusBar.fullscreen.dialog.cta.upgrade" : "Choose Personal", - "feature.trialStatusBar.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", - "feature.trialStatusBar.fullscreen.dialog.title" : "Downgrade your Franz Plan", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade" : "Escolha o plano Pessoal", + "feature.trialStatusBar.fullscreen.dialog.message" : "Você está prestes a mudar para o plano Gratuito. Você tem certeza? Se não, clique aqui para obter mais serviços e funcionalidade por apenas {currency}{price} por mês.", + "feature.trialStatusBar.fullscreen.dialog.title" : "Alterar seu Plano Franz", "feature.trialStatusBar.restTime" : "Your Free Franz {plan} Trial ends in {time}.", "global.api.unhealthy" : "Não foi possível conectar-se aos serviços on-line do Franz.", "global.franzProRequired" : "Franz Profissional necessário", -- cgit v1.2.3-70-g09d2 From f1c151fb20ad2dedbda3e00f4dccaed1d1110520 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 08:44:43 +0200 Subject: New translations en-US.json (Turkish) --- src/i18n/locales/tr.json | 86 ++++++++++++++++++++++++------------------------ 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 08f661d8f..c9beabaf9 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json @@ -12,7 +12,7 @@ "feature.quickSwitch.info": "TAB, ↑ ve ↓ ile bir servis seç. ENTER ile bir servisi aç.", "feature.quickSwitch.search": "Ara...", "feature.quickSwitch.title": "QuickSwitch", - "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", + "feature.serviceLimit.limitReached": "Hesabında {limit} adet servis limiti olmasına rağmen {amount} servis ekledin. Lütfen daha fazla servis eklemek için hesabını yükselt.", "feature.shareFranz.action.email": "Mail olarak gönder", "feature.shareFranz.action.facebook": "Facebook'ta Paylaş", "feature.shareFranz.action.twitter": "Twitter'da Paylaş", @@ -35,7 +35,7 @@ "import.notSupportedHeadline": "Henüz Ferdi 5'te desteklenmeyen servisler", "import.skip.label": "Servisleri kendim eklemek istiyorum", "import.submit.label": "Servisleri içe aktar", - "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", + "infobar.authRequestFailed": "Yetkili bir işlem yapılmaya çalışırken hatalar ortaya çıktı. Lütfen bu hata tekrarlarsa çıkış yapıp tekrar girmeyi dene.", "infobar.buttonChangelog": "Yeni ne var?", "infobar.buttonInstallUpdate": "Yeniden Başlat ve Güncelleştirmeleri Kur", "infobar.buttonReloadServices": "Hizmetleri yeniden yükle", @@ -49,12 +49,12 @@ "invite.skip.label": "Daha sonra yapmak istiyorum", "invite.submit.label": "Davetiye gönder", "invite.successInfo": "Davetiyeler başarıyla gönderildi", - "locked.headline": "Locked", + "locked.headline": "Kilitli", "locked.info": "Ferdi şu anda kilitli. Lütfen mesajlarını görmek için Ferdi'nin kilidini şifrenle aç.", - "locked.invalidCredentials": "Password invalid", - "locked.password.label": "Password", - "locked.submit.label": "Unlock", - "login.changeServer": "Change server", + "locked.invalidCredentials": "Geçersiz şifre", + "locked.password.label": "Şifre", + "locked.submit.label": "Kilidi aç", + "login.changeServer": "Sunucuyu değiştir", "login.customServerQuestion": "Using a custom Ferdi server?", "login.customServerSuggestion": "Try importing your Franz account", "login.email.label": "E-posta adresi", @@ -62,7 +62,7 @@ "login.invalidCredentials": "Yanlış parola ya da e-posta adresi", "login.link.password": "Parola sıfırla", "login.link.signup": "Ücretsiz hesap oluştur", - "login.password.label": "Password", + "login.password.label": "Şifre", "login.serverLogout": "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.", "login.submit.label": "Oturum Aç", "login.tokenExpired": "Oturum süreniz dolmuş, lütfen tekrar giriş yapın.", @@ -70,7 +70,7 @@ "menu.Todoss.openTodosDrawer": "Yapılacaklar çekmecesini aç", "menu.app.about": "Ferdi Hakkında", "menu.app.announcement": "Neler yeni?", - "menu.app.autohideMenuBar": "Auto-hide menu bar", + "menu.app.autohideMenuBar": "Menü çubuğunu otomatik otomatik olarak gizle", "menu.app.checkForUpdates": "Güncellemeleri kontrol et", "menu.app.hide": "Gizle", "menu.app.hideOthers": "Diğerlerini Gizle", @@ -94,26 +94,26 @@ "menu.file": "Dosya", "menu.help": "Yardım", "menu.help.changelog": "Değişim Günlüğü", - "menu.help.debugInfo": "Copy Debug Information", - "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", - "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information", + "menu.help.debugInfo": "Hata ayıklama bilgisini kopyala", + "menu.help.debugInfoCopiedBody": "Hata ayıklama bilgilerin panoya kopyalandı.", + "menu.help.debugInfoCopiedHeadline": "Ferdi Hata Ayıklama Bilgisi", "menu.help.learnMore": "Daha Fazlasını Öğrenin", "menu.help.privacy": "Gizlilik Sözleşmesi", "menu.help.support": "Destek", "menu.help.tos": "Kullanım Şartları", "menu.services": "Hizmetler", - "menu.services.activatePreviousService": "Activate previous service", + "menu.services.activatePreviousService": "Bir önceki servisi aktive et", "menu.services.addNewService": "Yeni servis ekle...", - "menu.services.goHome": "Home", - "menu.services.setNextServiceActive": "Activate next service", + "menu.services.goHome": "Ana Sayfa", + "menu.services.setNextServiceActive": "Bir sonraki servisi aktive et", "menu.todos": "Yapılacaklar", "menu.todos.enableTodos": "Yapılacaklar Listesi'ni Aç", "menu.view": "Görünüm", - "menu.view.back": "Back", + "menu.view.back": "Geri", "menu.view.enterFullScreen": "Tam Ekrana Geç", "menu.view.exitFullScreen": "Tam Ekrandan Çık", - "menu.view.forward": "Forward", - "menu.view.lockFerdi": "Lock Ferdi", + "menu.view.forward": "İleri", + "menu.view.lockFerdi": "Ferdi'yi Kilitle", "menu.view.openQuickSwitch": "QuickSwitch'i aç", "menu.view.reloadFranz": "Ferdi'ı Yeniden Yükle", "menu.view.reloadService": "Servisi Tekrar Yükle", @@ -121,17 +121,17 @@ "menu.view.toggleDevTools": "Geliştirici Araçlarına Geç", "menu.view.toggleFullScreen": "Tam Ekrana Geç", "menu.view.toggleServiceDevTools": "Hizmet Geliştirici Araçlarını Değiştir", - "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", + "menu.view.toggleTodosDevTools": "Yapılacaklar Listesi Geliştirici Araçlarını Aç", "menu.view.zoomIn": "Yakınlaştır", "menu.view.zoomOut": "Uzaklaştır", "menu.window": "Pencere", "menu.window.close": "Kapat", "menu.window.minimize": "Simge Durumuna Küçült", - "menu.workspaces": "Workspaces", - "menu.workspaces.addNewWorkspace": "Add New Workspace...", - "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer", + "menu.workspaces": "Çalışma Alanları", + "menu.workspaces.addNewWorkspace": "Yeni Çalışma Alanı ekle...", + "menu.workspaces.closeWorkspaceDrawer": "Çalışma alanı çekmecesini kapat", "menu.workspaces.defaultWorkspace": "Tüm servisler", - "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer", + "menu.workspaces.openWorkspaceDrawer": "Çalışma alanı çekmecesini aç", "password.email.label": "E-posta adresi", "password.headline": "Parola sıfırla", "password.link.login": "Hesabına giriş yap", @@ -144,12 +144,12 @@ "pricing.features.appDelays": "Yükleme Ekranları Yok", "pricing.features.customWebsites": "Özel Siteler Ekle", "pricing.features.onPremise": "On-premise & other Hosted Services", - "pricing.features.serviceProxies": "Service Proxies", - "pricing.features.spellchecker": "Spellchecker support", - "pricing.features.teamManagement": "Team Management", - "pricing.features.thirdPartyServices": "Install 3rd party services", - "pricing.features.unlimitedServices": "Add unlimited services", - "pricing.features.workspaces": "Workspaces", + "pricing.features.serviceProxies": "Servis proxy'leri", + "pricing.features.spellchecker": "Yazım denetimi desteği", + "pricing.features.teamManagement": "Takım yönetimi", + "pricing.features.thirdPartyServices": "3. parti servisleri yükleme", + "pricing.features.unlimitedServices": "Sınırsız servis ekleme", + "pricing.features.workspaces": "Çalışma Alanları", "pricing.plan.free": "Ferdi - Ücretsiz", "pricing.plan.legacy": "Ferdi - Premium", "pricing.plan.personal": "Ferdi - Kişisel", @@ -159,14 +159,14 @@ "pricing.plan.pro-monthly": "Ferdi - Aylık Professional", "pricing.plan.pro-yearly": "Ferdi - Yıllık Professional", "pricing.trial.cta.accept": "Evet, hesabını Ferdi Professional'a yükselt", - "pricing.trial.cta.skip": "Continue to Ferdi", - "pricing.trial.error": "Sorry, we could not activate your trial!", - "pricing.trial.features.headline": "Ferdi Professional includes:", + "pricing.trial.cta.skip": "Ferdi'ye Devam Et", + "pricing.trial.error": "Üzgünüz, ücretsiz denemeni başlatamadık!", + "pricing.trial.features.headline": "Ferdi Professional şunları içerir:", "pricing.trial.headline": "Ferdi - Professional", "pricing.trial.subheadline": "Your personal welcome offer:", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", - "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.noCreditCard": "Kredi kartı gerektirmez", "service.crashHandler.action": "{name} yeniden yükle", "service.crashHandler.autoReload": "{name}'i {seconds} saniye içerisinde otomatik onarmayı deniyoruz", "service.crashHandler.headline": "Olamaz!", @@ -187,7 +187,7 @@ "services.getStarted": "Haydi başlayalım", "services.login": "Please login to use Ferdi.", "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", - "services.serverless": "Use Ferdi without an Account", + "services.serverless": "Ferdi'yi bir hesap olmadan kullan", "services.welcome": "Ferdi'a Hoşgeldiniz", "settings.account.account.editButton": "Hesabı düzenle", "settings.account.accountType.basic": "Basit Hesap", @@ -209,7 +209,7 @@ "settings.account.manageSubscription.label": "Aboneliğini yönet", "settings.account.successInfo": "Değişikliklerin kaydedildi", "settings.account.trial": "Free Trial", - "settings.account.trialEndsIn": "Your free trial ends in {duration}.", + "settings.account.trialEndsIn": "Ücretsiz denemen {duration} içinde bitiyor.", "settings.account.trialUpdateBillingInfo": "Please update your billing info to continue using {license} after your trial period.", "settings.account.tryReloadServices": "Tekrar deneyin", "settings.account.tryReloadUserInfoRequest": "Tekrar deneyin", @@ -387,11 +387,11 @@ "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", "sidebar.addNewService": "Yeni servis ekle", "sidebar.closeTodosDrawer": "Close Ferdi Todos", - "sidebar.closeWorkspaceDrawer": "Close workspace drawer", - "sidebar.lockFerdi": "Lock Ferdi", + "sidebar.closeWorkspaceDrawer": "Çalışma alanı çekmecesini kapat", + "sidebar.lockFerdi": "Ferdi'yi Kilitle", "sidebar.muteApp": "Bildirimleri ve sesli uyarıları kapat", "sidebar.openTodosDrawer": "Open Ferdi Todos", - "sidebar.openWorkspaceDrawer": "Open workspace drawer", + "sidebar.openWorkspaceDrawer": "Çalışma alanı çekmecesini aç", "sidebar.settings": "Ayarlar", "sidebar.unmuteApp": "Bildirimleri ve sesli uyarıları etkinleştir", "signup.email.label": "E-posta adresi", @@ -403,7 +403,7 @@ "signup.legal.privacy": "Gizlilik Sözleşmesi", "signup.legal.terms": "Kullanım Koşulları", "signup.link.login": "Hali hazırda hesabınız varsa giriş yapmak ister misiniz?", - "signup.password.label": "Password", + "signup.password.label": "Şifre", "signup.submit.label": "Hesap oluştur", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", @@ -427,16 +427,16 @@ "validation.oneRequired": "At least one is required", "validation.required": "{field} gereklidir", "validation.url": "{field} geçerli bir URL değil", - "webControls.back": "Back", - "webControls.forward": "Forward", - "webControls.goHome": "Home", + "webControls.back": "Geri", + "webControls.forward": "İleri", + "webControls.goHome": "Ana Sayfa", "webControls.openInBrowser": "Open in Browser", "webControls.reload": "Yenile", "welcome.loginButton": "Hesabına giriş yap", "welcome.signupButton": "Ücretsiz hesap oluştur", "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", "workspaceDrawer.allServices": "Tüm servisler", - "workspaceDrawer.headline": "Workspaces", + "workspaceDrawer.headline": "Çalışma Alanları", "workspaceDrawer.item.contextMenuEdit": "edit", "workspaceDrawer.item.noServicesAddedYet": "No services added yet", "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", -- cgit v1.2.3-70-g09d2 From a2d7d1e368a822422a1c88b0d8a514a1cf0dab41 Mon Sep 17 00:00:00 2001 From: Amine Mouafik Date: Sun, 20 Oct 2019 17:50:08 +0700 Subject: #87 Try using LOCALAPPDATA for win32 portable version --- README.md | 6 +++--- src/index.js | 9 ++++----- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7e591eb02..76925d706 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ You can find the installers in the [latest release](https://github.com/getferdi/ - [x] Add CTRL+← and CTRL+→ shortcuts and menu options to go back and forward in the service browsing history([#39](https://github.com/getferdi/ferdi/issues/39)) - [x] Add option to show a browser-like navigation bar on all services - [x] Add option to change accent color -- [x] Add "`FERDI_APPDATA_DIR`" env variable to set a custom path for storing all data +- [x] Add "`LOCALAPPDATA`" env variable to set a custom path for storing all data - [x] Add Process Manager to find services using a lot of resources - [x] Add "npm run prepare-code" command for development to lint and beautify code - [x] Add button to open darkmode.css for a service @@ -54,7 +54,6 @@ You can find the installers in the [latest release](https://github.com/getferdi/ ### Preparations - #### Clone repository with submodule ```bash @@ -147,6 +146,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d + @@ -159,6 +159,6 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! - ## Backers via OpenCollective + diff --git a/src/index.js b/src/index.js index 4d7215d5e..d13ab35a0 100644 --- a/src/index.js +++ b/src/index.js @@ -9,12 +9,11 @@ import fs from 'fs-extra'; import path from 'path'; import windowStateKeeper from 'electron-window-state'; -// Set app directory before loading user modules -if (process.env.FERDI_APPDATA_DIR || process.env.PORTABLE_EXECUTABLE_DIR) { - const appDataPath = process.env.FERDI_APPDATA_DIR || process.env.PORTABLE_EXECUTABLE_DIR; - app.setPath('appData', appDataPath); - app.setPath('userData', path.join(app.getPath('appData'), app.getName())); +if (process.platform == "win32") { + app.setPath("appData", process.env.LOCALAPPDATA); + app.setPath("userData", path.join(process.env.LOCALAPPDATA, app.getName())); } + if (isDevMode) { app.setPath('userData', path.join(app.getPath('appData'), `${app.getName()}Dev`)); } -- cgit v1.2.3-70-g09d2 From 632f0be1dc42f59cb37b1ce6c67279d12d84a9f6 Mon Sep 17 00:00:00 2001 From: Amine Mouafik Date: Sun, 20 Oct 2019 17:55:16 +0700 Subject: Mass replace of availible by available --- src/components/layout/Sidebar.js | 2 +- src/components/settings/team/TeamDashboard.js | 16 ++++++++-------- src/i18n/apply-branding.js | 2 +- src/i18n/locales/af.json | 4 ++-- src/i18n/locales/ar.json | 4 ++-- src/i18n/locales/bs.json | 4 ++-- src/i18n/locales/ca.json | 4 ++-- src/i18n/locales/cs.json | 4 ++-- src/i18n/locales/da.json | 4 ++-- src/i18n/locales/de.json | 4 ++-- src/i18n/locales/defaultMessages.json | 8 ++++---- src/i18n/locales/el.json | 4 ++-- src/i18n/locales/en-US.json | 4 ++-- src/i18n/locales/es.json | 4 ++-- src/i18n/locales/fi.json | 4 ++-- src/i18n/locales/fr.json | 4 ++-- src/i18n/locales/ga.json | 4 ++-- src/i18n/locales/he.json | 4 ++-- src/i18n/locales/hr.json | 4 ++-- src/i18n/locales/hu.json | 4 ++-- src/i18n/locales/id.json | 4 ++-- src/i18n/locales/it.json | 4 ++-- src/i18n/locales/ja.json | 4 ++-- src/i18n/locales/ka.json | 4 ++-- src/i18n/locales/ko.json | 4 ++-- src/i18n/locales/nl-BE.json | 4 ++-- src/i18n/locales/nl.json | 4 ++-- src/i18n/locales/no.json | 4 ++-- src/i18n/locales/pl.json | 4 ++-- src/i18n/locales/pt-BR.json | 4 ++-- src/i18n/locales/pt.json | 4 ++-- src/i18n/locales/ro.json | 4 ++-- src/i18n/locales/ru.json | 4 ++-- src/i18n/locales/sk.json | 4 ++-- src/i18n/locales/sl.json | 4 ++-- src/i18n/locales/sr.json | 4 ++-- src/i18n/locales/sv.json | 4 ++-- src/i18n/locales/tr.json | 4 ++-- src/i18n/locales/uk.json | 4 ++-- src/i18n/locales/vi.json | 4 ++-- src/i18n/locales/zh.json | 4 ++-- .../src/components/settings/team/TeamDashboard.json | 8 ++++---- src/styles/layout.scss | 2 +- 43 files changed, 93 insertions(+), 93 deletions(-) diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js index f7d10735c..48a83c5a1 100644 --- a/src/components/layout/Sidebar.js +++ b/src/components/layout/Sidebar.js @@ -203,7 +203,7 @@ export default @inject('stores', 'actions') @observer class Sidebar extends Comp { (this.props.stores.app.updateStatus === this.props.stores.app.updateStatusTypes.AVAILABLE || this.props.stores.app.updateStatus === this.props.stores.app.updateStatusTypes.DOWNLOADED) && ( - + ) } diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js index 3a38d682b..7e6d93997 100644 --- a/src/components/settings/team/TeamDashboard.js +++ b/src/components/settings/team/TeamDashboard.js @@ -38,13 +38,13 @@ const messages = defineMessages({ id: 'settings.team.upgradeAction', defaultMessage: '!!!Upgrade your Account', }, - teamsUnavailible: { - id: 'settings.team.teamsUnavailible', - defaultMessage: '!!!Teams are unavailible', + teamsUnavailable: { + id: 'settings.team.teamsUnavailable', + defaultMessage: '!!!Teams are unavailable', }, - teamsUnavailibleInfo: { - id: 'settings.team.teamsUnavailibleInfo', - defaultMessage: '!!!Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.', + teamsUnavailableInfo: { + id: 'settings.team.teamsUnavailableInfo', + defaultMessage: '!!!Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.', }, }); @@ -208,9 +208,9 @@ export default @injectSheet(styles) @observer class TeamDashboard extends Compon

- {intl.formatMessage(messages.teamsUnavailible)} + {intl.formatMessage(messages.teamsUnavailable)}

- {intl.formatMessage(messages.teamsUnavailibleInfo)} + {intl.formatMessage(messages.teamsUnavailableInfo)}
); diff --git a/src/i18n/apply-branding.js b/src/i18n/apply-branding.js index 1494ce923..316413edd 100644 --- a/src/i18n/apply-branding.js +++ b/src/i18n/apply-branding.js @@ -12,7 +12,7 @@ const ignore = [ 'login.customServerQuestion', 'settings.app.todoServerInfo', 'settings.app.serverMoneyInfo', - 'settings.team.teamsUnavailibleInfo', + 'settings.team.teamsUnavailableInfo', ]; // Files to ignore when applying branding diff --git a/src/i18n/locales/af.json b/src/i18n/locales/af.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/af.json +++ b/src/i18n/locales/af.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/ar.json +++ b/src/i18n/locales/ar.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/bs.json b/src/i18n/locales/bs.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/bs.json +++ b/src/i18n/locales/bs.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 306c8e91d..41aaf37a3 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json @@ -356,8 +356,8 @@ "settings.team.headline": "Equip", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Empresa", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index cd458df49..7f9b29c8a 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json @@ -356,8 +356,8 @@ "settings.team.headline": "Tým", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Společnost", "settings.user.form.accountType.individual": "Jednotlivec", diff --git a/src/i18n/locales/da.json b/src/i18n/locales/da.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/da.json +++ b/src/i18n/locales/da.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 1b7b5969a..aef231f05 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "Mit Ferdi für Teams kannst du Premium Lizenzen für Kolleginnen und Kollegen oder Freunde und Familienmitglieder kaufen und verwalten - so viele du willst.", "settings.team.manageAction": "Verwalte dein Team auf getferdi.com", - "settings.team.teamsUnavailible": "Teams sind nicht verfügbar", - "settings.team.teamsUnavailibleInfo": "Teams sind derzeit nur bei der Verwendung des Franz Servers und nach der Zahlung für Franz Professional verfügbar. \nBitte ändern Sie Ihren Server auf https://api.franzinfra.com, um Teams zu verwenden.", + "settings.team.teamsUnavailable": "Teams sind nicht verfügbar", + "settings.team.teamsUnavailableInfo": "Teams sind derzeit nur bei der Verwendung des Franz Servers und nach der Zahlung für Franz Professional verfügbar. \nBitte ändern Sie Ihren Server auf https://api.franzinfra.com, um Teams zu verwenden.", "settings.team.upgradeAction": "Account Upgrade durchführen", "settings.user.form.accountType.company": "Firma", "settings.user.form.accountType.individual": "Einzelperson", diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index c9f5ac50c..e188c1d23 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3083,26 +3083,26 @@ } }, { - "defaultMessage": "!!!Teams are unavailible", + "defaultMessage": "!!!Teams are unavailable", "end": { "column": 3, "line": 44 }, "file": "src/components/settings/team/TeamDashboard.js", - "id": "settings.team.teamsUnavailible", + "id": "settings.team.teamsUnavailable", "start": { "column": 20, "line": 41 } }, { - "defaultMessage": "!!!Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "defaultMessage": "!!!Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "end": { "column": 3, "line": 48 }, "file": "src/components/settings/team/TeamDashboard.js", - "id": "settings.team.teamsUnavailibleInfo", + "id": "settings.team.teamsUnavailableInfo", "start": { "column": 24, "line": 45 diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index bba3e7c6d..af4b990ec 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json @@ -356,8 +356,8 @@ "settings.team.headline": "Ομάδα", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Εταιρεία", "settings.user.form.accountType.individual": "Ατομικός", diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 10f0b7c6f..c809dc021 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 56462cdcd..86a2256f0 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -356,8 +356,8 @@ "settings.team.headline": "Equipo", "settings.team.intro": "¿Usted y su equipo usan a Ferdi? Ahora puede administrar las suscripciones Premium para tantos colegas, amigos o familiares como desee, todo desde una misma cuenta.", "settings.team.manageAction": "Gestione su equipo en getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Actualiza tu cuenta", "settings.user.form.accountType.company": "Empresa", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/fi.json b/src/i18n/locales/fi.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/fi.json +++ b/src/i18n/locales/fi.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 4026ead28..594a009aa 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -356,8 +356,8 @@ "settings.team.headline": "Équipe", "settings.team.intro": "Vous et votre équipes utilise Ferdi? Tu peux désormais gérer les abonnements Premium pour autant de collègues, amis ou membres de famille que tu souhaites, à partir d'un seul et même compte.", "settings.team.manageAction": "Gère ton équipe sur getferdi.com", - "settings.team.teamsUnavailible": "Les équipes sont indisponibles", - "settings.team.teamsUnavailibleInfo": "Les équipes sont actuellement disponibles uniquement lorsque vous utilisez le serveur de Franz et après avoir payé pour Franz Professionnel. Veuillez changer votre serveur à https://api.franzinfra.com pour utiliser des équipes.", + "settings.team.teamsUnavailable": "Les équipes sont indisponibles", + "settings.team.teamsUnavailableInfo": "Les équipes sont actuellement disponibles uniquement lorsque vous utilisez le serveur de Franz et après avoir payé pour Franz Professionnel. Veuillez changer votre serveur à https://api.franzinfra.com pour utiliser des équipes.", "settings.team.upgradeAction": "Améliorez votre compte", "settings.user.form.accountType.company": "Entreprise", "settings.user.form.accountType.individual": "Individuel", diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index 8903b2e30..aa86fe6d1 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json @@ -356,8 +356,8 @@ "settings.team.headline": "Foireann", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Comhlacht", "settings.user.form.accountType.individual": "Ar leith", diff --git a/src/i18n/locales/he.json b/src/i18n/locales/he.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/he.json +++ b/src/i18n/locales/he.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index e2dc5e4b4..a0d5bc659 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json @@ -356,8 +356,8 @@ "settings.team.headline": "Tim", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Tvrtka", "settings.user.form.accountType.individual": "Pojedinac", diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index 0338cb98a..cce492d56 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json @@ -356,8 +356,8 @@ "settings.team.headline": "Csapat", "settings.team.intro": "Te és a csapatod Ferdi-ot használtok? Egy fiókból kezelheted kollégáid, barátaid vagy családtagjaid Prémium előfizetéseit.", "settings.team.manageAction": "Csapat kezelése a getferdi.com-on", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Előfizetés", "settings.user.form.accountType.company": "Cég", "settings.user.form.accountType.individual": "Egyén", diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index 9059f0985..aa1cc6463 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json @@ -356,8 +356,8 @@ "settings.team.headline": "Tim", "settings.team.intro": "Anda dan tim Anda menggunakan Ferdi? Kini Anda bisa mengelola langganan Premium untuk semua rekan kerja, teman, atau anggota keluar sebanyak yang Anda inginkan, semuanya cukup dari satu akun.", "settings.team.manageAction": "Kelola Tim Anda di getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Tingkatkan Akun Anda", "settings.user.form.accountType.company": "Perusahaan", "settings.user.form.accountType.individual": "Pribadi", diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index 9e9b0484d..d6f6549da 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json @@ -356,8 +356,8 @@ "settings.team.headline": "Gruppo", "settings.team.intro": "Tu e il tuo team usate Ferdi? Ora puoi gestire le sottoscrizioni Premium per tutti i colleghi, amici e famigliari che vuoi, tutto da un singolo account.", "settings.team.manageAction": "Gestisci il tuo Team su getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Aggiorna il tuo Account", "settings.user.form.accountType.company": "Società", "settings.user.form.accountType.individual": "Individuale", diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 79eb90db2..afda9ca1c 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -356,8 +356,8 @@ "settings.team.headline": "チーム", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "法人", "settings.user.form.accountType.individual": "個人", diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index 024af8c9b..3878f8eeb 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json @@ -356,8 +356,8 @@ "settings.team.headline": "გუნდი", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "კომპანია", "settings.user.form.accountType.individual": "ინდივიდუალური", diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/ko.json +++ b/src/i18n/locales/ko.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index a88168e4a..1176d0f00 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "Gebruiken jij en je team Ferdi? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt, allemaal vanaf één account.", "settings.team.manageAction": "Beheer je Team op getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade je Account", "settings.user.form.accountType.company": "Bedrijf", "settings.user.form.accountType.individual": "Particulier", diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index 538df2fb8..dab8545c9 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "Gebruiken jij en je team Ferdi? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt. En dat alles vanuit één account.", "settings.team.manageAction": "Beheer je Team op getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Jouw Account opwaarderen", "settings.user.form.accountType.company": "Bedrijf", "settings.user.form.accountType.individual": "Individueel", diff --git a/src/i18n/locales/no.json b/src/i18n/locales/no.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/no.json +++ b/src/i18n/locales/no.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index fe65f73b8..85dde2229 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json @@ -356,8 +356,8 @@ "settings.team.headline": "Zespół", "settings.team.intro": "Czy Ty i zesół używacie programu Ferdi? Możesz teraz zarządzać subskrypcją Premium dla tylu kolegów, przyjaciół lub rodziny ilu chcesz, wszystko w obrębie jednego konta.", "settings.team.manageAction": "Zarządzaj zespołem na getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Ulepsz swoje konto", "settings.user.form.accountType.company": "Firma", "settings.user.form.accountType.individual": "Prywatne", diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index 91c1fbc37..0b8a51750 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json @@ -356,8 +356,8 @@ "settings.team.headline": "Equipe", "settings.team.intro": "Você e sua equipe usam Ferdi? Você pode agora administrar as inscrições pagas de todos os seus colegas, amigos e membros da família que você quiser, tudo isso em uma única conta.", "settings.team.manageAction": "Gerencie sua Equipe no getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Atualize a sua conta para versão paga", "settings.user.form.accountType.company": "Empresa", "settings.user.form.accountType.individual": "Pessoal", diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index 2237cc059..8948f223a 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json @@ -356,8 +356,8 @@ "settings.team.headline": "Equipa", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Gerir a tua Equipa em getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Actualiza a tua conta", "settings.user.form.accountType.company": "Empresa", "settings.user.form.accountType.individual": "Indivíduo", diff --git a/src/i18n/locales/ro.json b/src/i18n/locales/ro.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/ro.json +++ b/src/i18n/locales/ro.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 58fa12b60..557cf0de6 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -356,8 +356,8 @@ "settings.team.headline": "Команда", "settings.team.intro": "Вы и ваша команда испльзуете Ferdi? Вы теперь можете управлять Премиум подписками любого количества коллег, друзей и членов семьи, из одного и того же аккаунта.", "settings.team.manageAction": "Управляйте вашей Командой на getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Улучшить ваш аккаунт", "settings.user.form.accountType.company": "Компания", "settings.user.form.accountType.individual": "Индивидуальный", diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index ca4410a56..398f4c85a 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json @@ -356,8 +356,8 @@ "settings.team.headline": "Tím", "settings.team.intro": "Vy a váš tím používate Ferdi? Teraz môžete spravovať prémiové predplatné pre toľko kolegov, priateľov alebo rodinných príslušníkov, koľko chcete, všetko z jedného účtu.", "settings.team.manageAction": "Spravujte svoj tím na adrese getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Vylepšite svoj účet", "settings.user.form.accountType.company": "Spoločnosť", "settings.user.form.accountType.individual": "Osoba", diff --git a/src/i18n/locales/sl.json b/src/i18n/locales/sl.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/sl.json +++ b/src/i18n/locales/sl.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index 4aacd6d6e..8493077bb 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json @@ -356,8 +356,8 @@ "settings.team.headline": "Tim", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Tvrtka", "settings.user.form.accountType.individual": "Pojedinac", diff --git a/src/i18n/locales/sv.json b/src/i18n/locales/sv.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/sv.json +++ b/src/i18n/locales/sv.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 08f661d8f..3a49fd0dc 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json @@ -356,8 +356,8 @@ "settings.team.headline": "Takım", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "getferdi.com adresinden Ekibini yönet", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Kurum", "settings.user.form.accountType.individual": "Bireysel", diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index 7cbfdc3a3..d0525983f 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json @@ -356,8 +356,8 @@ "settings.team.headline": "Команда", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Компанія", "settings.user.form.accountType.individual": "Індивідуальний", diff --git a/src/i18n/locales/vi.json b/src/i18n/locales/vi.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/vi.json +++ b/src/i18n/locales/vi.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index f60644ab3..2e3034367 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailible": "Teams are unavailible", - "settings.team.teamsUnavailibleInfo": "Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "Company", "settings.user.form.accountType.individual": "Individual", diff --git a/src/i18n/messages/src/components/settings/team/TeamDashboard.json b/src/i18n/messages/src/components/settings/team/TeamDashboard.json index 64693933c..bbf362087 100644 --- a/src/i18n/messages/src/components/settings/team/TeamDashboard.json +++ b/src/i18n/messages/src/components/settings/team/TeamDashboard.json @@ -78,8 +78,8 @@ } }, { - "id": "settings.team.teamsUnavailible", - "defaultMessage": "!!!Teams are unavailible", + "id": "settings.team.teamsUnavailable", + "defaultMessage": "!!!Teams are unavailable", "file": "src/components/settings/team/TeamDashboard.js", "start": { "line": 41, @@ -91,8 +91,8 @@ } }, { - "id": "settings.team.teamsUnavailibleInfo", - "defaultMessage": "!!!Teams are currently only availible when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "id": "settings.team.teamsUnavailableInfo", + "defaultMessage": "!!!Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "file": "src/components/settings/team/TeamDashboard.js", "start": { "line": 45, diff --git a/src/styles/layout.scss b/src/styles/layout.scss index a7de4b247..c09d69f6c 100644 --- a/src/styles/layout.scss +++ b/src/styles/layout.scss @@ -39,7 +39,7 @@ html { overflow: hidden; } color: $theme-brand-primary; } - .update-availible { + .update-available { align-items: center; background: $theme-brand-danger; border-radius: 20px; -- cgit v1.2.3-70-g09d2 From f698e98aae2e256a1779a99e920a9eb38c0ca6bc Mon Sep 17 00:00:00 2001 From: Amine Mouafik Date: Sun, 20 Oct 2019 18:14:58 +0700 Subject: Fix linter (=== instead of ==) --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index d13ab35a0..6b7790e2f 100644 --- a/src/index.js +++ b/src/index.js @@ -9,7 +9,7 @@ import fs from 'fs-extra'; import path from 'path'; import windowStateKeeper from 'electron-window-state'; -if (process.platform == "win32") { +if (process.platform === "win32") { app.setPath("appData", process.env.LOCALAPPDATA); app.setPath("userData", path.join(process.env.LOCALAPPDATA, app.getName())); } -- cgit v1.2.3-70-g09d2 From d688f9b790f91e5af5fcbb14876d7cd1b49638e7 Mon Sep 17 00:00:00 2001 From: Amine Mouafik Date: Sun, 20 Oct 2019 18:18:52 +0700 Subject: Mention portable version for Windows instead of env variable --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 76925d706..3595ee68a 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ You can find the installers in the [latest release](https://github.com/getferdi/ - [x] Add CTRL+← and CTRL+→ shortcuts and menu options to go back and forward in the service browsing history([#39](https://github.com/getferdi/ferdi/issues/39)) - [x] Add option to show a browser-like navigation bar on all services - [x] Add option to change accent color -- [x] Add "`LOCALAPPDATA`" env variable to set a custom path for storing all data +- [x] Add portable version for Windows - [x] Add Process Manager to find services using a lot of resources - [x] Add "npm run prepare-code" command for development to lint and beautify code - [x] Add button to open darkmode.css for a service -- cgit v1.2.3-70-g09d2 From 3f59355653dd4d8612bc7b0fca8509e5bb9a2cb7 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 13:46:48 +0200 Subject: New translations en-US.json (Chinese Traditional) --- src/i18n/locales/zh-Hant.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/i18n/locales/zh-Hant.json b/src/i18n/locales/zh-Hant.json index 678554c05..ffaa0a3c5 100644 --- a/src/i18n/locales/zh-Hant.json +++ b/src/i18n/locales/zh-Hant.json @@ -54,6 +54,7 @@ "locked.invalidCredentials": "Password invalid", "locked.password.label": "Password", "locked.submit.label": "Unlock", + "login.changeServer": "Change server", "login.customServerQuestion": "Using a custom Ferdi server?", "login.customServerSuggestion": "Try importing your Franz account", "login.email.label": "電子郵件信箱", @@ -186,6 +187,7 @@ "services.getStarted": "開始使用", "services.login": "Please login to use Ferdi.", "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", + "services.serverless": "Use Ferdi without an Account", "services.welcome": "歡迎使用 Ferdi", "settings.account.account.editButton": "更改帳戶資訊", "settings.account.accountType.basic": "基本帳戶", @@ -354,6 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "公司", "settings.user.form.accountType.individual": "個人", -- cgit v1.2.3-70-g09d2 From 2dcd1ee5a6efb1bd678ef8e65f2585f4c1a56a0b Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 13:46:59 +0200 Subject: New translations en-US.json (French) --- src/i18n/locales/fr.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 594a009aa..b08da171c 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -356,8 +356,8 @@ "settings.team.headline": "Équipe", "settings.team.intro": "Vous et votre équipes utilise Ferdi? Tu peux désormais gérer les abonnements Premium pour autant de collègues, amis ou membres de famille que tu souhaites, à partir d'un seul et même compte.", "settings.team.manageAction": "Gère ton équipe sur getferdi.com", - "settings.team.teamsUnavailable": "Les équipes sont indisponibles", - "settings.team.teamsUnavailableInfo": "Les équipes sont actuellement disponibles uniquement lorsque vous utilisez le serveur de Franz et après avoir payé pour Franz Professionnel. Veuillez changer votre serveur à https://api.franzinfra.com pour utiliser des équipes.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Améliorez votre compte", "settings.user.form.accountType.company": "Entreprise", "settings.user.form.accountType.individual": "Individuel", -- cgit v1.2.3-70-g09d2 From 22803c31cfe690e84fb455ee0bcf9e90d46e61ce Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 13:47:04 +0200 Subject: New translations en-US.json (German) --- src/i18n/locales/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index aef231f05..99267726d 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "Mit Ferdi für Teams kannst du Premium Lizenzen für Kolleginnen und Kollegen oder Freunde und Familienmitglieder kaufen und verwalten - so viele du willst.", "settings.team.manageAction": "Verwalte dein Team auf getferdi.com", - "settings.team.teamsUnavailable": "Teams sind nicht verfügbar", - "settings.team.teamsUnavailableInfo": "Teams sind derzeit nur bei der Verwendung des Franz Servers und nach der Zahlung für Franz Professional verfügbar. \nBitte ändern Sie Ihren Server auf https://api.franzinfra.com, um Teams zu verwenden.", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Account Upgrade durchführen", "settings.user.form.accountType.company": "Firma", "settings.user.form.accountType.individual": "Einzelperson", -- cgit v1.2.3-70-g09d2 From f468e55f5dc3c08b48e4526e0fc7b5040b07ca44 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Sun, 20 Oct 2019 13:53:05 +0200 Subject: Fix hard coded plan name --- .../trialStatusBar/containers/TrialStatusBarScreen.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/features/trialStatusBar/containers/TrialStatusBarScreen.js b/src/features/trialStatusBar/containers/TrialStatusBarScreen.js index 15201496b..35b70a5bc 100644 --- a/src/features/trialStatusBar/containers/TrialStatusBarScreen.js +++ b/src/features/trialStatusBar/containers/TrialStatusBarScreen.js @@ -2,15 +2,21 @@ import React, { Component } from 'react'; import { observer, inject } from 'mobx-react'; import PropTypes from 'prop-types'; import ms from 'ms'; +import { intlShape } from 'react-intl'; import FeaturesStore from '../../../stores/FeaturesStore'; import UserStore from '../../../stores/UserStore'; import TrialStatusBar from '../components/TrialStatusBar'; import ErrorBoundary from '../../../components/util/ErrorBoundary'; import { trialStatusBarStore } from '..'; +import { i18nPlanName } from '../../../helpers/plan-helpers'; @inject('stores', 'actions') @observer class TrialStatusBarScreen extends Component { + static contextTypes = { + intl: intlShape, + }; + state = { showOverlay: true, percent: 0, @@ -53,6 +59,8 @@ class TrialStatusBarScreen extends Component { render() { + const { intl } = this.context; + const { showOverlay, percent, @@ -67,10 +75,12 @@ class TrialStatusBarScreen extends Component { const { user } = this.props.stores; const { upgradeAccount } = this.props.actions.payment; + const planName = i18nPlanName(user.team.plan, intl); + return ( upgradeAccount({ -- cgit v1.2.3-70-g09d2 From c73ec686fa7ef8d8d0ddbd07347612391c2e6b5f Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 15:45:40 +0200 Subject: New translations en-US.json (French) --- src/i18n/locales/fr.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index b08da171c..594a009aa 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -356,8 +356,8 @@ "settings.team.headline": "Équipe", "settings.team.intro": "Vous et votre équipes utilise Ferdi? Tu peux désormais gérer les abonnements Premium pour autant de collègues, amis ou membres de famille que tu souhaites, à partir d'un seul et même compte.", "settings.team.manageAction": "Gère ton équipe sur getferdi.com", - "settings.team.teamsUnavailable": "Teams are unavailable", - "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Les équipes sont indisponibles", + "settings.team.teamsUnavailableInfo": "Les équipes sont actuellement disponibles uniquement lorsque vous utilisez le serveur de Franz et après avoir payé pour Franz Professionnel. Veuillez changer votre serveur à https://api.franzinfra.com pour utiliser des équipes.", "settings.team.upgradeAction": "Améliorez votre compte", "settings.user.form.accountType.company": "Entreprise", "settings.user.form.accountType.individual": "Individuel", -- cgit v1.2.3-70-g09d2 From 11e1ef8a8c6d678b3c79420eee645fac01b85625 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Sun, 20 Oct 2019 18:21:00 +0200 Subject: Update internal server --- src/server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server b/src/server index a2b75e6d3..6809d9654 160000 --- a/src/server +++ b/src/server @@ -1 +1 @@ -Subproject commit a2b75e6d312304770d49254e8cb3f076efce326c +Subproject commit 6809d96541f8670933bb81d7d99ab422532ad283 -- cgit v1.2.3-70-g09d2 From 746e45132419fcd629edceb1599b5c146c7ee1a3 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Sun, 20 Oct 2019 18:24:06 +0200 Subject: Fix lint --- src/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/index.js b/src/index.js index 6b7790e2f..a4880a25a 100644 --- a/src/index.js +++ b/src/index.js @@ -9,9 +9,9 @@ import fs from 'fs-extra'; import path from 'path'; import windowStateKeeper from 'electron-window-state'; -if (process.platform === "win32") { - app.setPath("appData", process.env.LOCALAPPDATA); - app.setPath("userData", path.join(process.env.LOCALAPPDATA, app.getName())); +if (process.platform === 'win32') { + app.setPath('appData', process.env.LOCALAPPDATA); + app.setPath('userData', path.join(process.env.LOCALAPPDATA, app.getName())); } if (isDevMode) { -- cgit v1.2.3-70-g09d2 From 048d96800e9b0fd983faeca7fd427a98378fb3fb Mon Sep 17 00:00:00 2001 From: vantezzen Date: Sun, 20 Oct 2019 18:29:00 +0200 Subject: Fix #139 --- src/i18n/apply-branding.js | 1 + src/i18n/locales/en-US.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/apply-branding.js b/src/i18n/apply-branding.js index 316413edd..d88d8741b 100644 --- a/src/i18n/apply-branding.js +++ b/src/i18n/apply-branding.js @@ -13,6 +13,7 @@ const ignore = [ 'settings.app.todoServerInfo', 'settings.app.serverMoneyInfo', 'settings.team.teamsUnavailableInfo', + 'settings.app.serverMoneyInfo', ]; // Files to ignore when applying branding diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index c809dc021..477bdf43c 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 79b8c425360a2594d42c424106c1bcebd74039bc Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:36:37 +0200 Subject: New translations en-US.json (Afrikaans) --- src/i18n/locales/af.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/af.json b/src/i18n/locales/af.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/af.json +++ b/src/i18n/locales/af.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From a1716b439b8d0d1d78e008163216e7d918aa631b Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:36:40 +0200 Subject: New translations en-US.json (Romanian) --- src/i18n/locales/ro.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/ro.json b/src/i18n/locales/ro.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/ro.json +++ b/src/i18n/locales/ro.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From d979849192bb6c04839729f33dbfa0558bbc11d2 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:36:42 +0200 Subject: New translations en-US.json (Japanese) --- src/i18n/locales/ja.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index afda9ca1c..49c886dc6 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "キャッシュ", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Ferdiの翻訳作業にご協力をお願いします。", -- cgit v1.2.3-70-g09d2 From 66117f95bac5c0c0d49c91ddbfc5eb1869423ed6 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:36:45 +0200 Subject: New translations en-US.json (Korean) --- src/i18n/locales/ko.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/ko.json +++ b/src/i18n/locales/ko.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 2a245fc902eaae13ef0844d4e78e3eaf4a17d506 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:36:47 +0200 Subject: New translations en-US.json (Norwegian) --- src/i18n/locales/no.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/no.json b/src/i18n/locales/no.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/no.json +++ b/src/i18n/locales/no.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 9dda359952533c9b7c07cad02d6e0aa9d536c56e Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:36:49 +0200 Subject: New translations en-US.json (Polish) --- src/i18n/locales/pl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index 85dde2229..6b4eb7d6e 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Pamięć podręczna", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Pomóż nam tłumaczyć Ferdi na Twój język.", -- cgit v1.2.3-70-g09d2 From 2536b1df19dd0025889d3aa1f66da8407cb317f4 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:36:52 +0200 Subject: New translations en-US.json (Portuguese) --- src/i18n/locales/pt-BR.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index 0b8a51750..3d16482c9 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "memória cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Ajude-nos a traduzir o Ferdi para seu idioma.", -- cgit v1.2.3-70-g09d2 From 58ce5748d7d4c35d912c7a697c2a083cb66ec262 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:36:55 +0200 Subject: New translations en-US.json (Portuguese, Brazilian) --- src/i18n/locales/pt.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index 8948f223a..175322720 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Ajude-nos a traduzir a Ferdi para a sua língua.", -- cgit v1.2.3-70-g09d2 From fccae51bf1166448a6263e48124983a489143a17 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:36:57 +0200 Subject: New translations en-US.json (Russian) --- src/i18n/locales/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 557cf0de6..c1ae5cafd 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Кэш", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Помогите нам перевести Ferdi на ваш язык.", -- cgit v1.2.3-70-g09d2 From bbd980a1a222845424392dbb321fb53750ca7137 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:36:59 +0200 Subject: New translations en-US.json (Irish) --- src/i18n/locales/ga.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index aa86fe6d1..acd72ee0b 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Taisce", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Cabhraigh linn Ferdi a aistriú i do theanga.", -- cgit v1.2.3-70-g09d2 From 7fea7a4c671071d3166677cb89915b656a96db98 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:01 +0200 Subject: New translations en-US.json (Serbian (Cyrillic)) --- src/i18n/locales/sr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index 8493077bb..97ec48859 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Кеш", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Pomozite nam prevesti aplikaciju na Vaš jezik. ", -- cgit v1.2.3-70-g09d2 From 9137169dad0ae528745afcb9e7113ad9e412e87c Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:03 +0200 Subject: New translations en-US.json (Slovak) --- src/i18n/locales/sk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index 398f4c85a..aa8c65005 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Vyrovnávacia pamäť", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Pomôžte nám preložiť Ferdi do svojho jazyka.", -- cgit v1.2.3-70-g09d2 From 560020c5889ad0aa0648b04b92b32bacfd5716be Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:05 +0200 Subject: New translations en-US.json (Slovenian) --- src/i18n/locales/sl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/sl.json b/src/i18n/locales/sl.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/sl.json +++ b/src/i18n/locales/sl.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From c5ccb0517e4caf8e8f0c6274077b8082339ce9ba Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:09 +0200 Subject: New translations en-US.json (Spanish) --- src/i18n/locales/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 86a2256f0..178dcfc51 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Caché", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Ayúdanos a traducir Ferdi a tu idioma.", -- cgit v1.2.3-70-g09d2 From 66c7dc024ddf9a972354e37b4d239d410b252fa4 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:10 +0200 Subject: New translations en-US.json (Swedish) --- src/i18n/locales/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/sv.json b/src/i18n/locales/sv.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/sv.json +++ b/src/i18n/locales/sv.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 0d445ca81f72440bb4d0c4b3bcc4cc355f380ad5 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:12 +0200 Subject: New translations en-US.json (Turkish) --- src/i18n/locales/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 734e8a2dd..1fd54a50d 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Önbellek", "settings.app.todoServerInfo": "Bu sunucu \"Ferdi Yapılacaklar Listesi\" özelliği için kullanılacakdır. (varsayılan: https://app.franztodos.com)", "settings.app.translationHelp": "Ferdi'ı senin diline tercüme etmemiz için yardım et.", -- cgit v1.2.3-70-g09d2 From 90851cb5a7429e72e7ffe2a863c38eab2b48c02b Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:15 +0200 Subject: New translations en-US.json (Ukrainian) --- src/i18n/locales/uk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index d0525983f..d6da96961 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Кеш", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Допоможіть перекласти Ferdi на Вашу мову.", -- cgit v1.2.3-70-g09d2 From cc52bc0fbe84e237ae961e1d8d6baaf90dbe6b3e Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:17 +0200 Subject: New translations en-US.json (Italian) --- src/i18n/locales/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index d6f6549da..9a49fb6ce 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Aiutaci a tradurre Ferdi nella tua lingua.", -- cgit v1.2.3-70-g09d2 From 7705c1865ea71b706d31bab0ffe4273e261e4ec3 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:19 +0200 Subject: New translations en-US.json (Indonesian) --- src/i18n/locales/id.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index aa1cc6463..dcbd826c3 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Singgahan", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Bantu kami menerjemahkan Ferdi ke bahasa Anda.", -- cgit v1.2.3-70-g09d2 From 03c153803fc2371587f1303261fa7e01aa444a26 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:21 +0200 Subject: New translations en-US.json (Arabic) --- src/i18n/locales/ar.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/ar.json +++ b/src/i18n/locales/ar.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From ecf3b778419c8ff1c734bc0efad09fcd3f89d932 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:23 +0200 Subject: New translations en-US.json (Danish) --- src/i18n/locales/da.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/da.json b/src/i18n/locales/da.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/da.json +++ b/src/i18n/locales/da.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 98989267fbeb7966379d88bee96bc374f4845908 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:25 +0200 Subject: New translations en-US.json (Bosnian) --- src/i18n/locales/bs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/bs.json b/src/i18n/locales/bs.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/bs.json +++ b/src/i18n/locales/bs.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 260a6923ee8ff65c18883f2133afc626d06bbd2b Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:28 +0200 Subject: New translations en-US.json (Catalan) --- src/i18n/locales/ca.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 41aaf37a3..2c8696f8e 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Memòria cau", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Ajuda'ns a traduir Ferdi en la teva llengua.", -- cgit v1.2.3-70-g09d2 From e550ec8ef32af0b5c348572e0e1dc785c6291943 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:30 +0200 Subject: New translations en-US.json (Chinese Simplified) --- src/i18n/locales/zh.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 2d118900d57f95c120098d8e8b9194eed4495dff Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:31 +0200 Subject: New translations en-US.json (Chinese Traditional) --- src/i18n/locales/zh-Hant.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/zh-Hant.json b/src/i18n/locales/zh-Hant.json index ffaa0a3c5..899591ab0 100644 --- a/src/i18n/locales/zh-Hant.json +++ b/src/i18n/locales/zh-Hant.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 37a3adde41f9fe3be3c40ef30a1847ebfb8dffcf Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:33 +0200 Subject: New translations en-US.json (Croatian) --- src/i18n/locales/hr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index a0d5bc659..94ea0582d 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Predmemorija", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Pomozite nam prevesti aplikaciju na Vaš jezik. ", -- cgit v1.2.3-70-g09d2 From 44032f15b97af1c803166582618f1c3adf4a02e0 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:35 +0200 Subject: New translations en-US.json (Czech) --- src/i18n/locales/cs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index 7f9b29c8a..cd4b7bfcd 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Mezipaměť", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Pomozte nám přeložit Ferdi do svého jazyka.", -- cgit v1.2.3-70-g09d2 From 4ea2dfc943cc7cf71609e45a70ea451ad61268d6 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:37 +0200 Subject: New translations en-US.json (Dutch) --- src/i18n/locales/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index dab8545c9..af26ffa1e 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help ons om Ferdi uw taal te laten spreken.", -- cgit v1.2.3-70-g09d2 From 724392071bf8643049d6a2817b622729ecec0ec9 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:39 +0200 Subject: New translations en-US.json (Hungarian) --- src/i18n/locales/hu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index cce492d56..83d454eec 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Gyorsítótár", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Segíts nekünk a Ferdi-ot lefordítani a nyelvedre.", -- cgit v1.2.3-70-g09d2 From bab289f6ebf1c278529e009bdd093de08176fc39 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:42 +0200 Subject: New translations en-US.json (Finnish) --- src/i18n/locales/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/fi.json b/src/i18n/locales/fi.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/fi.json +++ b/src/i18n/locales/fi.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 3bbed910a1b102bbab3159fc58dc583d6b1a8bc0 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:44 +0200 Subject: New translations en-US.json (Flemish) --- src/i18n/locales/nl-BE.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index 1176d0f00..dda3e65f5 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help ons om Ferdi te vertalen naar uw taal.", -- cgit v1.2.3-70-g09d2 From de7ff3de884132d3572dcd9691d8b704b0773f95 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:45 +0200 Subject: New translations en-US.json (French) --- src/i18n/locales/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 594a009aa..3f2e04722 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Planifier le Ne-pas-Déranger vous permet de définir une période de temps dans lequel vous ne voulez pas de notifications de Ferdi.", "settings.app.scheduledDNDTimeInfo": "Le temps est en format 24 heures. La fin du temps peut être avant le début du temps (ex: début 17:00, fin 09:00) pour activer le Ne-pas-Déranger durant la nuit.", "settings.app.serverInfo": "On vous recommande de vous déconnecter après d'avoir changer votre serveur dans vos paramètres au risque que les paramètres ne sois pas sauvegarder.", - "settings.app.serverMoneyInfo": "Vous êtes entrain d'utilisé le serveur officiel de Franz pour Ferdi.\nNous savons que Ferdi vous permet d'utilisé toutes les fonctionnalités gratuitement mais vous êtes toujours entrain d'utilisé les resources des serveurs de Franz - dont les créateurs paient pour.\nS'il vous plaît [Link 1]payé pour un compte Franz[/Link] ou [Link 2]utilisé un ferdi-serveur hébergé soi-même[/Link] (si vous avez la connaissance et les resources pour).\nEn utilisant Ferdi, vous profité beaucoup des recettes de Franz, resources serveurs et son développement.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "Ce serveur va être utilisé pour la fonction \"Ferdi Todo\". (défaut: https://app.franztodos.com)", "settings.app.translationHelp": "Aidez-nous à traduire Ferdi dans votre langue.", -- cgit v1.2.3-70-g09d2 From 559c62945e3038a3d688e39f1993ecd5dfe29b2d Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:48 +0200 Subject: New translations en-US.json (Georgian) --- src/i18n/locales/ka.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index 3878f8eeb..0065b1b56 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 32c83f5957829aae5a9eb87841b6ad40ddd7beb3 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:50 +0200 Subject: New translations en-US.json (German) --- src/i18n/locales/de.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 99267726d..6b7ac8a35 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Die geplante \"Nicht-stören\"-Funktion erlaubt es dir eine Zeitspanne festzulegen, in der du keine Benachrichtigungen von Ferdi erhalten möchtest.", "settings.app.scheduledDNDTimeInfo": "Zeiten im 24-Stunden-Format (z.B. 18:00). Endzeit kann vor Beginn der Startzeit sein (z.B. 17:00 Uhr, Ende 09:00), um die Funktion über Nacht zu aktivieren.", "settings.app.serverInfo": "Wir empfehlen dir, dich nach dem Ändern des Servers abzumelden, da Ihre Einstellungen möglicherweise sonst nicht auf dem Server gespeichert werden können.", - "settings.app.serverMoneyInfo": "Du verwenden den offiziellen Franz Server für Ferdi.\nWir wissen, dass Ferdi es dir erlaubt, alle Funktionen kostenlos zu nutzen, aber du verwendest immer noch Franz's Serverressourcen - für die Franz's Entwickler zahlen müssen.\nBitte überlege dir, [Link 1]für ein Franz Premium-Account zu zahlen[/Link] oder [Link 2]dir einen eigene Server einzurichten[/Link] (wenn du das Wissen und die Ressourcen dazu hast). \nDurch die Nutzung von Ferdi profitieren Sie noch immer stark von Franz's Diensten, Serverressourcen und seiner Entwicklung.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "Dieser Server wird für die Funktion \"Ferdi Todo\" verwendet. (Standard: https://app.franztodos.com)", "settings.app.translationHelp": "Hilf uns, Ferdi in Deine Sprache zu übersetzen.", @@ -356,8 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "Mit Ferdi für Teams kannst du Premium Lizenzen für Kolleginnen und Kollegen oder Freunde und Familienmitglieder kaufen und verwalten - so viele du willst.", "settings.team.manageAction": "Verwalte dein Team auf getferdi.com", - "settings.team.teamsUnavailable": "Teams are unavailable", - "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", + "settings.team.teamsUnavailable": "Teams sind nicht verfügbar", + "settings.team.teamsUnavailableInfo": "Teams sind derzeit nur bei der Verwendung des Franz Servers und nach der Zahlung für Franz Professional verfügbar.\nBitte ändern Sie Ihren Server auf https://api.franzinfra.com, um Teams zu verwenden.", "settings.team.upgradeAction": "Account Upgrade durchführen", "settings.user.form.accountType.company": "Firma", "settings.user.form.accountType.individual": "Einzelperson", -- cgit v1.2.3-70-g09d2 From 596e3ac087186dab6e62b216f8e0265585e3c654 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:52 +0200 Subject: New translations en-US.json (Greek) --- src/i18n/locales/el.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index af4b990ec..e8c9d1aae 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Λανθάνουσα μνήμη", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Βοηθήστε μας να μεταφράσουμε το Ferdi στη δική σας γλώσσα.", -- cgit v1.2.3-70-g09d2 From 7f4f1fb9dda61157952c877e55a9184a2385a343 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:54 +0200 Subject: New translations en-US.json (Hebrew) --- src/i18n/locales/he.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/he.json b/src/i18n/locales/he.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/he.json +++ b/src/i18n/locales/he.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 5917846835bb3a8e28ebb53d27cb0c082dd86514 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:37:56 +0200 Subject: New translations en-US.json (Vietnamese) --- src/i18n/locales/vi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/vi.json b/src/i18n/locales/vi.json index 2e3034367..628880d9f 100644 --- a/src/i18n/locales/vi.json +++ b/src/i18n/locales/vi.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", -- cgit v1.2.3-70-g09d2 From 2c58c2e360f18b11474e168919d5df8fa4ad731d Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Sun, 20 Oct 2019 18:46:25 +0200 Subject: New translations en-US.json (French) --- src/i18n/locales/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 3f2e04722..508eb875e 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -265,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Planifier le Ne-pas-Déranger vous permet de définir une période de temps dans lequel vous ne voulez pas de notifications de Ferdi.", "settings.app.scheduledDNDTimeInfo": "Le temps est en format 24 heures. La fin du temps peut être avant le début du temps (ex: début 17:00, fin 09:00) pour activer le Ne-pas-Déranger durant la nuit.", "settings.app.serverInfo": "On vous recommande de vous déconnecter après d'avoir changer votre serveur dans vos paramètres au risque que les paramètres ne sois pas sauvegarder.", - "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "Vous êtes entrain d'utilisé le serveur officiel de Franz pour Ferdi.\nNous savons que Ferdi vous permet d'utilisé toutes les fonctionnalités gratuitement mais vous êtes toujours entrain d'utilisé les resources des serveurs de Franz - dont les créateurs paient pour.\nS'il vous plaît [Link 1]payé pour un compte Franz[/Link] ou [Link 2]utilisé un ferdi-serveur hébergé par soi-même[/Link] (si vous avez la connaissance et les resources pour).\nEn utilisant Ferdi, vous profité beaucoup des recettes de Franz, resources serveurs et son développement.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "Ce serveur va être utilisé pour la fonction \"Ferdi Todo\". (défaut: https://app.franztodos.com)", "settings.app.translationHelp": "Aidez-nous à traduire Ferdi dans votre langue.", -- cgit v1.2.3-70-g09d2 From 43b3f2ac532016cea1fe21f527564564e8eddd86 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Sun, 20 Oct 2019 19:39:39 +0200 Subject: Revert "test to reload app after resume" This reverts commit 9a5f64fbf0ca1d8c73614d03dc7ed3b4cd285387. --- src/stores/AppStore.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index c38e84639..ca5cad836 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -207,7 +207,10 @@ export default class AppStore extends Store { if (this.timeSuspensionStart.add(10, 'm').isBefore(moment())) { debug('Reloading services, user info and features'); - window.location.reload(); + this.actions.service.reloadAll(); + + this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); + this.stores.features.featuresRequest.invalidate({ immediately: true }); statsEvent('resumed-app'); } -- cgit v1.2.3-70-g09d2 From 7e332dc4b7a5fe0c275a8d802752d7ba5dc3d4ec Mon Sep 17 00:00:00 2001 From: vantezzen Date: Sun, 20 Oct 2019 20:08:57 +0200 Subject: Improve switch between accounts and servers --- .../settings/navigation/SettingsNavigation.js | 50 ++++++++++++++++++++-- src/components/ui/AppLoader/index.js | 9 +++- src/containers/auth/AuthLayoutContainer.js | 13 +++++- src/i18n/locales/defaultMessages.json | 32 +++++++------- .../settings/navigation/SettingsNavigation.json | 32 +++++++------- src/stores/UserStore.js | 2 + 6 files changed, 99 insertions(+), 39 deletions(-) diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js index 2711bc107..49e73e569 100644 --- a/src/components/settings/navigation/SettingsNavigation.js +++ b/src/components/settings/navigation/SettingsNavigation.js @@ -3,10 +3,13 @@ import PropTypes from 'prop-types'; import { defineMessages, intlShape } from 'react-intl'; import { inject, observer } from 'mobx-react'; import { ProBadge } from '@meetfranz/ui'; +import { RouterStore } from 'mobx-react-router'; +import { LOCAL_SERVER, LIVE_API } from '../../../config'; import Link from '../../ui/Link'; import { workspaceStore } from '../../../features/workspaces'; import UIStore from '../../../stores/UIStore'; +import SettingsStore from '../../../stores/SettingsStore'; import UserStore from '../../../stores/UserStore'; import { serviceLimitStore } from '../../../features/serviceLimit'; @@ -45,11 +48,18 @@ const messages = defineMessages({ }, }); -export default @inject('stores') @observer class SettingsNavigation extends Component { +export default @inject('stores', 'actions') @observer class SettingsNavigation extends Component { static propTypes = { stores: PropTypes.shape({ ui: PropTypes.instanceOf(UIStore).isRequired, user: PropTypes.instanceOf(UserStore).isRequired, + settings: PropTypes.instanceOf(SettingsStore).isRequired, + router: PropTypes.instanceOf(RouterStore).isRequired, + }).isRequired, + actions: PropTypes.shape({ + settings: PropTypes.shape({ + update: PropTypes.func.isRequired, + }).isRequired, }).isRequired, serviceCount: PropTypes.number.isRequired, workspaceCount: PropTypes.number.isRequired, @@ -59,12 +69,42 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp intl: intlShape, }; + handleLoginLogout() { + const isLoggedIn = Boolean(localStorage.getItem('authToken')); + const isUsingWithoutAccount = this.props.stores.settings.app.server === LOCAL_SERVER; + + if (isLoggedIn) { + // Remove current auth token + localStorage.removeItem('authToken'); + + if (isUsingWithoutAccount) { + // Reset server back to Ferdi API + this.props.actions.settings.update({ + type: 'app', + data: { + server: LIVE_API, + }, + }); + } + } + + this.props.stores.user.isLoggingOut = true; + this.props.stores.router.push(isLoggedIn ? '/auth/logout' : '/auth/welcome'); + + if (isLoggedIn) { + // Reload Ferdi, otherwise many settings won't sync correctly with the server + // after logging into another account + window.location.reload(); + } + } + render() { const { serviceCount, workspaceCount, stores } = this.props; const { isDarkThemeActive } = stores.ui; const { router, user } = stores; const { intl } = this.context; const isLoggedIn = Boolean(localStorage.getItem('authToken')); + const isUsingWithoutAccount = stores.settings.app.server === LOCAL_SERVER; return (
@@ -136,12 +176,14 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp {intl.formatMessage(messages.supportFerdi)} - - { isLoggedIn ? intl.formatMessage(messages.logout) : 'Login'} - + { isLoggedIn && !isUsingWithoutAccount ? intl.formatMessage(messages.logout) : 'Login'} +
); } diff --git a/src/components/ui/AppLoader/index.js b/src/components/ui/AppLoader/index.js index 1fd247d17..a7f6f4545 100644 --- a/src/components/ui/AppLoader/index.js +++ b/src/components/ui/AppLoader/index.js @@ -22,8 +22,13 @@ export default @injectSheet(styles) @withTheme class AppLoader extends Component static propTypes = { classes: PropTypes.object.isRequired, theme: PropTypes.object.isRequired, + texts: PropTypes.array, }; + static defaultProps = { + texts: textList, + } + state = { step: 0, }; @@ -43,7 +48,7 @@ export default @injectSheet(styles) @withTheme class AppLoader extends Component } render() { - const { classes, theme } = this.props; + const { classes, theme, texts } = this.props; const { step } = this.state; return ( @@ -52,7 +57,7 @@ export default @injectSheet(styles) @withTheme class AppLoader extends Component className={classes.component} spinnerColor={theme.colorAppLoaderSpinner} > - {textList.map((text, i) => ( + {texts.map((text, i) => ( + + + ); + } + return ( Date: Sun, 20 Oct 2019 20:12:47 +0200 Subject: Update .eslintignore --- .eslintignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.eslintignore b/.eslintignore index f01f6d6e6..00ae892aa 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,3 +1,5 @@ build/ out/ packages/*/lib +src/server +recipes/ \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 4e563b6f7480518e11f4181b5bac23bbda0d980d Mon Sep 17 00:00:00 2001 From: vantezzen Date: Sun, 20 Oct 2019 20:13:58 +0200 Subject: Update submodules --- src/server | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server b/src/server index 6809d9654..e64385d2a 160000 --- a/src/server +++ b/src/server @@ -1 +1 @@ -Subproject commit 6809d96541f8670933bb81d7d99ab422532ad283 +Subproject commit e64385d2a997aea5790205afa5d5c2c0c6e38a0d -- cgit v1.2.3-70-g09d2 From 91e19cdc880aa789fc1c251a30f616ecb044ff17 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Mon, 21 Oct 2019 10:21:33 +0200 Subject: Update submodules --- recipes | 2 +- src/server | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes b/recipes index c01a693a2..198381d2b 160000 --- a/recipes +++ b/recipes @@ -1 +1 @@ -Subproject commit c01a693a29c84f328b2a353ff16657ce3476edb9 +Subproject commit 198381d2b0f720cdb935b73ef0002a1ace9274de diff --git a/src/server b/src/server index e64385d2a..f541cbf9c 160000 --- a/src/server +++ b/src/server @@ -1 +1 @@ -Subproject commit e64385d2a997aea5790205afa5d5c2c0c6e38a0d +Subproject commit f541cbf9c73d4b80e3d88f084fb8eb9bff7a6411 -- cgit v1.2.3-70-g09d2 From ff696a4b7663a66141f7bb85f1024ede4ef48c5f Mon Sep 17 00:00:00 2001 From: vantezzen Date: Mon, 21 Oct 2019 10:30:12 +0200 Subject: Update feature list --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3595ee68a..cac5c0202 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,8 @@ You can find the installers in the [latest release](https://github.com/getferdi/ - [x] Removes the counter-productive fullscreen app delay inviting users to upgrade - [x] Removes pages begging you to donate after registration +- [x] Remove "Franz is better together" popup +- [x] Remove bug that would incorrectly display unread messages count on some services (more info in [7566ccd](https://github.com/getferdi/ferdi/commit/7566ccd)) - [x] Makes all users Premium by default ([#15](https://github.com/getferdi/ferdi/issues/15)) - [x] Using the Ferdi API instead of Franz's servers - [x] [Add option to change server to a custom](https://github.com/getferdi/ferdi/wiki/Custom-Server) [ferdi-server](https://github.com/getferdi/server) @@ -42,10 +44,9 @@ You can find the installers in the [latest release](https://github.com/getferdi/ - [x] Add Process Manager to find services using a lot of resources - [x] Add "npm run prepare-code" command for development to lint and beautify code - [x] Add button to open darkmode.css for a service +- [x] Switch to [`electron-spellchecker`](https://github.com/electron-userland/electron-spellchecker) ti improve application size - [x] Improve "About Ferdi" screen to better display versions - [x] Minifying build files to improve app size -- [x] Remove "Franz is better together" popup -- [x] Remove bug that would incorrectly display unread messages count on some services (more info in [7566ccd](https://github.com/getferdi/ferdi/commit/7566ccd)) - [x] [Makes it possible to edit the "Franz Todo" server](https://github.com/getferdi/ferdi/wiki/Custom-Todo) - [x] Makes RocketChat self-hosted generally available ([#6](https://github.com/getferdi/ferdi/issues/6)) - [x] Comes with a custom branding proper to Ferdi -- cgit v1.2.3-70-g09d2 From 69cf74a58b9dc539d53a484e6eadca73fa9accf9 Mon Sep 17 00:00:00 2001 From: Amine Mouafik Date: Mon, 21 Oct 2019 16:46:11 +0700 Subject: #145 Review development instructions --- README.md | 41 +++++++++++++++++++++++++++++++---------- docs/linux.md | 11 ----------- 2 files changed, 31 insertions(+), 21 deletions(-) delete mode 100644 docs/linux.md diff --git a/README.md b/README.md index 3595ee68a..1775fdb65 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,27 @@ You can find the installers in the [latest release](https://github.com/getferdi/ ### Preparations +#### Install OS dependencies + +##### Debian/Ubuntu + +```bash +$ apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev +``` + +##### Fedora + +```bash +$ dnf install libX11-devel libXext-devel libXScrnSaver-devel libxkbfile-devel +``` + +##### Windows + +```bash +$ npm install --global windows-build-tools // Windows 10 +$ npm install --global windows-build-tools --vs2015 // Windows 7 +``` + #### Clone repository with submodule ```bash @@ -62,13 +83,11 @@ $ cd getferdi $ git submodule update --init --recursive ``` -#### Install Linux OS dependencies - -[Guide: Linux distribution specific dependencies](docs/linux.md) +It is important you execute the last command to get the required submodules (recipes, server). #### Use right NodeJS version -Please make sure you are running NodeJS v10 (v10.16.3 suggested). Versions above will throw an errow when trying to install due to an [old fsevent dependency](https://github.com/fsevents/fsevents/issues/278) +Please make sure you are running NodeJS v10 (v10.16.3 suggested). Versions above will throw an errow when trying to install due to an [old fsevent dependency](https://github.com/fsevents/fsevents/issues/278). #### Fix native modules to match current electron node version @@ -78,7 +97,7 @@ $ npm run rebuild ### Install dependencies -Run the following command to install all dependencies, and link sibling modules with Franz. +Run the following command to install all dependencies, and link sibling modules with Ferdi. ```bash $ npx lerna bootstrap @@ -86,9 +105,9 @@ $ npx lerna bootstrap If you previously ran `npm install` it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`. -### Run Ferdi Development App +### Start development app -Run these two commands **simultaneously** in different console tabs. +Run these two commands **simultaneously** in different console tabs: ```bash $ npm run dev @@ -97,7 +116,7 @@ $ npm run start Be aware that the development database will be reset regularly. -## Packaging +### Packaging ```bash $ npm run build @@ -105,14 +124,16 @@ $ npm run build Deliverables will be available in the `out` folder. -## Release +### Release ```bash +$ git checkout develop && git pull && git checkout master +$ git merge --no-ff develop $ git tag v5.3.4-beta.4 $ git push --tags ``` -When pushing a new tag, the CI build will create a draft GitHub release and upload the deliverables in the draft release assets. Wait for all the assets to be uploaded before publishing the draft release. +When pushing a new tag, the CI builds will create a draft GitHub release and upload the deliverables in the draft release assets. Wait for all the assets to be uploaded before publishing the draft release. ## Contributors ✨ diff --git a/docs/linux.md b/docs/linux.md deleted file mode 100644 index 43ffa313b..000000000 --- a/docs/linux.md +++ /dev/null @@ -1,11 +0,0 @@ -# Linux distribution specific dependencies - -## Debian/Ubuntu -```bash -$ apt install libx11-dev libxext-dev libxss-dev libxkbfile-dev -``` - -## Fedora -```bash -$ dnf install libX11-devel libXext-devel libXScrnSaver-devel libxkbfile-devel -``` -- cgit v1.2.3-70-g09d2 From bda3a726948e5c3bfc62f1910b88821c8d8e37e6 Mon Sep 17 00:00:00 2001 From: Amine Mouafik Date: Mon, 21 Oct 2019 17:01:21 +0700 Subject: Fix case sensitive conflict on locale file --- src/i18n/locales/zh-HANT.json | 6 +- src/i18n/locales/zh-Hant.json | 448 ------------------------------------------ 2 files changed, 5 insertions(+), 449 deletions(-) delete mode 100644 src/i18n/locales/zh-Hant.json diff --git a/src/i18n/locales/zh-HANT.json b/src/i18n/locales/zh-HANT.json index 678554c05..899591ab0 100644 --- a/src/i18n/locales/zh-HANT.json +++ b/src/i18n/locales/zh-HANT.json @@ -54,6 +54,7 @@ "locked.invalidCredentials": "Password invalid", "locked.password.label": "Password", "locked.submit.label": "Unlock", + "login.changeServer": "Change server", "login.customServerQuestion": "Using a custom Ferdi server?", "login.customServerSuggestion": "Try importing your Franz account", "login.email.label": "電子郵件信箱", @@ -186,6 +187,7 @@ "services.getStarted": "開始使用", "services.login": "Please login to use Ferdi.", "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", + "services.serverless": "Use Ferdi without an Account", "services.welcome": "歡迎使用 Ferdi", "settings.account.account.editButton": "更改帳戶資訊", "settings.account.accountType.basic": "基本帳戶", @@ -263,7 +265,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", @@ -354,6 +356,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "公司", "settings.user.form.accountType.individual": "個人", diff --git a/src/i18n/locales/zh-Hant.json b/src/i18n/locales/zh-Hant.json deleted file mode 100644 index 899591ab0..000000000 --- a/src/i18n/locales/zh-Hant.json +++ /dev/null @@ -1,448 +0,0 @@ -{ - "app.errorHandler.action": "Reload", - "app.errorHandler.headline": "Something went wrong", - "feature.announcements.changelog.headline": "Changes in Ferdi {version}", - "feature.delayApp.headline": "Please purchase a Ferdi Supporter License to skip waiting", - "feature.delayApp.text": "Ferdi will continue in {seconds} seconds.", - "feature.delayApp.trial.action": "Yes, I want the free 14 day trial of Ferdi Professional", - "feature.delayApp.trial.actionShort": "Activate the free Ferdi Professional trial", - "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", - "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", - "feature.delayApp.upgrade.actionShort": "Upgrade account", - "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", - "feature.quickSwitch.search": "Search...", - "feature.quickSwitch.title": "QuickSwitch", - "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", - "feature.shareFranz.action.email": "Send as email", - "feature.shareFranz.action.facebook": "Share on Facebook", - "feature.shareFranz.action.twitter": "Share on Twitter", - "feature.shareFranz.headline": "Ferdi is better together!", - "feature.shareFranz.shareText.email": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com", - "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger", - "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", - "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", - "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", - "feature.todos.premium.upgrade": "Upgrade Account", - "global.api.unhealthy": "無法連接到Ferdi網路服務", - "global.franzProRequired": "Ferdi Professional Required", - "global.notConnectedToTheInternet": "您未連上網際網路", - "global.spellchecker.useDefault": "Use System Default ({default})", - "global.spellchecking.autodetect": "Detect language automatically", - "global.spellchecking.autodetect.short": "Automatic", - "global.spellchecking.language": "Spell checking language", - "global.upgradeButton.upgradeToPro": "Upgrade to Ferdi Professional", - "import.headline": "匯入您的 Ferdi 4 服務", - "import.notSupportedHeadline": "此服務不被 Ferdi 5 支持", - "import.skip.label": "我想手動匯入", - "import.submit.label": "匯入服務", - "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", - "infobar.buttonChangelog": "What is new?", - "infobar.buttonInstallUpdate": "重新啟動並且更新", - "infobar.buttonReloadServices": "重新載入", - "infobar.requiredRequestsFailed": "無法載入服務與帳戶資訊", - "infobar.servicesUpdated": "您的服務已更新", - "infobar.trialActivated": "Your trial was successfully activated. Happy messaging!", - "infobar.updateAvailable": "有新的更新可安裝", - "invite.email.label": "電子郵件信箱", - "invite.headline.friends": "邀請三個人", - "invite.name.label": "名子", - "invite.skip.label": "我想晚點進行", - "invite.submit.label": "Send invites", - "invite.successInfo": "Invitations sent successfully", - "locked.headline": "Locked", - "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.", - "locked.invalidCredentials": "Password invalid", - "locked.password.label": "Password", - "locked.submit.label": "Unlock", - "login.changeServer": "Change server", - "login.customServerQuestion": "Using a custom Ferdi server?", - "login.customServerSuggestion": "Try importing your Franz account", - "login.email.label": "電子郵件信箱", - "login.headline": "登入", - "login.invalidCredentials": "電子郵件帳戶或密碼有誤", - "login.link.password": "密碼重設", - "login.link.signup": "建立一個免費帳戶", - "login.password.label": "Password", - "login.serverLogout": "登入狀態過期,請重新登入", - "login.submit.label": "登入", - "login.tokenExpired": "登入狀態過期,請重新登入", - "menu.Todoss.closeTodosDrawer": "Close Todos drawer", - "menu.Todoss.openTodosDrawer": "Open Todos drawer", - "menu.app.about": "About Ferdi", - "menu.app.announcement": "What's new?", - "menu.app.autohideMenuBar": "Auto-hide menu bar", - "menu.app.checkForUpdates": "Check for updates", - "menu.app.hide": "Hide", - "menu.app.hideOthers": "Hide Others", - "menu.app.quit": "Quit", - "menu.app.settings": "Settings", - "menu.app.unhide": "Unhide", - "menu.edit": "Edit", - "menu.edit.copy": "Copy", - "menu.edit.cut": "Cut", - "menu.edit.delete": "Delete", - "menu.edit.emojiSymbols": "Emoji & Symbols", - "menu.edit.paste": "Paste", - "menu.edit.pasteAndMatchStyle": "Paste And Match Style", - "menu.edit.redo": "Redo", - "menu.edit.selectAll": "Select All", - "menu.edit.speech": "Speech", - "menu.edit.startDictation": "Start Dictation", - "menu.edit.startSpeaking": "Start Speaking", - "menu.edit.stopSpeaking": "Stop Speaking", - "menu.edit.undo": "Undo", - "menu.file": "File", - "menu.help": "Help", - "menu.help.changelog": "Changelog", - "menu.help.debugInfo": "Copy Debug Information", - "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", - "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information", - "menu.help.learnMore": "Learn More", - "menu.help.privacy": "Privacy Statement", - "menu.help.support": "Support", - "menu.help.tos": "Terms of Service", - "menu.services": "Services", - "menu.services.activatePreviousService": "Activate previous service", - "menu.services.addNewService": "Add New Service...", - "menu.services.goHome": "Home", - "menu.services.setNextServiceActive": "Activate next service", - "menu.todos": "Todos", - "menu.todos.enableTodos": "Enable Todos", - "menu.view": "View", - "menu.view.back": "Back", - "menu.view.enterFullScreen": "Enter Full Screen", - "menu.view.exitFullScreen": "Exit Full Screen", - "menu.view.forward": "Forward", - "menu.view.lockFerdi": "Lock Ferdi", - "menu.view.openQuickSwitch": "Open Quick Switch", - "menu.view.reloadFranz": "Reload Ferdi", - "menu.view.reloadService": "Reload Service", - "menu.view.resetZoom": "Actual Size", - "menu.view.toggleDevTools": "Toggle Developer Tools", - "menu.view.toggleFullScreen": "Toggle Full Screen", - "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools", - "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", - "menu.view.zoomIn": "Zoom In", - "menu.view.zoomOut": "Zoom Out", - "menu.window": "Window", - "menu.window.close": "Close", - "menu.window.minimize": "Minimize", - "menu.workspaces": "Workspaces", - "menu.workspaces.addNewWorkspace": "Add New Workspace...", - "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer", - "menu.workspaces.defaultWorkspace": "All services", - "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer", - "password.email.label": "電子郵件信箱", - "password.headline": "密碼重設", - "password.link.login": "登入您的帳戶", - "password.link.signup": "建立一個免費帳戶", - "password.noUser": "此電子郵件帳戶不存在", - "password.submit.label": "送出", - "password.successInfo": "請重新確認您的電子郵件信箱", - "premiumFeature.button.upgradeAccount": "Upgrade account", - "pricing.features.adFree": "Forever ad-free", - "pricing.features.appDelays": "No Waiting Screens", - "pricing.features.customWebsites": "Add Custom Websites", - "pricing.features.onPremise": "On-premise & other Hosted Services", - "pricing.features.serviceProxies": "Service Proxies", - "pricing.features.spellchecker": "Spellchecker support", - "pricing.features.teamManagement": "Team Management", - "pricing.features.thirdPartyServices": "Install 3rd party services", - "pricing.features.unlimitedServices": "Add unlimited services", - "pricing.features.workspaces": "Workspaces", - "pricing.plan.free": "Ferdi Free", - "pricing.plan.legacy": "Ferdi Premium", - "pricing.plan.personal": "Ferdi Personal", - "pricing.plan.personal-monthly": "Ferdi Personal Monthly", - "pricing.plan.personal-yearly": "Ferdi Personal Yearly", - "pricing.plan.pro": "Ferdi Professional", - "pricing.plan.pro-monthly": "Ferdi Professional Monthly", - "pricing.plan.pro-yearly": "Ferdi Professional Yearly", - "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", - "pricing.trial.cta.skip": "Continue to Ferdi", - "pricing.trial.error": "Sorry, we could not activate your trial!", - "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", - "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", - "pricing.trial.terms.headline": "No strings attached", - "pricing.trial.terms.noCreditCard": "No credit card required", - "service.crashHandler.action": "Reload {name}", - "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", - "service.crashHandler.headline": "Oh no!", - "service.crashHandler.text": "{name} has caused an error.", - "service.disabledHandler.action": "Enable {name}", - "service.disabledHandler.headline": "{name} is disabled", - "service.errorHandler.action": "Reload {name}", - "service.errorHandler.editAction": "Edit {name}", - "service.errorHandler.headline": "Oh no!", - "service.errorHandler.message": "Error", - "service.errorHandler.text": "{name} has failed to load.", - "service.restrictedHandler.action": "Upgrade Account", - "service.restrictedHandler.customUrl.headline": "Ferdi Professional Plan required", - "service.restrictedHandler.customUrl.text": "Please upgrade to the Ferdi Professional plan to use custom urls & self hosted services.", - "service.restrictedHandler.serviceLimit.headline": "You have reached your service limit.", - "service.restrictedHandler.serviceLimit.text": "Please upgrade your account to use more than {count} services.", - "service.webviewLoader.loading": "Loading", - "services.getStarted": "開始使用", - "services.login": "Please login to use Ferdi.", - "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", - "services.serverless": "Use Ferdi without an Account", - "services.welcome": "歡迎使用 Ferdi", - "settings.account.account.editButton": "更改帳戶資訊", - "settings.account.accountType.basic": "基本帳戶", - "settings.account.accountType.premium": "Premium Supporter Account", - "settings.account.buttonSave": "更新帳戶資訊", - "settings.account.deleteAccount": "Delete account", - "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", - "settings.account.deleteInfo": "If you don't need your Ferdi account any longer, you can delete your account and all related data here.", - "settings.account.headline": "帳戶", - "settings.account.headlineAccount": "帳戶資訊", - "settings.account.headlineDangerZone": "Danger Zone", - "settings.account.headlineInvoices": "Invoices", - "settings.account.headlinePassword": "更改密碼", - "settings.account.headlineProfile": "更新帳戶資訊", - "settings.account.headlineSubscription": "您的訂閱", - "settings.account.headlineTrialUpgrade": "Get the free 14 day Ferdi Professional Trial", - "settings.account.headlineUpgradeAccount": "Upgrade your account & get the full Ferdi experience", - "settings.account.invoiceDownload": "下載", - "settings.account.manageSubscription.label": "管理訂閱", - "settings.account.successInfo": "您的更改已經儲存", - "settings.account.trial": "Free Trial", - "settings.account.trialEndsIn": "Your free trial ends in {duration}.", - "settings.account.trialUpdateBillingInfo": "Please update your billing info to continue using {license} after your trial period.", - "settings.account.tryReloadServices": "Try again", - "settings.account.tryReloadUserInfoRequest": "Try again", - "settings.account.upgradeToPro.label": "Upgrade to Ferdi Professional", - "settings.account.userInfoRequestFailed": "無法載入帳戶資訊", - "settings.account.yourLicense": "Your Ferdi License", - "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: #7367f0)", - "settings.app.buttonClearAllCache": "Clear cache", - "settings.app.buttonInstallUpdate": "重新啟動並且更新", - "settings.app.buttonSearchForUpdate": "Check for updates", - "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", - "settings.app.currentVersion": "當前版本:", - "settings.app.form.accentColor": "Accent color", - "settings.app.form.autoLaunchInBackground": "背景啟動", - "settings.app.form.autoLaunchOnStart": "開機時啟動", - "settings.app.form.beta": "包含開發中版本", - "settings.app.form.darkMode": "Join the Dark Side", - "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", - "settings.app.form.enableLock": "Enable Ferdi password lock", - "settings.app.form.enableSpellchecking": "Enable spell checking", - "settings.app.form.enableSystemTray": "在系統匣上顯示", - "settings.app.form.enableTodos": "Enable Ferdi Todos", - "settings.app.form.hibernate": "Enable service hibernation", - "settings.app.form.hibernationStrategy": "Hibernation strategy", - "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", - "settings.app.form.language": "語言", - "settings.app.form.lockPassword": "Ferdi Lock password", - "settings.app.form.minimizeToSystemTray": "最小化至系統匣", - "settings.app.form.noUpdates": "Disable updates", - "settings.app.form.privateNotifications": "Don't show message content in notifications", - "settings.app.form.runInBackground": "關閉時保持在背景運作", - "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb", - "settings.app.form.scheduledDNDEnd": "To", - "settings.app.form.scheduledDNDStart": "From", - "settings.app.form.server": "Server", - "settings.app.form.showDisabledServices": "Display disabled services tabs", - "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", - "settings.app.form.showServiceNavigationBar": "Always show service navigation bar", - "settings.app.form.todoServer": "Todo Server", - "settings.app.form.universalDarkMode": "Enable universal Dark Mode", - "settings.app.headline": "Settings", - "settings.app.headlineAdvanced": "Advanced", - "settings.app.headlineAppearance": "Appearance", - "settings.app.headlineGeneral": "一般", - "settings.app.headlineLanguage": "語言", - "settings.app.headlineUpdates": "更新", - "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", - "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", - "settings.app.lockInfo": "Ferdi password lock allows you to keep your messages protected.\nUsing Ferdi password lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut CMD/CTRL+Shift+L.", - "settings.app.lockedPassword": "Ferdi Lock Password", - "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", - "settings.app.restartRequired": "Changes require restart", - "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", - "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", - "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", - "settings.app.subheadlineCache": "Cache", - "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", - "settings.app.translationHelp": "Help us to translate Ferdi into your language.", - "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", - "settings.app.updateStatusAvailable": "有可用更新,下載中...", - "settings.app.updateStatusSearching": "檢查更新中...", - "settings.app.updateStatusUpToDate": "已經是最新版本了", - "settings.invite.headline": "Invite Friends", - "settings.navigation.account": "帳戶", - "settings.navigation.availableServices": "可用服務", - "settings.navigation.logout": "登出", - "settings.navigation.settings": "Settings", - "settings.navigation.supportFerdi": "Support Ferdi", - "settings.navigation.team": "Manage Team", - "settings.navigation.yourServices": "您的服務", - "settings.navigation.yourWorkspaces": "Your workspaces", - "settings.recipes.all": "All services", - "settings.recipes.custom": "Custom Services", - "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", - "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", - "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", - "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", - "settings.recipes.customService.openDevDocs": "Developer Documentation", - "settings.recipes.customService.openFolder": "Open folder", - "settings.recipes.headline": "可用服務", - "settings.recipes.missingService": "Missing a service?", - "settings.recipes.mostPopular": "熱門", - "settings.recipes.nothingFound": "抱歉,找不到您所要的服務", - "settings.recipes.servicesSuccessfulAddedInfo": "新增服務成功", - "settings.searchService": "Search service", - "settings.service.error.goBack": "返回", - "settings.service.error.headline": "Error", - "settings.service.error.message": "無法載入服務元件", - "settings.service.form.addServiceHeadline": "新增 {name}", - "settings.service.form.availableServices": "可用服務", - "settings.service.form.customUrl": "Custom server", - "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Ferdi Premium Supporter Account.", - "settings.service.form.customUrlUpgradeAccount": "升級帳戶", - "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.", - "settings.service.form.deleteButton": "刪除", - "settings.service.form.editServiceHeadline": "Edit {name}", - "settings.service.form.enableAudio": "Enable audio", - "settings.service.form.enableBadge": "Show unread message badges", - "settings.service.form.enableDarkMode": "Enable Dark Mode", - "settings.service.form.enableNotification": "啟用通知", - "settings.service.form.enableService": "啟用服務", - "settings.service.form.headlineBadges": "Unread message badges", - "settings.service.form.headlineGeneral": "一般", - "settings.service.form.headlineNotifications": "Notifications", - "settings.service.form.icon": "Custom icon", - "settings.service.form.iconDelete": "Delete", - "settings.service.form.iconUpload": "Drop your image, or click here", - "settings.service.form.indirectMessageInfo": "除了 @username, @channel, @here 之外,當您參與的頻道有訊息時,就會通知", - "settings.service.form.indirectMessages": "針對全部訊息顯示通知", - "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", - "settings.service.form.name": "名子", - "settings.service.form.openDarkmodeCss": "Open darkmode.css", - "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings", - "settings.service.form.proxy.host": "Proxy Host/IP", - "settings.service.form.proxy.info": "Proxy settings will not synced with the Ferdi servers.", - "settings.service.form.proxy.isEnabled": "Use Proxy", - "settings.service.form.proxy.password": "Password (optional)", - "settings.service.form.proxy.port": "Port", - "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.", - "settings.service.form.proxy.user": "User (optional)", - "settings.service.form.saveButton": "儲存", - "settings.service.form.tabHosted": "Hosted", - "settings.service.form.tabOnPremise": "Self hosted ⭐️", - "settings.service.form.team": "Team", - "settings.service.form.useHostedService": "Use the hosted {name} service.", - "settings.service.form.yourServices": "您的服務", - "settings.services.deletedInfo": "服務已刪除", - "settings.services.discoverServices": "服務列表", - "settings.services.headline": "您的服務", - "settings.services.noServicesAdded": "您還沒加入任何服務", - "settings.services.servicesRequestFailed": "Could not load your services", - "settings.services.tooltip.isDisabled": "已停用服務", - "settings.services.tooltip.isMuted": "All sounds are muted", - "settings.services.tooltip.notificationsDisabled": "已停用通知", - "settings.services.updatedInfo": "您的更改已經儲存", - "settings.supportFerdi.github": "Star on GitHub", - "settings.supportFerdi.headline": "Support Ferdi", - "settings.supportFerdi.openCollective": "Support our Open Collective", - "settings.supportFerdi.share": "Tell your Friends", - "settings.supportFerdi.title": "Do you like Ferdi? Spread the love!", - "settings.team.contentHeadline": "Ferdi for Teams", - "settings.team.copy": "Ferdi for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", - "settings.team.headline": "Team", - "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", - "settings.team.manageAction": "Manage your Team on getferdi.com", - "settings.team.teamsUnavailable": "Teams are unavailable", - "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", - "settings.team.upgradeAction": "Upgrade your Account", - "settings.user.form.accountType.company": "公司", - "settings.user.form.accountType.individual": "個人", - "settings.user.form.accountType.label": "帳戶類型", - "settings.user.form.accountType.non-profit": "非營利", - "settings.user.form.currentPassword": "舊密碼", - "settings.user.form.email": "電子郵件信箱", - "settings.user.form.firstname": "名子", - "settings.user.form.lastname": "姓氏", - "settings.user.form.newPassword": "新密碼", - "settings.workspace.add.form.name": "名子", - "settings.workspace.add.form.submitButton": "Create workspace", - "settings.workspace.form.buttonDelete": "Delete workspace", - "settings.workspace.form.buttonSave": "Save workspace", - "settings.workspace.form.keepLoaded": "Keep this workspace loaded*", - "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.", - "settings.workspace.form.name": "名子", - "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace", - "settings.workspace.form.yourWorkspaces": "Your workspaces", - "settings.workspaces.deletedInfo": "Workspace has been deleted", - "settings.workspaces.headline": "Your workspaces", - "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.", - "settings.workspaces.tryReloadWorkspaces": "Try again", - "settings.workspaces.updatedInfo": "您的更改已經儲存", - "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces", - "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", - "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", - "sidebar.addNewService": "Add new service", - "sidebar.closeTodosDrawer": "Close Ferdi Todos", - "sidebar.closeWorkspaceDrawer": "Close workspace drawer", - "sidebar.lockFerdi": "Lock Ferdi", - "sidebar.muteApp": "Disable notifications & audio", - "sidebar.openTodosDrawer": "Open Ferdi Todos", - "sidebar.openWorkspaceDrawer": "Open workspace drawer", - "sidebar.settings": "Settings", - "sidebar.unmuteApp": "Enable notifications & audio", - "signup.email.label": "電子郵件信箱", - "signup.emailDuplicate": "此電子郵件信箱已被註冊", - "signup.firstname.label": "名子", - "signup.headline": "註冊", - "signup.lastname.label": "姓氏", - "signup.legal.info": "在建立帳戶同時,您同意:", - "signup.legal.privacy": "Privacy Statement", - "signup.legal.terms": "服務條款", - "signup.link.login": "您已有一個帳戶,請問是否要登入?", - "signup.password.label": "Password", - "signup.submit.label": "建立帳戶", - "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", - "subscription.cta.allOptions": "See all options", - "subscription.cta.choosePlan": "Choose your plan", - "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", - "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", - "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", - "subscriptionPopup.buttonCancel": "取消", - "subscriptionPopup.buttonDone": "完成", - "tabs.item.deleteService": "刪除", - "tabs.item.disableAudio": "Disable audio", - "tabs.item.disableNotifications": "停用通知", - "tabs.item.disableService": "停用服務", - "tabs.item.edit": "Edit", - "tabs.item.enableAudio": "Enable audio", - "tabs.item.enableNotification": "啟用通知", - "tabs.item.enableService": "啟用服務", - "tabs.item.reload": "Reload", - "validation.email": "{field} is not valid", - "validation.minLength": "{field} should be at least {length} characters long", - "validation.oneRequired": "At least one is required", - "validation.required": "{field} is required", - "validation.url": "{field} is not a valid URL", - "webControls.back": "Back", - "webControls.forward": "Forward", - "webControls.goHome": "Home", - "webControls.openInBrowser": "Open in Browser", - "webControls.reload": "Reload", - "welcome.loginButton": "登入", - "welcome.signupButton": "建立一個免費帳戶", - "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", - "workspaceDrawer.allServices": "All services", - "workspaceDrawer.headline": "Workspaces", - "workspaceDrawer.item.contextMenuEdit": "edit", - "workspaceDrawer.item.noServicesAddedYet": "No services added yet", - "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace", - "workspaceDrawer.proFeatureBadge": "Premium feature", - "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account", - "workspaceDrawer.workspaceFeatureInfo": "

Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.

You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.

", - "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", - "workspaces.switchingIndicator.switchingTo": "Switching to" -} -- cgit v1.2.3-70-g09d2 From 9724d4a3ad849cb688545946edb2e878e4a4efc4 Mon Sep 17 00:00:00 2001 From: Amine Mouafik Date: Mon, 21 Oct 2019 18:19:19 +0700 Subject: Fix more observers related warnings --- src/components/auth/Login.js | 2 +- src/components/auth/Signup.js | 2 +- src/components/auth/Welcome.js | 2 +- src/components/subscription/SubscriptionForm.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/auth/Login.js b/src/components/auth/Login.js index e58016e25..e25121de0 100644 --- a/src/components/auth/Login.js +++ b/src/components/auth/Login.js @@ -70,7 +70,7 @@ const messages = defineMessages({ }, }); -export default @observer @inject('actions') class Login extends Component { +export default @inject('actions') @observer class Login extends Component { static propTypes = { onSubmit: PropTypes.func.isRequired, isSubmitting: PropTypes.bool.isRequired, diff --git a/src/components/auth/Signup.js b/src/components/auth/Signup.js index 47e9daf18..a166155a7 100644 --- a/src/components/auth/Signup.js +++ b/src/components/auth/Signup.js @@ -74,7 +74,7 @@ const messages = defineMessages({ }, }); -export default @observer @inject('actions') class Signup extends Component { +export default @inject('actions') @observer class Signup extends Component { static propTypes = { onSubmit: PropTypes.func.isRequired, isSubmitting: PropTypes.bool.isRequired, diff --git a/src/components/auth/Welcome.js b/src/components/auth/Welcome.js index 2ca8b430f..1453c1d7c 100644 --- a/src/components/auth/Welcome.js +++ b/src/components/auth/Welcome.js @@ -22,7 +22,7 @@ const messages = defineMessages({ }, }); -export default @observer @inject('actions') class Login extends Component { +export default @inject('actions') @observer class Login extends Component { static propTypes = { loginRoute: PropTypes.string.isRequired, signupRoute: PropTypes.string.isRequired, diff --git a/src/components/subscription/SubscriptionForm.js b/src/components/subscription/SubscriptionForm.js index cdfbbe60d..effd04f7a 100644 --- a/src/components/subscription/SubscriptionForm.js +++ b/src/components/subscription/SubscriptionForm.js @@ -34,7 +34,7 @@ const styles = () => ({ }, }); -export default @observer @injectSheet(styles) class SubscriptionForm extends Component { +export default @injectSheet(styles) @observer class SubscriptionForm extends Component { static propTypes = { selectPlan: PropTypes.func.isRequired, isActivatingTrial: PropTypes.bool.isRequired, -- cgit v1.2.3-70-g09d2 From bd4c19826e936667962f410c9957b6259ebe8c06 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Mon, 21 Oct 2019 13:29:55 +0200 Subject: reload app after sleep with 2s waiting time --- src/stores/AppStore.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index ca5cad836..0a6309092 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -207,10 +207,9 @@ export default class AppStore extends Store { if (this.timeSuspensionStart.add(10, 'm').isBefore(moment())) { debug('Reloading services, user info and features'); - this.actions.service.reloadAll(); - - this.stores.user.getUserInfoRequest.invalidate({ immediately: true }); - this.stores.features.featuresRequest.invalidate({ immediately: true }); + setTimeout(() => { + window.location.reload(); + }, ms('2s')); statsEvent('resumed-app'); } -- cgit v1.2.3-70-g09d2 From 405100200dfec9d55f985ffae4bc70f10df44846 Mon Sep 17 00:00:00 2001 From: Amine Mouafik Date: Mon, 21 Oct 2019 18:38:33 +0700 Subject: Fine-tune git submodules config --- .gitmodules | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index f1f9fcec8..d121d6c01 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,8 @@ [submodule "recipes"] path = recipes - url = https://github.com/getferdi/recipes + url = git@github.com:getferdi/recipes.git + ignore = all [submodule "src/server"] path = src/server - url = https://github.com/getferdi/internal-server.git + url = git@github.com:getferdi/internal-server.git + ignore = all -- cgit v1.2.3-70-g09d2 From 10ec328015c586ae937e936a477c02b2e0728373 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Mon, 21 Oct 2019 14:18:15 +0200 Subject: Hide menu bar in popups --- src/stores/PaymentStore.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/stores/PaymentStore.js b/src/stores/PaymentStore.js index b90e8f006..eb42ae10e 100644 --- a/src/stores/PaymentStore.js +++ b/src/stores/PaymentStore.js @@ -53,6 +53,7 @@ export default class PaymentStore extends Store { height: window.innerHeight - 100, maxWidth: 800, minWidth: 600, + autoHideMenuBar: true, webPreferences: { nodeIntegration: true, webviewTag: true, -- cgit v1.2.3-70-g09d2 From 828e6aad2a3eb661af3065289730a26a3764a4f4 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Mon, 21 Oct 2019 15:25:32 +0200 Subject: Fix missing icons --- .../workspaces/components/WorkspaceDrawer.js | 4 +-- .../workspaces/components/WorkspacesDashboard.js | 5 ++-- .../workspaces/components/WorkspacesDashboard.json | 32 +++++++++++----------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js index d5616b4da..07100f5a1 100644 --- a/src/features/workspaces/components/WorkspaceDrawer.js +++ b/src/features/workspaces/components/WorkspaceDrawer.js @@ -7,7 +7,7 @@ import { H1, Icon, ProBadge } from '@meetfranz/ui'; import { Button } from '@meetfranz/forms/lib'; import ReactTooltip from 'react-tooltip'; -import { mdiPlusBox, mdiSettings } from '@mdi/js'; +import { mdiPlusBox, mdiSettings, mdiStar } from '@mdi/js'; import WorkspaceDrawerItem from './WorkspaceDrawerItem'; import { workspaceActions } from '../actions'; import { GA_CATEGORY_WORKSPACES, workspaceStore } from '../index'; @@ -177,7 +177,7 @@ class WorkspaceDrawer extends Component { className={classes.premiumCtaButton} buttonType="primary" label={intl.formatMessage(messages.reactivatePremiumAccount)} - icon="mdiStar" + icon={mdiStar} onClick={() => { onUpgradeAccountClick(); gaEvent('User', 'upgrade', 'workspaceDrawer'); diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js index 70e213912..4fb302be2 100644 --- a/src/features/workspaces/components/WorkspacesDashboard.js +++ b/src/features/workspaces/components/WorkspacesDashboard.js @@ -5,6 +5,7 @@ import { defineMessages, intlShape } from 'react-intl'; import injectSheet from 'react-jss'; import { Infobox, Badge } from '@meetfranz/ui'; +import { mdiCheckboxMarkedCircleOutline } from '@mdi/js'; import Loader from '../../../components/ui/Loader'; import WorkspaceItem from './WorkspaceItem'; import CreateWorkspaceForm from './CreateWorkspaceForm'; @@ -128,7 +129,7 @@ class WorkspacesDashboard extends Component { @@ -142,7 +143,7 @@ class WorkspacesDashboard extends Component { diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json index 7eb4fab50..8a20eb8e8 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Your workspaces", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 19, + "line": 20, "column": 12 }, "end": { - "line": 22, + "line": 23, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!You haven't added any workspaces yet.", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 23, + "line": 24, "column": 19 }, "end": { - "line": 26, + "line": 27, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Could not load your workspaces", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 27, + "line": 28, "column": 27 }, "end": { - "line": 30, + "line": 31, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!Try again", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 31, + "line": 32, "column": 23 }, "end": { - "line": 34, + "line": 35, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Your changes have been saved", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 35, + "line": 36, "column": 15 }, "end": { - "line": 38, + "line": 39, "column": 3 } }, @@ -69,11 +69,11 @@ "defaultMessage": "!!!Workspace has been deleted", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 39, + "line": 40, "column": 15 }, "end": { - "line": 42, + "line": 43, "column": 3 } }, @@ -82,11 +82,11 @@ "defaultMessage": "!!!Info about workspace feature", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 43, + "line": 44, "column": 24 }, "end": { - "line": 46, + "line": 47, "column": 3 } }, @@ -95,11 +95,11 @@ "defaultMessage": "!!!Less is More: Introducing Franz Workspaces", "file": "src/features/workspaces/components/WorkspacesDashboard.js", "start": { - "line": 47, + "line": 48, "column": 28 }, "end": { - "line": 50, + "line": 51, "column": 3 } } -- cgit v1.2.3-70-g09d2 From 8a4a5c3d3545f295ba99761308697c9f27a6bf29 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Mon, 21 Oct 2019 15:26:47 +0200 Subject: Update defaultMessages.json --- src/i18n/locales/defaultMessages.json | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index e283614d2..9818dca87 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -4861,104 +4861,104 @@ "defaultMessage": "!!!Your workspaces", "end": { "column": 3, - "line": 22 + "line": 23 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.headline", "start": { "column": 12, - "line": 19 + "line": 20 } }, { "defaultMessage": "!!!You haven't added any workspaces yet.", "end": { "column": 3, - "line": 26 + "line": 27 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.noWorkspacesAdded", "start": { "column": 19, - "line": 23 + "line": 24 } }, { "defaultMessage": "!!!Could not load your workspaces", "end": { "column": 3, - "line": 30 + "line": 31 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.workspacesRequestFailed", "start": { "column": 27, - "line": 27 + "line": 28 } }, { "defaultMessage": "!!!Try again", "end": { "column": 3, - "line": 34 + "line": 35 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.tryReloadWorkspaces", "start": { "column": 23, - "line": 31 + "line": 32 } }, { "defaultMessage": "!!!Your changes have been saved", "end": { "column": 3, - "line": 38 + "line": 39 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.updatedInfo", "start": { "column": 15, - "line": 35 + "line": 36 } }, { "defaultMessage": "!!!Workspace has been deleted", "end": { "column": 3, - "line": 42 + "line": 43 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.deletedInfo", "start": { "column": 15, - "line": 39 + "line": 40 } }, { "defaultMessage": "!!!Info about workspace feature", "end": { "column": 3, - "line": 46 + "line": 47 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.workspaceFeatureInfo", "start": { "column": 24, - "line": 43 + "line": 44 } }, { "defaultMessage": "!!!Less is More: Introducing Franz Workspaces", "end": { "column": 3, - "line": 50 + "line": 51 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.workspaceFeatureHeadline", "start": { "column": 28, - "line": 47 + "line": 48 } } ], -- cgit v1.2.3-70-g09d2 From 71f67c07d25919d6f6ba6655479b6c17c394a69c Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Mon, 21 Oct 2019 16:13:31 +0200 Subject: don't initialize menu & touchbar on /payment/ routes --- src/lib/Menu.js | 4 +++- src/lib/TouchBar.js | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lib/Menu.js b/src/lib/Menu.js index cda33baef..c0c9d940d 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js @@ -636,7 +636,9 @@ export default class FranzMenu { // need to clone object so we don't modify computed (cached) object const serviceTpl = Object.assign([], this.serviceTpl()); - if (window.franz === undefined) { + // Don't initialize when window.franz is undefined or when we are on a payment window route + if (window.franz === undefined || this.stores.router.location.pathname.startsWith('/payment/')) { + console.log('skipping menu init'); return; } diff --git a/src/lib/TouchBar.js b/src/lib/TouchBar.js index 1de46d2a3..32f546644 100644 --- a/src/lib/TouchBar.js +++ b/src/lib/TouchBar.js @@ -24,6 +24,10 @@ export default class FranzTouchBar { _build() { const currentWindow = remote.getCurrentWindow(); + if (this.stores.router.location.pathname.startsWith('/payment/')) { + return; + } + if (this.stores.user.isLoggedIn) { const { TouchBar } = remote; const { TouchBarButton, TouchBarSpacer } = TouchBar; -- cgit v1.2.3-70-g09d2 From 0a0a076e593ede83dc3ad70ec131491834253752 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Mon, 21 Oct 2019 16:29:04 +0200 Subject: provide a float instead of mixed string and int --- src/features/trialStatusBar/containers/TrialStatusBarScreen.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/features/trialStatusBar/containers/TrialStatusBarScreen.js b/src/features/trialStatusBar/containers/TrialStatusBarScreen.js index 35b70a5bc..e15a1204f 100644 --- a/src/features/trialStatusBar/containers/TrialStatusBarScreen.js +++ b/src/features/trialStatusBar/containers/TrialStatusBarScreen.js @@ -81,7 +81,7 @@ class TrialStatusBarScreen extends Component { upgradeAccount({ planId: user.team.plan, -- cgit v1.2.3-70-g09d2 From 2dfcaba8be137b3ab2b6f68e059399026d8992e9 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Mon, 21 Oct 2019 18:06:16 +0200 Subject: Move service message to be more visible --- src/components/settings/services/EditServiceForm.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js index 76138aa15..3a35c7dac 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js @@ -328,6 +328,15 @@ export default @observer class EditServiceForm extends Component { )} )} + + {recipe.message && ( +

+ + {recipe.message} +

+ )}
@@ -417,13 +426,6 @@ export default @observer class EditServiceForm extends Component {
)} - - {recipe.message && ( -

- - {recipe.message} -

- )}
-- cgit v1.2.3-70-g09d2 From 335b5898bbfa85486d7cd0f2cea1b527490ba2ca Mon Sep 17 00:00:00 2001 From: vantezzen Date: Mon, 21 Oct 2019 18:07:55 +0200 Subject: Fix lint --- src/components/settings/services/EditServiceForm.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js index 3a35c7dac..fa34ac60b 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js @@ -330,9 +330,12 @@ export default @observer class EditServiceForm extends Component { )} {recipe.message && ( -

+

{recipe.message}

-- cgit v1.2.3-70-g09d2 From 07a52285111f6f5d1fbf15f0e9055187ef67d612 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Mon, 21 Oct 2019 21:53:17 +0200 Subject: Use HTTPS instead of SSL for git submodules --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index d121d6c01..00bc1d26d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,8 +1,8 @@ [submodule "recipes"] path = recipes - url = git@github.com:getferdi/recipes.git + url = https://github.com/getferdi/recipes.git ignore = all [submodule "src/server"] path = src/server - url = git@github.com:getferdi/internal-server.git + url = https://github.com/getferdi/internal-server.git ignore = all -- cgit v1.2.3-70-g09d2 From a36d3c0b14aa2cb4813d072182396f1f1975ef8c Mon Sep 17 00:00:00 2001 From: FranzBot Date: Tue, 22 Oct 2019 00:00:21 +0000 Subject: Automatic i18n update (i18n.meetfranz.com) --- src/i18n/locales/es.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index fdc3b22af..46992b183 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -6,8 +6,8 @@ "feature.delayApp.text" : "Franz continuará en {seconds} segundos.", "feature.delayApp.trial.action" : "Si! Quiero probar Franz Profesional por 14 días, gratis!", "feature.delayApp.trial.actionShort" : "Activar el período de prueba de Franz Profesional", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", - "feature.delayApp.upgrade.action" : "Upgrade Franz", + "feature.delayApp.trial.headline" : "Prueba gratuitamente Franz Professional por 14 días", + "feature.delayApp.upgrade.action" : "Actualizar Franz", "feature.delayApp.upgrade.actionShort" : "Mejora tu cuenta", "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", "feature.planSelection.cta.stayOnFree" : "Stay on Free", -- cgit v1.2.3-70-g09d2 From bcf8ae029b1c21ac3d1ab6a20bce83e84c97bac4 Mon Sep 17 00:00:00 2001 From: Makazzz Date: Mon, 21 Oct 2019 21:55:54 -0400 Subject: Add and change order for build --- README.md | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index eb237f76e..1a5ac5bfe 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,14 @@ You can find the installers in the [latest release](https://github.com/getferdi/ #### Install OS dependencies +##### Node.js + +Please make sure you are running NodeJS v10 ([v10.16.3](https://nodejs.org/dist/v10.16.3/) suggested). Versions above will throw an errow when trying to install due to an [old fsevent dependency](https://github.com/fsevents/fsevents/issues/278). + +##### Git + +The version [2.23.0](https://github.com/git-for-windows/git/releases/tag/v2.23.0.windows.1) for Git is working fine for development. You can then use the console from Git to continu the development procedure. + ##### Debian/Ubuntu ```bash @@ -79,23 +87,14 @@ $ npm install --global windows-build-tools --vs2015 // Windows 7 #### Clone repository with submodule ```bash -$ git clone git@github.com:getferdi/ferdi.git -$ cd getferdi +$ git clone https://github.com/getferdi/ferdi.git +$ cd ferdi +$ git status $ git submodule update --init --recursive ``` It is important you execute the last command to get the required submodules (recipes, server). -#### Use right NodeJS version - -Please make sure you are running NodeJS v10 (v10.16.3 suggested). Versions above will throw an errow when trying to install due to an [old fsevent dependency](https://github.com/fsevents/fsevents/issues/278). - -#### Fix native modules to match current electron node version - -```bash -$ npm run rebuild -``` - ### Install dependencies Run the following command to install all dependencies, and link sibling modules with Ferdi. @@ -106,6 +105,12 @@ $ npx lerna bootstrap If you previously ran `npm install` it sometimes is necessary to delete your `node_modules` folder before running `npx lerna bootstrap`. +### Fix native modules to match current electron node version + +```bash +$ npm run rebuild +``` + ### Start development app Run these two commands **simultaneously** in different console tabs: -- cgit v1.2.3-70-g09d2 From c59b44304ae2d2e66cfb11042dedf98778be8409 Mon Sep 17 00:00:00 2001 From: Makazzz Date: Mon, 21 Oct 2019 21:58:02 -0400 Subject: Fix word --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a5ac5bfe..0f3595fe9 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Please make sure you are running NodeJS v10 ([v10.16.3](https://nodejs.org/dist/ ##### Git -The version [2.23.0](https://github.com/git-for-windows/git/releases/tag/v2.23.0.windows.1) for Git is working fine for development. You can then use the console from Git to continu the development procedure. +The version [2.23.0](https://github.com/git-for-windows/git/releases/tag/v2.23.0.windows.1) for Git is working fine for development. You can then use the console from Git to do the development procedure. ##### Debian/Ubuntu -- cgit v1.2.3-70-g09d2 From 612ed5d3ea1d4c382f7a52b4ed9350eb68849085 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 22 Oct 2019 10:12:36 +0200 Subject: don't show plan selection when user is premium (edge case) --- src/features/planSelection/store.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/features/planSelection/store.js b/src/features/planSelection/store.js index 8622d4e5a..448e323ff 100644 --- a/src/features/planSelection/store.js +++ b/src/features/planSelection/store.js @@ -19,8 +19,8 @@ export default class PlanSelectionStore extends FeatureStore { @observable hideOverlay = false; @computed get showPlanSelectionOverlay() { - const { team } = this.stores.user; - if (team && !this.hideOverlay) { + const { team, isPremium } = this.stores.user; + if (team && !this.hideOverlay && !isPremium) { return team.state === 'expired' && !team.userHasDowngraded; } -- cgit v1.2.3-70-g09d2 From a164ecbdc849e86e9453633bc640dcb6fe75a688 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 22 Oct 2019 10:12:55 +0200 Subject: refine analytics events --- src/features/planSelection/components/PlanSelection.js | 5 +++++ src/features/planSelection/containers/PlanSelectionScreen.js | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js index 355187516..aff6bf94f 100644 --- a/src/features/planSelection/components/PlanSelection.js +++ b/src/features/planSelection/components/PlanSelection.js @@ -12,6 +12,7 @@ import { i18nPlanName } from '../../../helpers/plan-helpers'; import { PLANS } from '../../../config'; import { FeatureList } from '../../../components/ui/FeatureList'; import Appear from '../../../components/ui/effects/Appear'; +import { gaPage } from '../../../lib/analytics'; const messages = defineMessages({ welcome: { @@ -163,6 +164,10 @@ class PlanSelection extends Component { intl: intlShape, }; + componentDidMount() { + gaPage('/select-plan'); + } + render() { const { classes, diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js index 6e8cdbf47..3f9638e9d 100644 --- a/src/features/planSelection/containers/PlanSelectionScreen.js +++ b/src/features/planSelection/containers/PlanSelectionScreen.js @@ -9,7 +9,7 @@ import UserStore from '../../../stores/UserStore'; import PlanSelection from '../components/PlanSelection'; import ErrorBoundary from '../../../components/util/ErrorBoundary'; import { planSelectionStore, GA_CATEGORY_PLAN_SELECTION } from '..'; -import { gaEvent } from '../../../lib/analytics'; +import { gaEvent, gaPage } from '../../../lib/analytics'; const { dialog, app } = remote; @@ -80,6 +80,8 @@ class PlanSelectionScreen extends Component { } }} stayOnFree={() => { + gaPage('/select-plan/downgrade'); + const selection = dialog.showMessageBoxSync(app.mainWindow, { type: 'question', message: intl.formatMessage(messages.dialogTitle), @@ -101,7 +103,7 @@ class PlanSelectionScreen extends Component { } else { this.upgradeAccount(plans.personal.yearly.id); - gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', 'Revoke'); + gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', 'Downgrade'); } }} subscriptionExpired={user.team && user.team.state === 'expired' && !user.team.userHasDowngraded} -- cgit v1.2.3-70-g09d2 From 2ce12f33ac9692d5b126b94f8073ce80a0de7596 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 22 Oct 2019 10:32:06 +0200 Subject: beautify settings --- src/electron/Settings.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/electron/Settings.js b/src/electron/Settings.js index 63f43b6b7..e4ad6b612 100644 --- a/src/electron/Settings.js +++ b/src/electron/Settings.js @@ -47,7 +47,9 @@ export default class Settings { } _writeFile() { - outputJsonSync(this.settingsFile, this.store); + outputJsonSync(this.settingsFile, this.store, { + spaces: 2, + }); debug('Write settings file', this.type, toJS(this.store)); } -- cgit v1.2.3-70-g09d2 From 806b0a086312ca12ed46bc1a634be6694e277308 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 22 Oct 2019 10:32:15 +0200 Subject: Add `liftSingleInstanceLock` to settings --- src/index.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/index.js b/src/index.js index 7de7a5e1c..3056a8bec 100644 --- a/src/index.js +++ b/src/index.js @@ -64,8 +64,15 @@ if (isWindows) { app.setAppUserModelId(appId); } +// Initialize Settings +const settings = new Settings('app', DEFAULT_APP_SETTINGS); +const proxySettings = new Settings('proxy'); + +// add `liftSingleInstanceLock` to settings.json to override the single instance lock +const liftSingleInstanceLock = settings.get('liftSingleInstanceLock') || false; + // Force single window -const gotTheLock = app.requestSingleInstanceLock(); +const gotTheLock = liftSingleInstanceLock ? true : app.requestSingleInstanceLock(); if (!gotTheLock) { app.quit(); } else { @@ -112,10 +119,6 @@ if (isLinux && ['Pantheon', 'Unity:Unity7'].indexOf(process.env.XDG_CURRENT_DESK process.env.XDG_CURRENT_DESKTOP = 'Unity'; } -// Initialize Settings -const settings = new Settings('app', DEFAULT_APP_SETTINGS); -const proxySettings = new Settings('proxy'); - // Disable GPU acceleration if (!settings.get('enableGPUAcceleration')) { debug('Disable GPU Acceleration'); -- cgit v1.2.3-70-g09d2 From a7615ae9550e6456b4e08843891f45ab503f4cc4 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 22 Oct 2019 11:50:15 +0200 Subject: update strings --- src/i18n/locales/defaultMessages.json | 44 +++++++++++----------- .../planSelection/components/PlanSelection.json | 44 +++++++++++----------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 9818dca87..9b77fe34c 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3998,143 +3998,143 @@ "defaultMessage": "!!!Are you ready to choose, {name}", "end": { "column": 3, - "line": 20 + "line": 21 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.fullscreen.welcome", "start": { "column": 11, - "line": 17 + "line": 18 } }, { "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "end": { "column": 3, - "line": 24 + "line": 25 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.fullscreen.subheadline", "start": { "column": 15, - "line": 21 + "line": 22 } }, { "defaultMessage": "!!!Basic functionality", "end": { "column": 3, - "line": 28 + "line": 29 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.free.text", "start": { "column": 12, - "line": 25 + "line": 26 } }, { "defaultMessage": "!!!More services, no waiting - ideal for personal use.", "end": { "column": 3, - "line": 32 + "line": 33 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.personal.text", "start": { "column": 16, - "line": 29 + "line": 30 } }, { "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", "end": { "column": 3, - "line": 36 + "line": 37 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.pro.text", "start": { "column": 20, - "line": 33 + "line": 34 } }, { "defaultMessage": "!!!Stay on Free", "end": { "column": 3, - "line": 40 + "line": 41 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.cta.stayOnFree", "start": { "column": 17, - "line": 37 + "line": 38 } }, { "defaultMessage": "!!!Downgrade to Free", "end": { "column": 3, - "line": 44 + "line": 45 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.cta.ctaDowngradeFree", "start": { "column": 20, - "line": 41 + "line": 42 } }, { "defaultMessage": "!!!Start my free 14-days Trial", "end": { "column": 3, - "line": 48 + "line": 49 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.cta.trial", "start": { "column": 15, - "line": 45 + "line": 46 } }, { "defaultMessage": "!!!Choose Personal", "end": { "column": 3, - "line": 52 + "line": 53 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.cta.upgradePersonal", "start": { "column": 23, - "line": 49 + "line": 50 } }, { "defaultMessage": "!!!Choose Professional", "end": { "column": 3, - "line": 56 + "line": 57 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.cta.upgradePro", "start": { "column": 18, - "line": 53 + "line": 54 } }, { "defaultMessage": "!!!Complete comparison of all plans", "end": { "column": 3, - "line": 60 + "line": 61 }, "file": "src/features/planSelection/components/PlanSelection.js", "id": "feature.planSelection.fullFeatureList", "start": { "column": 19, - "line": 57 + "line": 58 } } ], diff --git a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json index 2e66c8dfe..685e81e82 100644 --- a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json +++ b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Are you ready to choose, {name}", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 17, + "line": 18, "column": 11 }, "end": { - "line": 20, + "line": 21, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 21, + "line": 22, "column": 15 }, "end": { - "line": 24, + "line": 25, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Basic functionality", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 25, + "line": 26, "column": 12 }, "end": { - "line": 28, + "line": 29, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!More services, no waiting - ideal for personal use.", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 29, + "line": 30, "column": 16 }, "end": { - "line": 32, + "line": 33, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 33, + "line": 34, "column": 20 }, "end": { - "line": 36, + "line": 37, "column": 3 } }, @@ -69,11 +69,11 @@ "defaultMessage": "!!!Stay on Free", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 37, + "line": 38, "column": 17 }, "end": { - "line": 40, + "line": 41, "column": 3 } }, @@ -82,11 +82,11 @@ "defaultMessage": "!!!Downgrade to Free", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 41, + "line": 42, "column": 20 }, "end": { - "line": 44, + "line": 45, "column": 3 } }, @@ -95,11 +95,11 @@ "defaultMessage": "!!!Start my free 14-days Trial", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 45, + "line": 46, "column": 15 }, "end": { - "line": 48, + "line": 49, "column": 3 } }, @@ -108,11 +108,11 @@ "defaultMessage": "!!!Choose Personal", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 49, + "line": 50, "column": 23 }, "end": { - "line": 52, + "line": 53, "column": 3 } }, @@ -121,11 +121,11 @@ "defaultMessage": "!!!Choose Professional", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 53, + "line": 54, "column": 18 }, "end": { - "line": 56, + "line": 57, "column": 3 } }, @@ -134,11 +134,11 @@ "defaultMessage": "!!!Complete comparison of all plans", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 57, + "line": 58, "column": 19 }, "end": { - "line": 60, + "line": 61, "column": 3 } } -- cgit v1.2.3-70-g09d2 From f74036151dd243ba598eea84759e925caba4971c Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Tue, 22 Oct 2019 11:50:18 +0200 Subject: Update CHANGELOG.md --- CHANGELOG.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af7f6a804..2d938523d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,20 @@ -# [5.4.0-beta.3](https://github.com/meetfranz/franz/compare/v5.4.0-beta.2...v5.4.0-beta.3) (2019-10-08) - +# [5.4.0-beta.3](https://github.com/meetfranz/franz/compare/v5.4.0-beta.2...v5.4.0-beta.3) (2019-10-22) ### Features -* **Workspaces:** Only load workspace related services ([ad7fb84](https://github.com/meetfranz/franz/commit/ad7fb84)) +* **App Start:** Only load workspace related services ([ad7fb84](https://github.com/meetfranz/franz/commit/ad7fb84)) + ### Bug Fixes -* **Services:** Restore services after system sleep ([7f11dff](https://github.com/meetfranz/franz/commit/7f11dff)) +* **Services:** Restore services after 10 minutes system suspension ([7f11dff](https://github.com/meetfranz/franz/commit/7f11dff)) +* **Workspaces:** Allow scrolling in Workspaces drawer ([5c1c0db](https://github.com/meetfranz/franz/commit/5c1c0db)) +* **Spell check:** fix(Spell checker): Fix disable spell checker ([@vantezzen](https://github.com/vantezzen)) + ([691e0cf](https://github.com/meetfranz/franz/commit/691e0cf)) + +### General + +* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** -- cgit v1.2.3-70-g09d2 From bf02563c49b3e61025a40dd8085586447cd2dc96 Mon Sep 17 00:00:00 2001 From: Amine Mouafik 穆昂明 Date: Wed, 23 Oct 2019 11:27:40 +0700 Subject: Remove git status from cloning steps --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 0f3595fe9..285c80bb0 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,6 @@ $ npm install --global windows-build-tools --vs2015 // Windows 7 ```bash $ git clone https://github.com/getferdi/ferdi.git $ cd ferdi -$ git status $ git submodule update --init --recursive ``` -- cgit v1.2.3-70-g09d2 From 184c1f0ad49173ac7094c23405cb00287d110e5b Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 23 Oct 2019 11:51:48 +0200 Subject: Remove analytics event in componentDidMount --- src/features/planSelection/containers/PlanSelectionScreen.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js index 3f9638e9d..cb62f45d3 100644 --- a/src/features/planSelection/containers/PlanSelectionScreen.js +++ b/src/features/planSelection/containers/PlanSelectionScreen.js @@ -38,10 +38,6 @@ class PlanSelectionScreen extends Component { intl: intlShape, }; - componentDidMount() { - gaEvent(GA_CATEGORY_PLAN_SELECTION, 'show'); - } - upgradeAccount(planId) { const { upgradeAccount } = this.props.actions.payment; -- cgit v1.2.3-70-g09d2 From 15b39bfc2d4903a37977662f4beaa9f325a94398 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Wed, 23 Oct 2019 13:06:25 +0200 Subject: Fix infinite loading screen when logging out --- src/components/settings/navigation/SettingsNavigation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js index 49e73e569..192cfde7a 100644 --- a/src/components/settings/navigation/SettingsNavigation.js +++ b/src/components/settings/navigation/SettingsNavigation.js @@ -86,9 +86,9 @@ export default @inject('stores', 'actions') @observer class SettingsNavigation e }, }); } + this.props.stores.user.isLoggingOut = true; } - this.props.stores.user.isLoggingOut = true; this.props.stores.router.push(isLoggedIn ? '/auth/logout' : '/auth/welcome'); if (isLoggedIn) { -- cgit v1.2.3-70-g09d2 From c7d6cb6c1044d319c45852997ef1d12420624b26 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Wed, 23 Oct 2019 13:21:00 +0200 Subject: Update internal server --- src/electron/ipc-api/localServer.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/electron/ipc-api/localServer.js b/src/electron/ipc-api/localServer.js index 2f8f1020a..d12fb5708 100644 --- a/src/electron/ipc-api/localServer.js +++ b/src/electron/ipc-api/localServer.js @@ -1,5 +1,4 @@ import { ipcMain, app } from 'electron'; -import path from 'path'; import net from 'net'; import startServer from '../../server/start'; @@ -38,7 +37,7 @@ export default (params) => { console.log('Starting local server on port', port); startServer( - path.join(app.getPath('userData'), 'server.sqlite'), + app.getPath('userData'), port, ); -- cgit v1.2.3-70-g09d2 From dda7d0b501085880bfba0e8c2883952815d18aca Mon Sep 17 00:00:00 2001 From: vantezzen Date: Wed, 23 Oct 2019 13:24:37 +0200 Subject: Update submodules --- recipes | 2 +- src/server | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes b/recipes index 198381d2b..7aa76feba 160000 --- a/recipes +++ b/recipes @@ -1 +1 @@ -Subproject commit 198381d2b0f720cdb935b73ef0002a1ace9274de +Subproject commit 7aa76feba8bd94368d27bee556480313c636f941 diff --git a/src/server b/src/server index f541cbf9c..b5973cdc4 160000 --- a/src/server +++ b/src/server @@ -1 +1 @@ -Subproject commit f541cbf9c73d4b80e3d88f084fb8eb9bff7a6411 +Subproject commit b5973cdc4cdd60e61d2fba25a317bb4d216a0d1c -- cgit v1.2.3-70-g09d2 From 65e68cfce042b238f4d2a1f9cd79fa11426186ea Mon Sep 17 00:00:00 2001 From: FranzBot Date: Wed, 23 Oct 2019 12:00:21 +0000 Subject: Automatic i18n update (i18n.meetfranz.com) --- src/i18n/locales/de.json | 104 +++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 74579592a..0042d0596 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -2,28 +2,28 @@ "app.errorHandler.action" : "Neu laden", "app.errorHandler.headline" : "Es ist ein Fehler aufgetreten", "feature.announcements.changelog.headline" : "Was ist neu in Franz {version}", - "feature.delayApp.headline" : "Upgrade your Franz plan to skip the wait", + "feature.delayApp.headline" : "Führe ein Upgrade deines Accounts durch, um nicht mehr warten zu müssen", "feature.delayApp.text" : "In {seconds} Sekunden geht's weiter!", "feature.delayApp.trial.action" : "Ja, ich möchte Franz Professional 14 Tage gratis testen", "feature.delayApp.trial.actionShort" : "Aktiviere die kostenlose Franz Professional Testlizenz", - "feature.delayApp.trial.headline" : "Get the free Franz Professional 14-days trial and skip the wait", - "feature.delayApp.upgrade.action" : "Upgrade Franz", + "feature.delayApp.trial.headline" : "Hol dir eine 14-tägige kostenlose Franz Professional Testlizenz und überspringe die Wartezeit", + "feature.delayApp.upgrade.action" : "Franz Upgrade durchführen", "feature.delayApp.upgrade.actionShort" : "Account upgraden", - "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade to Free", - "feature.planSelection.cta.stayOnFree" : "Stay on Free", - "feature.planSelection.cta.trial" : "Start my free 14-days Trial", - "feature.planSelection.cta.upgradePersonal" : "Choose Personal", - "feature.planSelection.cta.upgradePro" : "Choose Professional", - "feature.planSelection.free.text" : "Basic functionality", - "feature.planSelection.fullFeatureList" : "Complete comparison of all plans", - "feature.planSelection.fullscreen.dialog.cta.downgrade" : "Downgrade to Free", - "feature.planSelection.fullscreen.dialog.cta.upgrade" : "Choose Personal", - "feature.planSelection.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", - "feature.planSelection.fullscreen.dialog.title" : "Downgrade your Franz Plan", - "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", - "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", - "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", - "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", + "feature.planSelection.cta.ctaDowngradeFree" : "Downgrade zu Free", + "feature.planSelection.cta.stayOnFree" : "Ich bleibe bei Free", + "feature.planSelection.cta.trial" : "Starte meine 14-tägige kostenlose Testlizenz", + "feature.planSelection.cta.upgradePersonal" : "Ich will Franz Personal", + "feature.planSelection.cta.upgradePro" : "Ich will Franz Professional", + "feature.planSelection.free.text" : "Das Minimum", + "feature.planSelection.fullFeatureList" : "Alle Lizenzen im Vergleich", + "feature.planSelection.fullscreen.dialog.cta.downgrade" : "Downgrade zu Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade" : "Ich will Franz Personal", + "feature.planSelection.fullscreen.dialog.message" : "Dein Account wird auf Free herabgestuft - bist du sicher? Klicke hier für mehr Services und Funktionen für nur {currency}{price} pro Monat.", + "feature.planSelection.fullscreen.dialog.title" : "Downgrade deines Franz Accounts", + "feature.planSelection.fullscreen.subheadline" : "Es ist Zeit für eine Entscheidung! Mit Personal und Professional holst du das Beste aus Franz heraus. Hier ist ein Überblick für dich, wähle aus was zu dir passt.", + "feature.planSelection.fullscreen.welcome" : "{name}, bist du bereit?", + "feature.planSelection.personal.text" : "Mehr Services, kein Warten - ideal für private Nutzung.", + "feature.planSelection.pro.text" : "Unlimitierte Services und alle Features für dich - und dein Team.", "feature.serviceLimit.limitReached" : "Du hast {amount} von {limit} in deiner Lizenz inkludierten Services hinzugefügt. Bitte führe ein Upgrade deines Accounts durch, um mehr Services hinzuzufügen.", "feature.shareFranz.action.email" : "Als E-Mail senden", "feature.shareFranz.action.facebook" : "Auf Facebook teilen", @@ -35,13 +35,13 @@ "feature.todos.premium.info" : "Franz ToDos sind jetzt für Premium User verfügbar!", "feature.todos.premium.rollout" : "Alle anderen müssen sich noch ein wenig gedulden.", "feature.todos.premium.upgrade" : "Account Upgrade", - "feature.trialStatusBar.cta" : "Upgrade now", - "feature.trialStatusBar.expired" : "Your free Franz {plan} Trial has expired, please upgrade your account.", - "feature.trialStatusBar.fullscreen.dialog.cta.downgrade" : "Downgrade to Free", - "feature.trialStatusBar.fullscreen.dialog.cta.upgrade" : "Choose Personal", - "feature.trialStatusBar.fullscreen.dialog.message" : "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", - "feature.trialStatusBar.fullscreen.dialog.title" : "Downgrade your Franz Plan", - "feature.trialStatusBar.restTime" : "Your Free Franz {plan} Trial ends in {time}.", + "feature.trialStatusBar.cta" : "Upgrade jetzt durchführen", + "feature.trialStatusBar.expired" : "Deine kostenlose Franz {plan} Testlizenz ist abgelaufen, bitte führe ein Upgrade deines Accounts durch.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade" : "Downgrade zu Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade" : "Ich will Franz Personal", + "feature.trialStatusBar.fullscreen.dialog.message" : "Dein Account wird zu Free herabgestuft, bist du sicher? Klicke hier für mehr Services und Funktionen für nur {currency}{price} im Monat.", + "feature.trialStatusBar.fullscreen.dialog.title" : "Downgrade durchführen", + "feature.trialStatusBar.restTime" : "Deine kostenlose Franz {plan} Testlizenz endet in {time}.", "global.api.unhealthy" : "Verbindung zum Franz-Online-Service fehlgeschlagen", "global.franzProRequired" : "Franz Professional benötigt", "global.notConnectedToTheInternet" : "Du bist nicht mit dem Internet verbunden.", @@ -116,7 +116,7 @@ "menu.services.goHome" : "Home", "menu.services.setNextServiceActive" : "Nächster Dienst", "menu.todos" : "ToDos", - "menu.todos.enableTodos" : "Enable Todos", + "menu.todos.enableTodos" : "Todos aktivieren", "menu.view" : "Darstellung", "menu.view.enterFullScreen" : "Vollbildmodus", "menu.view.exitFullScreen" : "Vollbildmodus aus", @@ -145,42 +145,42 @@ "password.submit.label" : "Absenden", "password.successInfo" : "Wir haben Dir eine E-Mail mit weiteren Anweisungen geschickt.", "premiumFeature.button.upgradeAccount" : "Account upgraden", - "pricing.features.accountSync" : "Account Synchronisation", + "pricing.features.accountSync" : "Account Synchronisierung", "pricing.features.adFree" : "Keine Werbung", "pricing.features.appDelays" : "Keine unnötigen Unterbrechungen", "pricing.features.customWebsites" : "Hinzufügen von eigenen Websites", - "pricing.features.desktopNotifications" : "Desktop Notifications", + "pricing.features.desktopNotifications" : "Desktop Benachrichtigungen", "pricing.features.onPremise" : "On-premise & andere Hosted Services", - "pricing.features.recipes" : "Choose from more than 70 Services", + "pricing.features.recipes" : "Wähle aus über 70 Services", "pricing.features.serviceProxies" : "Service Proxies", "pricing.features.spellchecker" : "Rechtschreibprüfung", "pricing.features.teamManagement" : "Team Management", "pricing.features.thirdPartyServices" : "Integration von Services über Drittanbieter", "pricing.features.unlimitedServices" : "Unbegrenztes hinzufügen von Services", - "pricing.features.upToSixServices" : "Add up to 6 services", - "pricing.features.upToThreeServices" : "Add up to 3 services", + "pricing.features.upToSixServices" : "Füge bis zu 6 Services hinzu", + "pricing.features.upToThreeServices" : "Füge bis zu 3 Services hinzu", "pricing.features.workspaces" : "Workspaces", "pricing.plan.free" : "Free", "pricing.plan.legacy" : "Premium", "pricing.plan.personal" : "Personal", - "pricing.plan.personal-monthly" : "Personal Monthly", - "pricing.plan.personal-yearly" : "Personal Yearly", + "pricing.plan.personal-monthly" : "Personal monatlich", + "pricing.plan.personal-yearly" : "Personal jährlich", "pricing.plan.pro" : "Professional", - "pricing.plan.pro-monthly" : "Professional Monthly", - "pricing.plan.pro-yearly" : "Professional Yearly", - "pricing.trial.cta.accept" : "Start my 14-day Franz Professional Trial ", + "pricing.plan.pro-monthly" : "Professional monatlich", + "pricing.plan.pro-yearly" : "Professional jährlich", + "pricing.trial.cta.accept" : "Starte meine 14-tägige Franz Professional Testlizenz", "pricing.trial.cta.skip" : "Weiter zu Franz!", - "pricing.trial.cta.start" : "Start using Franz", + "pricing.trial.cta.start" : "Los geht's mit Franz!", "pricing.trial.error" : "Tut uns leid, wir konnten deine kostenlose Testlizenz nicht aktivieren.", "pricing.trial.features.headline" : "Franz Professional beinhaltet:", - "pricing.trial.headline.pro" : "Hi {name}, welcome to Franz", - "pricing.trial.intro.happyMessaging" : "Happy messaging,", - "pricing.trial.intro.specialTreat" : "We have a special treat for you.", - "pricing.trial.intro.tryPro" : "Enjoy the full Franz Professional experience completely free for 14 days.", + "pricing.trial.headline.pro" : "Hi {name}, willkommen bei Franz", + "pricing.trial.intro.happyMessaging" : "Viel Spaß,", + "pricing.trial.intro.specialTreat" : "Wir haben ein besonderes Geschenk für dich.", + "pricing.trial.intro.tryPro" : "Hol dir Franz Professional kostenlos für 14 Tage.", "pricing.trial.terms.automaticTrialEnd" : "Deine kostenlose Testlizenz endet automatisch nach 14 Tagen", "pricing.trial.terms.headline" : "Ohne Bindung, ohne Haken", "pricing.trial.terms.noCreditCard" : "Keine Kreditkarte notwendig", - "pricing.trial.terms.trialWorth" : "Free trial (normally {currency}{price} per month)", + "pricing.trial.terms.trialWorth" : "Kostenlose Testlizenz (sonst {currency}{price} im Monat)", "service.crashHandler.action" : "{name} neu laden", "service.crashHandler.autoReload" : "{name} wird in {seconds} Sekunden automatisch wiederhergestellt", "service.crashHandler.headline" : "Oh nein!", @@ -240,7 +240,7 @@ "settings.app.form.enableSpellchecking" : "Rechtschreibprüfung aktivieren", "settings.app.form.enableSystemTray" : "Franz im Infobereich anzeigen", "settings.app.form.enableTodos" : "Franz Todos aktivieren", - "settings.app.form.keepAllWorkspacesLoaded" : "Keep all workspaces loaded", + "settings.app.form.keepAllWorkspacesLoaded" : "Alle Dienste in den Workspaces aktiv lassen", "settings.app.form.language" : "Sprache", "settings.app.form.minimizeToSystemTray" : "Franz in den Infobereich minimieren", "settings.app.form.runInBackground" : "Franz im Hintergrund behalten, wenn das Fenster geschlossen wird", @@ -362,10 +362,10 @@ "settings.workspaces.workspaceFeatureInfo" : "Mit Franz Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her. Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.", "settings.workspaces.workspacesRequestFailed" : "Workspaces konnte nicht geladen werden", "sidebar.addNewService" : "Neuen Dienst hinzufügen", - "sidebar.closeTodosDrawer" : "Close Franz Todos", + "sidebar.closeTodosDrawer" : "Franz Todos schließen", "sidebar.closeWorkspaceDrawer" : "Workspaces schließen", "sidebar.muteApp" : "Benachrichtigungen & Audio deaktivieren", - "sidebar.openTodosDrawer" : "Open Franz Todos", + "sidebar.openTodosDrawer" : "Franz Todos öffnen", "sidebar.openWorkspaceDrawer" : "Workspaces öffnen", "sidebar.settings" : "Einstellungen", "sidebar.unmuteApp" : "Benachrichtigungen & Audio aktivieren", @@ -380,14 +380,14 @@ "signup.link.login" : "Du hast bereits ein Konto? Melde Dich an.", "signup.password.label" : "Passwort", "signup.submit.label" : "Konto erstellen", - "subscription.bestValue" : "Best value", + "subscription.bestValue" : "Bester Preis", "subscription.cta.activateTrial" : "Ja, kostenlose Franz Professional Testlizenz starten", "subscription.cta.allOptions" : "Alle Optionen anzeigen", "subscription.cta.choosePlan" : "Wähle deine Lizenz", "subscription.includedProFeatures" : "Die Franz Professional Lizenz beinhaltet:", - "subscription.interval.per" : "per {interval}", - "subscription.interval.perMonth" : "per month", - "subscription.interval.perMonthPerUser" : "per month & user", + "subscription.interval.per" : "pro {interval}", + "subscription.interval.perMonth" : "pro Monat", + "subscription.interval.perMonthPerUser" : "pro Monat & User", "subscription.planItem.upgradeAccount" : "Account Upgrade", "subscription.teaser.includedFeatures" : "Bezahlte Franz Lizenzen beinhalten:", "subscription.teaser.intro" : "Franz 5 ist voll gepackt mit vielen neuen Features, damit du für jegliche kommunikative Eventualität gerüstet bist. Nimm dir was du brauchst und leg los!", @@ -407,10 +407,10 @@ "validation.oneRequired" : "Mindestens ein Wert wird benötigt", "validation.required" : "{field} wird benötigt", "validation.url" : "{field} ist keine gültige URL", - "webControls.back" : "Back", - "webControls.forward" : "Forward", + "webControls.back" : "Zurück", + "webControls.forward" : "Weiter", "webControls.goHome" : "Home", - "webControls.openInBrowser" : "Open in Browser", + "webControls.openInBrowser" : "Im Browser öffnen", "webControls.reload" : "Neu laden", "welcome.loginButton" : "Bei Franz einloggen", "welcome.signupButton" : "Kostenloses Konto erstellen", -- cgit v1.2.3-70-g09d2 From c4f369510632704114c3f162ac61b81a47dad7c5 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 23 Oct 2019 14:06:39 +0200 Subject: Add price disclaimer --- .../planSelection/components/PlanSelection.js | 46 +++++++++++++++++----- src/i18n/locales/defaultMessages.json | 13 ++++++ src/i18n/locales/en-US.json | 3 +- .../planSelection/components/PlanSelection.json | 13 ++++++ 4 files changed, 64 insertions(+), 11 deletions(-) diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js index aff6bf94f..b6bb9d32d 100644 --- a/src/features/planSelection/components/PlanSelection.js +++ b/src/features/planSelection/components/PlanSelection.js @@ -6,7 +6,7 @@ import { defineMessages, intlShape } from 'react-intl'; import { H1, H2, Icon } from '@meetfranz/ui'; import color from 'color'; -import { mdiRocket } from '@mdi/js'; +import { mdiRocket, mdiArrowRight } from '@mdi/js'; import PlanItem from './PlanItem'; import { i18nPlanName } from '../../../helpers/plan-helpers'; import { PLANS } from '../../../config'; @@ -59,6 +59,10 @@ const messages = defineMessages({ id: 'feature.planSelection.fullFeatureList', defaultMessage: '!!!Complete comparison of all plans', }, + pricesBasedOnAnnualPayment: { + id: 'feature.planSelection.pricesBasedOnAnnualPayment', + defaultMessage: '!!!All prices based on yearly payment', + }, }); const styles = theme => ({ @@ -132,11 +136,23 @@ const styles = theme => ({ borderBottom: [1, 'solid', '#CECECE'], }, }, + footer: { + display: 'flex', + color: theme.styleTypes.primary.contrast, + marginTop: 20, + padding: [0, 15], + }, fullFeatureList: { - marginTop: 40, + marginRight: 'auto', textAlign: 'center', - display: 'block', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', color: `${theme.styleTypes.primary.contrast} !important`, + + '& svg': { + marginRight: 5, + }, }, scrollContainer: { border: '1px solid red', @@ -145,6 +161,10 @@ const styles = theme => ({ featuredPlan: { transform: 'scale(1.05)', }, + disclaimer: { + textAlign: 'right', + margin: [10, 15, 0, 0], + }, }); @injectSheet(styles) @observer @@ -238,13 +258,19 @@ class PlanSelection extends Component { />
- - {intl.formatMessage(messages.fullFeatureList)} - +
+ + + {intl.formatMessage(messages.fullFeatureList)} + + {/*

*/} + {intl.formatMessage(messages.pricesBasedOnAnnualPayment)} + {/*

*/} +
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 9b77fe34c..9dfaf959d 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -4136,6 +4136,19 @@ "column": 19, "line": 58 } + }, + { + "defaultMessage": "!!!All prices are based on the yearly plan", + "end": { + "column": 3, + "line": 65 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.pricesBasedOnAnnualPayment", + "start": { + "column": 30, + "line": 62 + } } ], "path": "src/features/planSelection/components/PlanSelection.json" diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 8bef09d4d..6e84d47f7 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}?", "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached": "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email": "Send as email", @@ -425,4 +426,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.

You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} \ No newline at end of file +} diff --git a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json index 685e81e82..7f1de6cfd 100644 --- a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json +++ b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json @@ -141,5 +141,18 @@ "line": 61, "column": 3 } + }, + { + "id": "feature.planSelection.pricesBasedOnAnnualPayment", + "defaultMessage": "!!!All prices based on yearly payment", + "file": "src/features/planSelection/components/PlanSelection.js", + "start": { + "line": 62, + "column": 30 + }, + "end": { + "line": 65, + "column": 3 + } } ] \ No newline at end of file -- cgit v1.2.3-70-g09d2 From ea9249028dd3561fb630a1c0a2ec250c994f1947 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 23 Oct 2019 14:17:12 +0200 Subject: Update strings --- src/i18n/locales/defaultMessages.json | 2 +- src/i18n/locales/en-US.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 9dfaf959d..9cfeaed42 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -4138,7 +4138,7 @@ } }, { - "defaultMessage": "!!!All prices are based on the yearly plan", + "defaultMessage": "!!!All prices based on yearly payment", "end": { "column": 3, "line": 65 diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 6e84d47f7..a701836dc 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -426,4 +426,4 @@ "workspaceDrawer.workspaceFeatureInfo": "

Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.

You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.

", "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", "workspaces.switchingIndicator.switchingTo": "Switching to" -} +} \ No newline at end of file -- cgit v1.2.3-70-g09d2 From 0baa9572d905a225451fe26ebcdbcef78e270cbd Mon Sep 17 00:00:00 2001 From: FranzBot Date: Wed, 23 Oct 2019 12:21:00 +0000 Subject: Automatic i18n update (i18n.meetfranz.com) --- src/i18n/locales/ca.json | 1 + src/i18n/locales/cs.json | 1 + src/i18n/locales/de.json | 1 + src/i18n/locales/el.json | 1 + src/i18n/locales/es.json | 1 + src/i18n/locales/fr.json | 1 + src/i18n/locales/ga.json | 1 + src/i18n/locales/hr.json | 1 + src/i18n/locales/hu.json | 1 + src/i18n/locales/id.json | 1 + src/i18n/locales/it.json | 1 + src/i18n/locales/ja.json | 1 + src/i18n/locales/ka.json | 1 + src/i18n/locales/nl-BE.json | 1 + src/i18n/locales/nl.json | 1 + src/i18n/locales/pl.json | 1 + src/i18n/locales/pt-BR.json | 1 + src/i18n/locales/pt.json | 1 + src/i18n/locales/ru.json | 1 + src/i18n/locales/sk.json | 1 + src/i18n/locales/sr.json | 1 + src/i18n/locales/tr.json | 1 + src/i18n/locales/uk.json | 1 + src/i18n/locales/zh-TW.json | 1 + 24 files changed, 24 insertions(+) diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 79deb7c87..897bcbf8f 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "Envia com a correu", diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index 658c813e6..636c2f12a 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Přidali jste {amount} z {limit} služeb, které jsou součástí vašeho předplatného. Pro přidání dalších služeb proveďte upgrade vašeho účtu.", "feature.shareFranz.action.email" : "Poslat jako e-mail", diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 0042d0596..dd2fa5554 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "Es ist Zeit für eine Entscheidung! Mit Personal und Professional holst du das Beste aus Franz heraus. Hier ist ein Überblick für dich, wähle aus was zu dir passt.", "feature.planSelection.fullscreen.welcome" : "{name}, bist du bereit?", "feature.planSelection.personal.text" : "Mehr Services, kein Warten - ideal für private Nutzung.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimitierte Services und alle Features für dich - und dein Team.", "feature.serviceLimit.limitReached" : "Du hast {amount} von {limit} in deiner Lizenz inkludierten Services hinzugefügt. Bitte führe ein Upgrade deines Accounts durch, um mehr Services hinzuzufügen.", "feature.shareFranz.action.email" : "Als E-Mail senden", diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index b9995de0b..dc6d27849 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "Send as email", diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 46992b183..0b5f60ef7 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Has sumado {amount} servicios más de los que están incluídos en tu plan. Por favor mejora tu cuenta para sumar más servicios.", "feature.shareFranz.action.email" : "Enviar como correo", diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index ee4df697a..cef9a4e76 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Vous avez ajouté {amount} services sur les {limit} qui sont inclus dans votre offre. Veuillez améliorer votre compte pour ajouter plus de services.", "feature.shareFranz.action.email" : "Envoyer par mail", diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index d206c04e1..d7520e27b 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Tá {amount} as {limit} seirbhísí atá san áireamh i do phlean curtha agat cheana féin. Uasghrádaigh do chuntas chun tuilleadh seirbhísí a chur leis, le do thoil.", "feature.shareFranz.action.email" : "Seol mar ríomhphost", diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index 7fb3169e5..8640a215b 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "Send as email", diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index 4bf6fc0e3..b537b869b 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "Küldés email-ben", diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index 40cffb49d..0e1dc7815 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Anda telah menambahkan {amount} dari kuota {limit} layanan yang tersedia untuk paket Anda. Tingkatkan akun untuk menambahkan layanan lain.", "feature.shareFranz.action.email" : "Kirim sebagai email", diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index 2edbfd2e8..350c0ce56 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Hai aggiunto {amount} su {limit} servizi che sono inclusi nel tuo piano. Per favore potenzia il tuo account per aggiungere più servizi.", "feature.shareFranz.action.email" : "Manda come email", diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 98132854f..f3fe9d59c 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "メールで送信", diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index c9236622d..7222deb06 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "Send as email", diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index d5cf9ac1e..c23788237 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "Verstuur als e-mail", diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index a80f80674..42d4fe995 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "Verstuur als e-mail", diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index 71b35f626..ae2a62d05 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Dodałeś {amount} z {limit} usług, które oferuje twój plan. Ulepsz swoje konto, aby dodać więcej usług.", "feature.shareFranz.action.email" : "Wyślij jako email", diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index ef38e6e0a..3ebbee605 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "É hora de fazer uma escolha. O Franz trabalha melhor nos nossos planos Pessoal e Profissional. Por favor, dê uma olhada e veja qual a melhor opção para você.", "feature.planSelection.fullscreen.welcome" : "Você está pronto para escolher, {name}?", "feature.planSelection.personal.text" : "Mais serviços, sem espera - ideal para uso pessoal.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Serviços ilimitados e funcionalidades profissionais para você - e seu time.", "feature.serviceLimit.limitReached" : "Você adicionou {amount} serviços de um total de {limit} que estão inclusos no seu plano. Por favor, atualize sua conta para adicionar mais serviços.", "feature.shareFranz.action.email" : "Enviar por e-mail", diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index 0224668d7..ff2d46b83 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "Enviar por e-mail", diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index 133614cf1..725ff0576 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Вы добавили {amount} максимальное {limit} количество сервисов, входящих в ваш план. Пожалуйста, обновите свой план чтобы добавить больше сервисов.", "feature.shareFranz.action.email" : "Отправить по email", diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index 35752c4ad..df8ee4b47 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Pridali ste {amount} z {limit} služieb, ktoré sú zahrnuté vo vašom pláne. Ak chcete pridať ďalšie služby, inovujte svoj účet.", "feature.shareFranz.action.email" : "Odoslať ako e-mail", diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index 889f3e526..97de357ec 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "Send as email", diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index e20266cd8..c91ade6bb 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "Mail olarak gönder", diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index 69b608e94..4cf53d7c4 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "Ви додали {amount} максимальну {limit} кількість сервісів, що входять в ваш план. Будь ласка, поновіть свій план щоб додати більше сервісів.", "feature.shareFranz.action.email" : "Надіслати по email", diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json index e24b3a6f4..a8000c13d 100644 --- a/src/i18n/locales/zh-TW.json +++ b/src/i18n/locales/zh-TW.json @@ -23,6 +23,7 @@ "feature.planSelection.fullscreen.subheadline" : "It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "feature.planSelection.fullscreen.welcome" : "Are you ready to choose, {name}?", "feature.planSelection.personal.text" : "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment" : "All prices based on yearly payment", "feature.planSelection.pro.text" : "Unlimited services and professional features for you - and your team.", "feature.serviceLimit.limitReached" : "You have added {amount} out of {limit} services that are included in your plan. Please upgrade your account to add more services.", "feature.shareFranz.action.email" : "以電子郵件傳送", -- cgit v1.2.3-70-g09d2 From c2ef03c9c0df08e6f4c1c37265795d829c20d6a9 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Wed, 23 Oct 2019 14:25:15 +0200 Subject: bump version to 5.4.0 --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d938523d..eabc36013 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,35 @@ +# [5.4.0](https://github.com/meetfranz/franz/compare/v5.4.0-beta.3...v5.4.0) (2019-10-23) + +### Features + +* **Custom Websites:** Added navigation bar for "Custom Website" service ([f8fbaad](https://github.com/meetfranz/franz/commit/f8fbaad)) +* **Mac:** Open Franz window with `Cmd+1` ([71831ec](https://github.com/meetfranz/franz/commit/71831ec)) +* **Todos:** Allow Franz Todos to open links in browser ([5ba6723](https://github.com/meetfranz/franz/commit/5ba6723)) +* **Service API:** Share `team`, `url` and `hasCustomIcon` with service ([9f4f3e7](https://github.com/meetfranz/franz/commit/9f4f3e7)) +* **App Start:** Only load workspace related services ([ad7fb84](https://github.com/meetfranz/franz/commit/ad7fb84)) + + +### Bug Fixes + +* **Services:** Restore services after 10 minutes system suspension ([7f11dff](https://github.com/meetfranz/franz/commit/7f11dff)) +* **Workspaces:** Allow scrolling in Workspaces drawer ([5c1c0db](https://github.com/meetfranz/franz/commit/5c1c0db)) +* **Spell check:** fix(Spell checker): Fix disable spell checker ([@vantezzen](https://github.com/vantezzen)) + ([691e0cf](https://github.com/meetfranz/franz/commit/691e0cf)) +* **App:** Fix "Paste And Match Style" ([490a988](https://github.com/meetfranz/franz/commit/490a988)) +* **macOS:** Only show services in Touch Bar that should be visible ([077ad22](https://github.com/meetfranz/franz/commit/077ad22)) +* **Service Proxies:** Fix proxy setting rehydration ([e2126a6](https://github.com/meetfranz/franz/commit/e2126a6)) +* **Settings:** Fix cache size calculation after clearing cache ([a31566d](https://github.com/meetfranz/franz/commit/a31566d)) +* **Spell check:** Fix spell checker to initialize without loaded dictionary ([734732f](https://github.com/meetfranz/franz/commit/734732f)) +* **Spell check:** Fix "undefined" language in context menu ([cc03883](https://github.com/meetfranz/franz/commit/cc03883)) +* **App:** Fix Basic Auth overlay background in Dark Mode ([027e50d](https://github.com/meetfranz/franz/commit/027e50d)) + + +### General + +* **App:** Updated electron to 6.0.11 ([34aab68](https://github.com/meetfranz/franz/commit/34aab68)) +* **Translations:** Improved translations. **[A million thanks to the amazing community. 🎉](http://i18n.meetfranz.com/)** + + # [5.4.0-beta.3](https://github.com/meetfranz/franz/compare/v5.4.0-beta.2...v5.4.0-beta.3) (2019-10-22) ### Features diff --git a/package.json b/package.json index 0ac473898..07fc32026 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "franz", "productName": "Franz", "appId": "com.meetfranz.franz", - "version": "5.4.0-beta.3", + "version": "5.4.0", "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", "copyright": "adlk x franz - Stefan Malzner", "main": "index.js", -- cgit v1.2.3-70-g09d2 From e0dde8a91b9999a0ae9dcb842846a5b647087206 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Thu, 24 Oct 2019 15:15:56 +0200 Subject: Remove Analytics --- src/features/planSelection/components/PlanSelection.js | 2 -- src/features/planSelection/containers/PlanSelectionScreen.js | 9 --------- 2 files changed, 11 deletions(-) diff --git a/src/features/planSelection/components/PlanSelection.js b/src/features/planSelection/components/PlanSelection.js index b6bb9d32d..4bf5238dd 100644 --- a/src/features/planSelection/components/PlanSelection.js +++ b/src/features/planSelection/components/PlanSelection.js @@ -12,7 +12,6 @@ import { i18nPlanName } from '../../../helpers/plan-helpers'; import { PLANS } from '../../../config'; import { FeatureList } from '../../../components/ui/FeatureList'; import Appear from '../../../components/ui/effects/Appear'; -import { gaPage } from '../../../lib/analytics'; const messages = defineMessages({ welcome: { @@ -185,7 +184,6 @@ class PlanSelection extends Component { }; componentDidMount() { - gaPage('/select-plan'); } render() { diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js index cb62f45d3..d04668279 100644 --- a/src/features/planSelection/containers/PlanSelectionScreen.js +++ b/src/features/planSelection/containers/PlanSelectionScreen.js @@ -9,7 +9,6 @@ import UserStore from '../../../stores/UserStore'; import PlanSelection from '../components/PlanSelection'; import ErrorBoundary from '../../../components/util/ErrorBoundary'; import { planSelectionStore, GA_CATEGORY_PLAN_SELECTION } from '..'; -import { gaEvent, gaPage } from '../../../lib/analytics'; const { dialog, app } = remote; @@ -67,8 +66,6 @@ class PlanSelectionScreen extends Component { upgradeAccount={(planId) => { if (user.data.hadSubscription) { this.upgradeAccount(planId); - - gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', planId); } else { activateTrial({ planId, @@ -76,8 +73,6 @@ class PlanSelectionScreen extends Component { } }} stayOnFree={() => { - gaPage('/select-plan/downgrade'); - const selection = dialog.showMessageBoxSync(app.mainWindow, { type: 'question', message: intl.formatMessage(messages.dialogTitle), @@ -91,15 +86,11 @@ class PlanSelectionScreen extends Component { ], }); - gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', 'Stay on Free'); - if (selection === 0) { downgradeAccount(); hideOverlay(); } else { this.upgradeAccount(plans.personal.yearly.id); - - gaEvent(GA_CATEGORY_PLAN_SELECTION, 'SelectPlan', 'Downgrade'); } }} subscriptionExpired={user.team && user.team.state === 'expired' && !user.team.userHasDowngraded} -- cgit v1.2.3-70-g09d2 From 102dc65cfec21d79542ff6b01a3ead121505251f Mon Sep 17 00:00:00 2001 From: vantezzen Date: Thu, 24 Oct 2019 15:19:10 +0200 Subject: Fix lint --- src/components/ui/PremiumFeatureContainer/index.js | 2 +- .../containers/PlanSelectionScreen.js | 2 +- src/features/planSelection/index.js | 2 - src/i18n/locales/defaultMessages.json | 749 +++++++++++++++++---- src/i18n/locales/en-US.json | 41 +- .../messages/src/components/layout/AppLayout.json | 4 +- .../planSelection/components/PlanSelection.json | 48 +- .../containers/PlanSelectionScreen.json | 16 +- src/stores/AppStore.js | 6 +- 9 files changed, 706 insertions(+), 164 deletions(-) diff --git a/src/components/ui/PremiumFeatureContainer/index.js b/src/components/ui/PremiumFeatureContainer/index.js index 611c50468..36bf38c98 100644 --- a/src/components/ui/PremiumFeatureContainer/index.js +++ b/src/components/ui/PremiumFeatureContainer/index.js @@ -9,7 +9,7 @@ import { oneOrManyChildElements } from '../../../prop-types'; import UserStore from '../../../stores/UserStore'; import styles from './styles'; -import FeatureStore from '../../../stores/FeaturesStore'; +import FeaturesStore from '../../../stores/FeaturesStore'; const messages = defineMessages({ action: { diff --git a/src/features/planSelection/containers/PlanSelectionScreen.js b/src/features/planSelection/containers/PlanSelectionScreen.js index d04668279..d202c924e 100644 --- a/src/features/planSelection/containers/PlanSelectionScreen.js +++ b/src/features/planSelection/containers/PlanSelectionScreen.js @@ -8,7 +8,7 @@ import FeaturesStore from '../../../stores/FeaturesStore'; import UserStore from '../../../stores/UserStore'; import PlanSelection from '../components/PlanSelection'; import ErrorBoundary from '../../../components/util/ErrorBoundary'; -import { planSelectionStore, GA_CATEGORY_PLAN_SELECTION } from '..'; +import { planSelectionStore } from '..'; const { dialog, app } = remote; diff --git a/src/features/planSelection/index.js b/src/features/planSelection/index.js index 81189207a..890be8871 100644 --- a/src/features/planSelection/index.js +++ b/src/features/planSelection/index.js @@ -3,8 +3,6 @@ import PlanSelectionStore from './store'; const debug = require('debug')('Franz:feature:planSelection'); -export const GA_CATEGORY_PLAN_SELECTION = 'planSelection'; - export const planSelectionStore = new PlanSelectionStore(); export default function initPlanSelection(stores, actions) { diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index b056f0d1b..bb65ccdf2 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -539,120 +539,172 @@ { "descriptors": [ { - "defaultMessage": "!!!Franz Professional", + "defaultMessage": "!!!Hi {name}, welcome to Franz", "end": { "column": 3, "line": 18 }, "file": "src/components/auth/Pricing.js", - "id": "pricing.trial.headline", + "id": "pricing.trial.headline.pro", "start": { "column": 12, "line": 15 } }, { - "defaultMessage": "!!!Your personal welcome offer:", + "defaultMessage": "!!!We have a special treat for you.", "end": { "column": 3, "line": 22 }, "file": "src/components/auth/Pricing.js", - "id": "pricing.trial.subheadline", + "id": "pricing.trial.intro.specialTreat", "start": { - "column": 17, + "column": 16, "line": 19 } }, { - "defaultMessage": "!!!No strings attached", + "defaultMessage": "!!!Enjoy the full Franz Professional experience completely free for 14 days.", "end": { "column": 3, "line": 26 }, "file": "src/components/auth/Pricing.js", + "id": "pricing.trial.intro.tryPro", + "start": { + "column": 10, + "line": 23 + } + }, + { + "defaultMessage": "!!!Happy messaging,", + "end": { + "column": 3, + "line": 30 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.trial.intro.happyMessaging", + "start": { + "column": 18, + "line": 27 + } + }, + { + "defaultMessage": "!!!No strings attached", + "end": { + "column": 3, + "line": 34 + }, + "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.headline", "start": { "column": 29, - "line": 23 + "line": 31 } }, { "defaultMessage": "!!!No credit card required", "end": { "column": 3, - "line": 30 + "line": 38 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.noCreditCard", "start": { "column": 16, - "line": 27 + "line": 35 } }, { "defaultMessage": "!!!Your free trial ends automatically after 14 days", "end": { "column": 3, - "line": 34 + "line": 42 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.terms.automaticTrialEnd", "start": { "column": 21, - "line": 31 + "line": 39 + } + }, + { + "defaultMessage": "!!!Free trial (normally {currency}{price} per month)", + "end": { + "column": 3, + "line": 46 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.trial.terms.trialWorth", + "start": { + "column": 14, + "line": 43 } }, { "defaultMessage": "!!!Sorry, we could not activate your trial!", "end": { "column": 3, - "line": 38 + "line": 50 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.error", "start": { "column": 19, - "line": 35 + "line": 47 } }, { - "defaultMessage": "!!!Yes, upgrade my account to Franz Professional", + "defaultMessage": "!!!Start my 14-day Franz Professional Trial", "end": { "column": 3, - "line": 42 + "line": 54 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.cta.accept", "start": { "column": 13, - "line": 39 + "line": 51 + } + }, + { + "defaultMessage": "!!!Start using Franz", + "end": { + "column": 3, + "line": 58 + }, + "file": "src/components/auth/Pricing.js", + "id": "pricing.trial.cta.start", + "start": { + "column": 12, + "line": 55 } }, { "defaultMessage": "!!!Continue to Ferdi", "end": { "column": 3, - "line": 46 + "line": 62 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.cta.skip", "start": { "column": 11, - "line": 43 + "line": 59 } }, { "defaultMessage": "!!!Franz Professional includes:", "end": { "column": 3, - "line": 50 + "line": 66 }, "file": "src/components/auth/Pricing.js", "id": "pricing.trial.features.headline", "start": { "column": 20, - "line": 47 + "line": 63 } } ], @@ -882,52 +934,52 @@ "defaultMessage": "!!!Your services have been updated.", "end": { "column": 3, - "line": 31 + "line": 33 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.servicesUpdated", "start": { "column": 19, - "line": 28 + "line": 30 } }, { "defaultMessage": "!!!Reload services", "end": { "column": 3, - "line": 35 + "line": 37 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.buttonReloadServices", "start": { "column": 24, - "line": 32 + "line": 34 } }, { "defaultMessage": "!!!Could not load services and user information", "end": { "column": 3, - "line": 39 + "line": 41 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.requiredRequestsFailed", "start": { "column": 26, - "line": 36 + "line": 38 } }, { "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", "end": { "column": 3, - "line": 43 + "line": 45 }, "file": "src/components/layout/AppLayout.js", "id": "infobar.authRequestFailed", "start": { "column": 21, - "line": 40 + "line": 42 } } ], @@ -3494,134 +3546,199 @@ }, { "descriptors": [ + { + "defaultMessage": "!!!Choose from more than 70 Services", + "end": { + "column": 3, + "line": 12 + }, + "file": "src/components/ui/FeatureList.js", + "id": "pricing.features.recipes", + "start": { + "column": 20, + "line": 9 + } + }, + { + "defaultMessage": "!!!Account Synchronisation", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/components/ui/FeatureList.js", + "id": "pricing.features.accountSync", + "start": { + "column": 15, + "line": 13 + } + }, + { + "defaultMessage": "!!!Desktop Notifications", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/components/ui/FeatureList.js", + "id": "pricing.features.desktopNotifications", + "start": { + "column": 24, + "line": 17 + } + }, { "defaultMessage": "!!!Add unlimited services", "end": { "column": 3, - "line": 11 + "line": 24 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.unlimitedServices", "start": { "column": 21, - "line": 8 + "line": 21 + } + }, + { + "defaultMessage": "!!!Add up to 3 services", + "end": { + "column": 3, + "line": 28 + }, + "file": "src/components/ui/FeatureList.js", + "id": "pricing.features.upToThreeServices", + "start": { + "column": 21, + "line": 25 + } + }, + { + "defaultMessage": "!!!Add up to 6 services", + "end": { + "column": 3, + "line": 32 + }, + "file": "src/components/ui/FeatureList.js", + "id": "pricing.features.upToSixServices", + "start": { + "column": 19, + "line": 29 } }, { "defaultMessage": "!!!Spellchecker support", "end": { "column": 3, - "line": 15 + "line": 36 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.spellchecker", "start": { "column": 16, - "line": 12 + "line": 33 } }, { "defaultMessage": "!!!Workspaces", "end": { "column": 3, - "line": 19 + "line": 40 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.workspaces", "start": { "column": 14, - "line": 16 + "line": 37 } }, { "defaultMessage": "!!!Add Custom Websites", "end": { "column": 3, - "line": 23 + "line": 44 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.customWebsites", "start": { "column": 18, - "line": 20 + "line": 41 } }, { "defaultMessage": "!!!On-premise & other Hosted Services", "end": { "column": 3, - "line": 27 + "line": 48 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.onPremise", "start": { "column": 13, - "line": 24 + "line": 45 } }, { "defaultMessage": "!!!Install 3rd party services", "end": { "column": 3, - "line": 31 + "line": 52 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.thirdPartyServices", "start": { "column": 22, - "line": 28 + "line": 49 } }, { "defaultMessage": "!!!Service Proxies", "end": { "column": 3, - "line": 35 + "line": 56 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.serviceProxies", "start": { "column": 18, - "line": 32 + "line": 53 } }, { "defaultMessage": "!!!Team Management", "end": { "column": 3, - "line": 39 + "line": 60 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.teamManagement", "start": { "column": 18, - "line": 36 + "line": 57 } }, { "defaultMessage": "!!!No Waiting Screens", "end": { "column": 3, - "line": 43 + "line": 64 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.appDelays", "start": { "column": 13, - "line": 40 + "line": 61 } }, { "defaultMessage": "!!!Forever ad-free", "end": { "column": 3, - "line": 47 + "line": 68 }, "file": "src/components/ui/FeatureList.js", "id": "pricing.features.adFree", "start": { "column": 10, - "line": 44 + "line": 65 } } ], @@ -4450,7 +4567,7 @@ } }, { - "defaultMessage": "!!!Get a Franz Supporter License", + "defaultMessage": "!!!Upgrade Franz", "end": { "column": 3, "line": 25 @@ -4494,100 +4611,393 @@ { "descriptors": [ { - "defaultMessage": "!!!QuickSwitch", + "defaultMessage": "!!!per month", "end": { "column": 3, - "line": 19 + "line": 18 }, - "file": "src/features/quickSwitch/Component.js", - "id": "feature.quickSwitch.title", + "file": "src/features/planSelection/components/PlanItem.js", + "id": "subscription.interval.perMonth", "start": { - "column": 9, - "line": 16 + "column": 12, + "line": 15 } }, { - "defaultMessage": "!!!Search...", + "defaultMessage": "!!!per month & user", "end": { "column": 3, - "line": 23 + "line": 22 }, - "file": "src/features/quickSwitch/Component.js", - "id": "feature.quickSwitch.search", + "file": "src/features/planSelection/components/PlanItem.js", + "id": "subscription.interval.perMonthPerUser", "start": { - "column": 10, - "line": 20 + "column": 19, + "line": 19 } }, { - "defaultMessage": "!!!Select a service with TAB, ↑ and ↓. Open a service with ENTER.", + "defaultMessage": "!!!Best value", "end": { "column": 3, - "line": 27 + "line": 26 }, - "file": "src/features/quickSwitch/Component.js", - "id": "feature.quickSwitch.info", + "file": "src/features/planSelection/components/PlanItem.js", + "id": "subscription.bestValue", "start": { - "column": 8, - "line": 24 + "column": 13, + "line": 23 } } ], - "path": "src/features/quickSwitch/Component.json" + "path": "src/features/planSelection/components/PlanItem.json" }, { "descriptors": [ { - "defaultMessage": "!!!Changes in Franz {version}", + "defaultMessage": "!!!Are you ready to choose, {name}", "end": { "column": 3, - "line": 23 + "line": 20 }, - "file": "src/features/serviceLimit/components/AnnouncementScreen.js", - "id": "feature.announcements.changelog.headline", + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.fullscreen.welcome", "start": { - "column": 12, - "line": 20 + "column": 11, + "line": 17 } - } - ], - "path": "src/features/serviceLimit/components/AnnouncementScreen.json" - }, - { - "descriptors": [ + }, { - "defaultMessage": "!!!You have added {amount} of {limit} services. Please upgrade your account to add more services.", + "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "end": { "column": 3, - "line": 12 + "line": 24 }, - "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", - "id": "feature.serviceLimit.limitReached", + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.fullscreen.subheadline", "start": { - "column": 16, - "line": 9 + "column": 15, + "line": 21 } }, { - "defaultMessage": "!!!Upgrade account", + "defaultMessage": "!!!Basic functionality", "end": { "column": 3, - "line": 16 + "line": 28 }, - "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", - "id": "premiumFeature.button.upgradeAccount", + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.free.text", "start": { - "column": 10, - "line": 13 + "column": 12, + "line": 25 } - } - ], - "path": "src/features/serviceLimit/components/LimitReachedInfobox.json" - }, - { - "descriptors": [ + }, { - "defaultMessage": "!!!Ferdi is better together!", + "defaultMessage": "!!!More services, no waiting - ideal for personal use.", + "end": { + "column": 3, + "line": 32 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.personal.text", + "start": { + "column": 16, + "line": 29 + } + }, + { + "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", + "end": { + "column": 3, + "line": 36 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.pro.text", + "start": { + "column": 20, + "line": 33 + } + }, + { + "defaultMessage": "!!!Stay on Free", + "end": { + "column": 3, + "line": 40 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.cta.stayOnFree", + "start": { + "column": 17, + "line": 37 + } + }, + { + "defaultMessage": "!!!Downgrade to Free", + "end": { + "column": 3, + "line": 44 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.cta.ctaDowngradeFree", + "start": { + "column": 20, + "line": 41 + } + }, + { + "defaultMessage": "!!!Start my free 14-days Trial", + "end": { + "column": 3, + "line": 48 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.cta.trial", + "start": { + "column": 15, + "line": 45 + } + }, + { + "defaultMessage": "!!!Choose Personal", + "end": { + "column": 3, + "line": 52 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.cta.upgradePersonal", + "start": { + "column": 23, + "line": 49 + } + }, + { + "defaultMessage": "!!!Choose Professional", + "end": { + "column": 3, + "line": 56 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.cta.upgradePro", + "start": { + "column": 18, + "line": 53 + } + }, + { + "defaultMessage": "!!!Complete comparison of all plans", + "end": { + "column": 3, + "line": 60 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.fullFeatureList", + "start": { + "column": 19, + "line": 57 + } + }, + { + "defaultMessage": "!!!All prices based on yearly payment", + "end": { + "column": 3, + "line": 64 + }, + "file": "src/features/planSelection/components/PlanSelection.js", + "id": "feature.planSelection.pricesBasedOnAnnualPayment", + "start": { + "column": 30, + "line": 61 + } + } + ], + "path": "src/features/planSelection/components/PlanSelection.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!per {interval}", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/planSelection/components/PlanTeaser.js", + "id": "subscription.interval.per", + "start": { + "column": 7, + "line": 16 + } + }, + { + "defaultMessage": "!!!Upgrade Account", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/planSelection/components/PlanTeaser.js", + "id": "subscription.planItem.upgradeAccount", + "start": { + "column": 7, + "line": 20 + } + } + ], + "path": "src/features/planSelection/components/PlanTeaser.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Downgrade your Franz Plan", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "id": "feature.planSelection.fullscreen.dialog.title", + "start": { + "column": 15, + "line": 16 + } + }, + { + "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "id": "feature.planSelection.fullscreen.dialog.message", + "start": { + "column": 17, + "line": 20 + } + }, + { + "defaultMessage": "!!!Downgrade to Free", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "id": "feature.planSelection.fullscreen.dialog.cta.downgrade", + "start": { + "column": 22, + "line": 24 + } + }, + { + "defaultMessage": "!!!Choose Personal", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/features/planSelection/containers/PlanSelectionScreen.js", + "id": "feature.planSelection.fullscreen.dialog.cta.upgrade", + "start": { + "column": 20, + "line": 28 + } + } + ], + "path": "src/features/planSelection/containers/PlanSelectionScreen.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!QuickSwitch", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/quickSwitch/Component.js", + "id": "feature.quickSwitch.title", + "start": { + "column": 9, + "line": 16 + } + }, + { + "defaultMessage": "!!!Search...", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/quickSwitch/Component.js", + "id": "feature.quickSwitch.search", + "start": { + "column": 10, + "line": 20 + } + }, + { + "defaultMessage": "!!!Select a service with TAB, ↑ and ↓. Open a service with ENTER.", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/features/quickSwitch/Component.js", + "id": "feature.quickSwitch.info", + "start": { + "column": 8, + "line": 24 + } + } + ], + "path": "src/features/quickSwitch/Component.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Changes in Franz {version}", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/serviceLimit/components/AnnouncementScreen.js", + "id": "feature.announcements.changelog.headline", + "start": { + "column": 12, + "line": 20 + } + } + ], + "path": "src/features/serviceLimit/components/AnnouncementScreen.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!You have added {amount} of {limit} services. Please upgrade your account to add more services.", + "end": { + "column": 3, + "line": 12 + }, + "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", + "id": "feature.serviceLimit.limitReached", + "start": { + "column": 16, + "line": 9 + } + }, + { + "defaultMessage": "!!!Upgrade account", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/features/serviceLimit/components/LimitReachedInfobox.js", + "id": "premiumFeature.button.upgradeAccount", + "start": { + "column": 10, + "line": 13 + } + } + ], + "path": "src/features/serviceLimit/components/LimitReachedInfobox.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Ferdi is better together!", "end": { "column": 3, "line": 20 @@ -4724,6 +5134,107 @@ ], "path": "src/features/todos/components/TodosWebview.json" }, + { + "descriptors": [ + { + "defaultMessage": "!!!Your Free Franz {plan} Trial ends in {time}.", + "end": { + "column": 3, + "line": 16 + }, + "file": "src/features/trialStatusBar/components/TrialStatusBar.js", + "id": "feature.trialStatusBar.restTime", + "start": { + "column": 12, + "line": 13 + } + }, + { + "defaultMessage": "!!!Your free Franz {plan} Trial has expired, please upgrade your account.", + "end": { + "column": 3, + "line": 20 + }, + "file": "src/features/trialStatusBar/components/TrialStatusBar.js", + "id": "feature.trialStatusBar.expired", + "start": { + "column": 11, + "line": 17 + } + }, + { + "defaultMessage": "!!!Upgrade now", + "end": { + "column": 3, + "line": 24 + }, + "file": "src/features/trialStatusBar/components/TrialStatusBar.js", + "id": "feature.trialStatusBar.cta", + "start": { + "column": 7, + "line": 21 + } + } + ], + "path": "src/features/trialStatusBar/components/TrialStatusBar.json" + }, + { + "descriptors": [ + { + "defaultMessage": "!!!Downgrade your Franz Plan", + "end": { + "column": 3, + "line": 19 + }, + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "id": "feature.trialStatusBar.fullscreen.dialog.title", + "start": { + "column": 15, + "line": 16 + } + }, + { + "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "end": { + "column": 3, + "line": 23 + }, + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "id": "feature.trialStatusBar.fullscreen.dialog.message", + "start": { + "column": 17, + "line": 20 + } + }, + { + "defaultMessage": "!!!Downgrade to Free", + "end": { + "column": 3, + "line": 27 + }, + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "id": "feature.trialStatusBar.fullscreen.dialog.cta.downgrade", + "start": { + "column": 22, + "line": 24 + } + }, + { + "defaultMessage": "!!!Choose Personal", + "end": { + "column": 3, + "line": 31 + }, + "file": "src/features/trialStatusBar/containers/TrialStatusBarScreen.js", + "id": "feature.trialStatusBar.fullscreen.dialog.cta.upgrade", + "start": { + "column": 20, + "line": 28 + } + } + ], + "path": "src/features/trialStatusBar/containers/TrialStatusBarScreen.json" + }, { "descriptors": [ { @@ -5093,104 +5604,104 @@ "defaultMessage": "!!!Your workspaces", "end": { "column": 3, - "line": 22 + "line": 23 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.headline", "start": { "column": 12, - "line": 19 + "line": 20 } }, { "defaultMessage": "!!!You haven't added any workspaces yet.", "end": { "column": 3, - "line": 26 + "line": 27 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.noWorkspacesAdded", "start": { "column": 19, - "line": 23 + "line": 24 } }, { "defaultMessage": "!!!Could not load your workspaces", "end": { "column": 3, - "line": 30 + "line": 31 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.workspacesRequestFailed", "start": { "column": 27, - "line": 27 + "line": 28 } }, { "defaultMessage": "!!!Try again", "end": { "column": 3, - "line": 34 + "line": 35 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.tryReloadWorkspaces", "start": { "column": 23, - "line": 31 + "line": 32 } }, { "defaultMessage": "!!!Your changes have been saved", "end": { "column": 3, - "line": 38 + "line": 39 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.updatedInfo", "start": { "column": 15, - "line": 35 + "line": 36 } }, { "defaultMessage": "!!!Workspace has been deleted", "end": { "column": 3, - "line": 42 + "line": 43 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.deletedInfo", "start": { "column": 15, - "line": 39 + "line": 40 } }, { "defaultMessage": "!!!Info about workspace feature", "end": { "column": 3, - "line": 46 + "line": 47 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.workspaceFeatureInfo", "start": { "column": 24, - "line": 43 + "line": 44 } }, { "defaultMessage": "!!!Less is More: Introducing Ferdi Workspaces", "end": { "column": 3, - "line": 50 + "line": 51 }, "file": "src/features/workspaces/components/WorkspacesDashboard.js", "id": "settings.workspaces.workspaceFeatureHeadline", "start": { "column": 28, - "line": 47 + "line": 48 } } ], @@ -5217,7 +5728,7 @@ { "descriptors": [ { - "defaultMessage": "!!!Franz Professional", + "defaultMessage": "!!!Professional", "end": { "column": 3, "line": 8 @@ -5230,7 +5741,7 @@ } }, { - "defaultMessage": "!!!Franz Personal", + "defaultMessage": "!!!Personal", "end": { "column": 3, "line": 12 @@ -5243,7 +5754,7 @@ } }, { - "defaultMessage": "!!!Franz Free", + "defaultMessage": "!!!Free", "end": { "column": 3, "line": 16 @@ -5256,7 +5767,7 @@ } }, { - "defaultMessage": "!!!Franz Premium", + "defaultMessage": "!!!Premium", "end": { "column": 3, "line": 20 diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 477bdf43c..a34da1848 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", diff --git a/src/i18n/messages/src/components/layout/AppLayout.json b/src/i18n/messages/src/components/layout/AppLayout.json index 8b7fcf1b2..bca181d0f 100644 --- a/src/i18n/messages/src/components/layout/AppLayout.json +++ b/src/i18n/messages/src/components/layout/AppLayout.json @@ -43,11 +43,11 @@ "defaultMessage": "!!!There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", "file": "src/components/layout/AppLayout.js", "start": { - "line": 40, + "line": 42, "column": 21 }, "end": { - "line": 43, + "line": 45, "column": 3 } } diff --git a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json index 7f1de6cfd..ed354146e 100644 --- a/src/i18n/messages/src/features/planSelection/components/PlanSelection.json +++ b/src/i18n/messages/src/features/planSelection/components/PlanSelection.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Are you ready to choose, {name}", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 18, + "line": 17, "column": 11 }, "end": { - "line": 21, + "line": 20, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!It's time to make a choice. Franz works best on our Personal and Professional plans. Please have a look and choose the best one for you.", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 22, + "line": 21, "column": 15 }, "end": { - "line": 25, + "line": 24, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Basic functionality", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 26, + "line": 25, "column": 12 }, "end": { - "line": 29, + "line": 28, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!More services, no waiting - ideal for personal use.", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 30, + "line": 29, "column": 16 }, "end": { - "line": 33, + "line": 32, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Unlimited services and professional features for you - and your team.", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 34, + "line": 33, "column": 20 }, "end": { - "line": 37, + "line": 36, "column": 3 } }, @@ -69,11 +69,11 @@ "defaultMessage": "!!!Stay on Free", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 38, + "line": 37, "column": 17 }, "end": { - "line": 41, + "line": 40, "column": 3 } }, @@ -82,11 +82,11 @@ "defaultMessage": "!!!Downgrade to Free", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 42, + "line": 41, "column": 20 }, "end": { - "line": 45, + "line": 44, "column": 3 } }, @@ -95,11 +95,11 @@ "defaultMessage": "!!!Start my free 14-days Trial", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 46, + "line": 45, "column": 15 }, "end": { - "line": 49, + "line": 48, "column": 3 } }, @@ -108,11 +108,11 @@ "defaultMessage": "!!!Choose Personal", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 50, + "line": 49, "column": 23 }, "end": { - "line": 53, + "line": 52, "column": 3 } }, @@ -121,11 +121,11 @@ "defaultMessage": "!!!Choose Professional", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 54, + "line": 53, "column": 18 }, "end": { - "line": 57, + "line": 56, "column": 3 } }, @@ -134,11 +134,11 @@ "defaultMessage": "!!!Complete comparison of all plans", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 58, + "line": 57, "column": 19 }, "end": { - "line": 61, + "line": 60, "column": 3 } }, @@ -147,11 +147,11 @@ "defaultMessage": "!!!All prices based on yearly payment", "file": "src/features/planSelection/components/PlanSelection.js", "start": { - "line": 62, + "line": 61, "column": 30 }, "end": { - "line": 65, + "line": 64, "column": 3 } } diff --git a/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json b/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json index 905c6e09a..04b2144b4 100644 --- a/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json +++ b/src/i18n/messages/src/features/planSelection/containers/PlanSelectionScreen.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Downgrade your Franz Plan", "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "start": { - "line": 17, + "line": 16, "column": 15 }, "end": { - "line": 20, + "line": 19, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "start": { - "line": 21, + "line": 20, "column": 17 }, "end": { - "line": 24, + "line": 23, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Downgrade to Free", "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "start": { - "line": 25, + "line": 24, "column": 22 }, "end": { - "line": 28, + "line": 27, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!Choose Personal", "file": "src/features/planSelection/containers/PlanSelectionScreen.js", "start": { - "line": 29, + "line": 28, "column": 20 }, "end": { - "line": 32, + "line": 31, "column": 3 } } diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 6ce79f2e2..c6724c20f 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js @@ -59,7 +59,7 @@ export default class AppStore extends Store { @observable isOnline = navigator.onLine; @observable authRequestFailed = false; - + @observable timeSuspensionStart; @observable timeOfflineStart; @@ -206,8 +206,6 @@ export default class AppStore extends Store { setTimeout(() => { window.location.reload(); }, ms('2s')); - - statsEvent('resumed-app'); } }); @@ -222,8 +220,6 @@ export default class AppStore extends Store { localStorage.setItem(CATALINA_NOTIFICATION_HACK_KEY, true); } - - statsEvent('app-start'); } @computed get cacheSize() { -- cgit v1.2.3-70-g09d2 From f3a3d243c71ddde71dfc98a6e57b0fac1e9ff460 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:08 +0200 Subject: New translations en-US.json (Afrikaans) --- src/i18n/locales/af.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/af.json b/src/i18n/locales/af.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/af.json +++ b/src/i18n/locales/af.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From 33c9bd83d6712d6b360da6c008af9e4a5788c3dd Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:12 +0200 Subject: New translations en-US.json (Romanian) --- src/i18n/locales/ro.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/ro.json b/src/i18n/locales/ro.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/ro.json +++ b/src/i18n/locales/ro.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From c06b9c3c02ee9fa5e395cb6ffb9d5429fb88f2c0 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:16 +0200 Subject: New translations en-US.json (Japanese) --- src/i18n/locales/ja.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 49c886dc6..b9b6da6c3 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Ferdiサポーターライセンスを購入する", "feature.delayApp.upgrade.actionShort": "アカウントをアップグレード", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Ferdiのオンラインサービスに接続できません。", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "インターネットに接続されていません。", @@ -140,15 +163,20 @@ "password.submit.label": "送信", "password.successInfo": "メールを確認して下さい", "premiumFeature.button.upgradeAccount": "アカウントをアップグレード", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "{name}を再読み込み", "service.crashHandler.autoReload": "{seconds}秒後、自動的に{name}の復旧を試みます", "service.crashHandler.headline": "しまった!", @@ -405,10 +437,15 @@ "signup.link.login": "アカウントを既に持っていますか? こちらからサインイン", "signup.password.label": "Password", "signup.submit.label": "アカウントの作成", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "キャンセル", -- cgit v1.2.3-70-g09d2 From 5973cc3c97f316b8a3b1dfcfd8093657d06cba71 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:19 +0200 Subject: New translations en-US.json (Korean) --- src/i18n/locales/ko.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/ko.json +++ b/src/i18n/locales/ko.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From b7936e842efef6737fad9f881cd2f93f8c6a3b52 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:22 +0200 Subject: New translations en-US.json (Norwegian) --- src/i18n/locales/no.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/no.json b/src/i18n/locales/no.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/no.json +++ b/src/i18n/locales/no.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From 5960ad3010c54b7cc5f27a519ec45757381e62d0 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:26 +0200 Subject: New translations en-US.json (Polish) --- src/i18n/locales/pl.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index 6b4eb7d6e..6cc75eaf3 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Uzyskaj licencję Ferdi Supporter", "feature.delayApp.upgrade.actionShort": "Ulepsz swoje konto", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Listy zadań Ferdi są już dostępne dla użytkowników premium!", "feature.todos.premium.rollout": "Wszyscy inni będą musieli zaczekać nieco dłużej.", "feature.todos.premium.upgrade": "Ulepsz konto", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Nie można połączyć się z usługami Ferdi online", "global.franzProRequired": "Wymagany Ferdi Professional", "global.notConnectedToTheInternet": "Nie masz połączenia z Internetem.", @@ -140,15 +163,20 @@ "password.submit.label": "Wyślij", "password.successInfo": "Proszę sprawdzić swój email", "premiumFeature.button.upgradeAccount": "Ulepsz swoje konto", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Na zawsze bez reklam", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Dodawanie dowolnych stron internetowych", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Obsługa sprawdzania pisowni", "pricing.features.teamManagement": "Zarządzanie zespołem", "pricing.features.thirdPartyServices": "Instalacja zewnętrznych usług", "pricing.features.unlimitedServices": "Dodawanie nielimitowanych usług", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Obszary robocze", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Przeładuj {name}", "service.crashHandler.autoReload": "Próba automatycznego odnowienia {name} za {seconds} sekund/y", "service.crashHandler.headline": "O nie!", @@ -405,10 +437,15 @@ "signup.link.login": "Masz już konto, zalogować się?", "signup.password.label": "Password", "signup.submit.label": "Stwórz konto", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Ulepsz konto", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Anuluj", -- cgit v1.2.3-70-g09d2 From 67d324e745b7eeb79572feb067315c9aacbdc07e Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:29 +0200 Subject: New translations en-US.json (Portuguese) --- src/i18n/locales/pt-BR.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index 3d16482c9..9dec7e7a3 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Empieza el periodo de prueba de Ferdi Profesional por 14 días y cruza la linea.", "feature.delayApp.upgrade.action": "Adquira uma licença de suporte Ferdi", "feature.delayApp.upgrade.actionShort": "Atualizar conta", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "As Listas de Tarefa do Ferdi estão disponíveis para usuários premium!", "feature.todos.premium.rollout": "As outras pessoas terão que esperar um pouquinho mais.", "feature.todos.premium.upgrade": "Actualizar cuenta", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Não foi possível conectar-se aos serviços on-line do Ferdi.", "global.franzProRequired": "Se requiere una cuenta Ferdi Profesional", "global.notConnectedToTheInternet": "Você não está conectado à internet", @@ -140,15 +163,20 @@ "password.submit.label": "Enviar", "password.successInfo": "Por favor, verifique o seu e-mail", "premiumFeature.button.upgradeAccount": "Atualizar conta", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Sin anuncios para siempre!", "pricing.features.appDelays": "Sem Telas de Espera", "pricing.features.customWebsites": "Adicionar Websites Personalizados", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "En sitio y otros servicios alojados", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Apoderados de Servicio", "pricing.features.spellchecker": "Soporte de corrector ortográfico", "pricing.features.teamManagement": "Gestão de Time", "pricing.features.thirdPartyServices": "Instalar servicios de terceros", "pricing.features.unlimitedServices": "Agregar servicios ilimitados", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Áreas de trabalho", "pricing.plan.free": "Ferdi Gratuito", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Profissional Anual", "pricing.trial.cta.accept": "Sim, atualizar minha conta para o Ferdi Profissional", "pricing.trial.cta.skip": "Continuar para o Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Desculpe, não conseguimos ativar o seu período de testes", "pricing.trial.features.headline": "Incluso no Ferdi Profissional:", - "pricing.trial.headline": "Ferdi Profissional", - "pricing.trial.subheadline": "Sua oferta pessoal de boas-vindas:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Seu período de testes encerra automaticamente em 14 dias", "pricing.trial.terms.headline": "Sem vínculos", "pricing.trial.terms.noCreditCard": "No necesita tarjeta de crédito", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Recarregar {name}", "service.crashHandler.autoReload": "Tentando reestabelecer {name} automaticamente em {seconds} segundos", "service.crashHandler.headline": "Ah, não!", @@ -405,10 +437,15 @@ "signup.link.login": "Já tem uma conta?", "signup.password.label": "Password", "signup.submit.label": "Criar uma conta", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Actualizar cuenta", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "O Ferdi 5 vem com uma variedade de novas funcionalidades para melhorar a sua comunicação diária - pilhas inclusas. Confira os nossos novos planos e encontre aquele que melhor serve para você!", "subscriptionPopup.buttonCancel": "Cancelar", -- cgit v1.2.3-70-g09d2 From b5239be048d945ebec713ed10a02890cbd9600f5 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:32 +0200 Subject: New translations en-US.json (Portuguese, Brazilian) --- src/i18n/locales/pt.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index 175322720..f5beac6b3 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Faz parte do grupo de apoio do Ferdi", "feature.delayApp.upgrade.actionShort": "Atualiza a tua conta", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Não foi possível estabelecer ligação aos serviços do Ferdi", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "Não estás ligado à Internet", @@ -140,15 +163,20 @@ "password.submit.label": "Submeter", "password.successInfo": "Por favor verifique o seu endereço de e-mail", "premiumFeature.button.upgradeAccount": "Atualiza a tua conta", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Sem publicidade para sempre", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Espaços de trabalho", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Recarregar {name}", "service.crashHandler.autoReload": "A tentar restaurar automaticamente {name} em {seconds} segundos", "service.crashHandler.headline": "Oh não!", @@ -405,10 +437,15 @@ "signup.link.login": "Já tem uma conta, iniciar sessão?", "signup.password.label": "Password", "signup.submit.label": "Criar uma conta", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancelar", -- cgit v1.2.3-70-g09d2 From 1f1883761051af29890a9514a3803526b14ea8f3 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:34 +0200 Subject: New translations en-US.json (Russian) --- src/i18n/locales/ru.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index c1ae5cafd..b329522f4 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Получить бесплатную 14-дневную триальную версию Ferdi Professional и перейти к следующему полю", "feature.delayApp.upgrade.action": "Получите лицензию поддержки Ferdi", "feature.delayApp.upgrade.actionShort": "Апгрейдить аккаунт", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Выберите сервис с Tab, вверх и вниз. Откройте сервис нажав на ENTER.", "feature.quickSwitch.search": "Поиск...", "feature.quickSwitch.title": "Быстрое переключение", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos теперь доступны для премиум пользователей!", "feature.todos.premium.rollout": "Все остальные должны будут ждать немного дольше.", "feature.todos.premium.upgrade": "Повысить уровень учетной записи", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Невозможно подключиться к онлайн-сервисам Ferdi", "global.franzProRequired": "Требуется Ferdi Professional", "global.notConnectedToTheInternet": "Вы не подключены к сети Интернет", @@ -140,15 +163,20 @@ "password.submit.label": "Принять", "password.successInfo": "Проверьте вашу электронную почту", "premiumFeature.button.upgradeAccount": "Апгрейдить аккаунт", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Всегда бесплатен с рекламой", "pricing.features.appDelays": "Без экранов ожидания", "pricing.features.customWebsites": "Добавить пользовательские веб-сайты", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Прокси сервиса", "pricing.features.spellchecker": "Поддержка Spellchecker", "pricing.features.teamManagement": "Команда управления", "pricing.features.thirdPartyServices": "Установить сторонние сервисы", "pricing.features.unlimitedServices": "Добавить неограниченные сервисы", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Окружение", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Да, обновите мой аккаунт до Ferdi Professional", "pricing.trial.cta.skip": "Перейти к Ферди", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "К сожалению, мы не смогли активировать ваш пробный период!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Перезагрузить {name}", "service.crashHandler.autoReload": "Пытаюсь автоматически восстановить {name} в течение {seconds} секунд", "service.crashHandler.headline": "О, нет!", @@ -405,10 +437,15 @@ "signup.link.login": "Уже есть аккаунт, войти?", "signup.password.label": "Пароль", "signup.submit.label": "Создать аккаунт", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Повысить уровень учетной записи", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Отмена", -- cgit v1.2.3-70-g09d2 From 04da310119c1a14ce046658dcfebb177a5de6079 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:36 +0200 Subject: New translations en-US.json (Irish) --- src/i18n/locales/ga.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json index acd72ee0b..e96d9e14f 100644 --- a/src/i18n/locales/ga.json +++ b/src/i18n/locales/ga.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Ní féidir nascadh le seirbhísí Ferdi ar líne", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "Níl tú nasctha leis an Idirlíon.", @@ -140,15 +163,20 @@ "password.submit.label": "Cuir isteach", "password.successInfo": "Seiceáil do chuid ríomhphoist le do thoil", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Athlódáil {name}", "service.crashHandler.autoReload": "Ag iarraidh {name} a thabhairt ar ais go huathoibríoch i gceann {seconds} shoicind", "service.crashHandler.headline": "Oró, ní hea!", @@ -405,10 +437,15 @@ "signup.link.login": "Cuntas agat cheana féin, logáil isteach?", "signup.password.label": "Password", "signup.submit.label": "Cruthaigh cuntas", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cealaigh", -- cgit v1.2.3-70-g09d2 From a57e44db526cd79348468d495b3c05f0ae16fe19 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:39 +0200 Subject: New translations en-US.json (Serbian (Cyrillic)) --- src/i18n/locales/sr.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json index 97ec48859..1190fee0a 100644 --- a/src/i18n/locales/sr.json +++ b/src/i18n/locales/sr.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Nije moguće pristupiti Ferdi-ovim on-line servisima. ", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "Niste povezani sa serverom.", @@ -140,15 +163,20 @@ "password.submit.label": "Pošalji", "password.successInfo": "Molimo Vas da provjerite vašu e-mail adresu", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Osvježi {ime}", "service.crashHandler.autoReload": "Pokušaću automatski povratiti {ime} u {sekundi} sekundi", "service.crashHandler.headline": "O, ne! ", @@ -405,10 +437,15 @@ "signup.link.login": "Imate račun? Prijavite se.", "signup.password.label": "Password", "signup.submit.label": "Napravite novi račun", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Odustani", -- cgit v1.2.3-70-g09d2 From 78159697f8d378be44357efc0793a9de04de9cbe Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:41 +0200 Subject: New translations en-US.json (Slovak) --- src/i18n/locales/sk.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index aa8c65005..0b4c0d3fa 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Získajte licenciu pre Ferdi podporu", "feature.delayApp.upgrade.actionShort": "Upgradovať účet", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Nedá sa pripojiť k online službám Ferdi", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "Nie ste pripojení k internetu.", @@ -140,15 +163,20 @@ "password.submit.label": "Odoslať", "password.successInfo": "Skontrolujte prosím váš e-mail", "premiumFeature.button.upgradeAccount": "Upgradovať účet", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Pracovný priestor", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Znovu načítať {name}", "service.crashHandler.autoReload": "Najbližší pokus o automatické obnovenie {name} o {seconds} sekúnd", "service.crashHandler.headline": "Ale nie!", @@ -405,10 +437,15 @@ "signup.link.login": "Už máte účet, chcete sa prihlásiť?", "signup.password.label": "Password", "signup.submit.label": "Vytvoriť účet", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Zrušiť", -- cgit v1.2.3-70-g09d2 From 5f8ea6ebd9f6db9ab4297841addf615dc7d8d815 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:44 +0200 Subject: New translations en-US.json (Slovenian) --- src/i18n/locales/sl.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/sl.json b/src/i18n/locales/sl.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/sl.json +++ b/src/i18n/locales/sl.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From 7ac035a7e8c889736f338c7186fdfb5ef36edb22 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:48 +0200 Subject: New translations en-US.json (Spanish) --- src/i18n/locales/es.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 178dcfc51..e3aad888f 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Empieza el periodo de prueba de Ferdi Profesional por 14 días y cruza la linea.", "feature.delayApp.upgrade.action": "Consigue una Licencia de Soporte de Ferdi", "feature.delayApp.upgrade.actionShort": "Mejora tu cuenta", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Todos de Ferdi está disponible para usuarios premium ahora!", "feature.todos.premium.rollout": "El resto de los usuarios deberán esperar un poco más de tiempo.", "feature.todos.premium.upgrade": "Actualizar cuenta", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "No es posible conectarse a los servicios en línea de Ferdi.", "global.franzProRequired": "Se requiere una cuenta Ferdi Profesional", "global.notConnectedToTheInternet": "No estás conectado a Internet", @@ -140,15 +163,20 @@ "password.submit.label": "Enviar", "password.successInfo": "Por favor revisa tu correo electrónico", "premiumFeature.button.upgradeAccount": "Mejora tu cuenta", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Sin anuncios para siempre!", "pricing.features.appDelays": "Sin pantallas de espera", "pricing.features.customWebsites": "Agregue sitios personalizados", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "En sitio y otros servicios alojados", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Apoderados de Servicio", "pricing.features.spellchecker": "Soporte de corrector ortográfico", "pricing.features.teamManagement": "Administración de Equipo", "pricing.features.thirdPartyServices": "Instalar servicios de terceros", "pricing.features.unlimitedServices": "Agregar servicios ilimitados", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Espacios de trabajo", "pricing.plan.free": "Ferdi gratis", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Profesional Anual", "pricing.trial.cta.accept": "Si, actualizar mi cuenta a Ferdi Profesional", "pricing.trial.cta.skip": "Continuar a Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Disculpe, no pudimos activar su prueba!", "pricing.trial.features.headline": "Ferdi Profesional incluye:", - "pricing.trial.headline": "Ferdi Profesional", - "pricing.trial.subheadline": "Su oferta de bienvenida personal", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Su prueba gratis finaliza automáticamente después de 14 días", "pricing.trial.terms.headline": "Sin condiciones", "pricing.trial.terms.noCreditCard": "No necesita tarjeta de crédito", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Recargar {name}", "service.crashHandler.autoReload": "Intentando recuperar automáticamente {name} en {seconds} segundos", "service.crashHandler.headline": "¡Oh, no!", @@ -405,10 +437,15 @@ "signup.link.login": "Ya tienes una cuenta, ¿Iniciar sesión?", "signup.password.label": "Password", "signup.submit.label": "Crear cuenta", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Actualizar cuenta", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancelar", -- cgit v1.2.3-70-g09d2 From 1c9e4aa173401045dfb3a8d76ce29fb52f10a6bc Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:51 +0200 Subject: New translations en-US.json (Swedish) --- src/i18n/locales/sv.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/sv.json b/src/i18n/locales/sv.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/sv.json +++ b/src/i18n/locales/sv.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From 200ac4e277b91b791bc03e912f589f585f81eb41 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:56 +0200 Subject: New translations en-US.json (Turkish) --- src/i18n/locales/tr.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json index 1fd54a50d..8e55a66f9 100644 --- a/src/i18n/locales/tr.json +++ b/src/i18n/locales/tr.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Ferdi Professional'ın 14 günlük denemesini et ve sıranın önüne geç", "feature.delayApp.upgrade.action": "Ferdi Destek Lisansı'nı alın", "feature.delayApp.upgrade.actionShort": "Hesabı Yükselt", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "TAB, ↑ ve ↓ ile bir servis seç. ENTER ile bir servisi aç.", "feature.quickSwitch.search": "Ara...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Yapılacaklar Listesi şimdi Premium kullanıcılar için kullanılabilir!", "feature.todos.premium.rollout": "Diğer herkes biraz daha beklemek zorunda.", "feature.todos.premium.upgrade": "Hesabını Yükselt", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Ferdi hizmetlerine şu anda erişilemiyor", "global.franzProRequired": "Ferdi Professional Gerekli", "global.notConnectedToTheInternet": "İnternete bağlı değilsiniz.", @@ -140,15 +163,20 @@ "password.submit.label": "Gönder", "password.successInfo": "E-postanızı kontrol ediniz", "premiumFeature.button.upgradeAccount": "Hesabı Yükselt", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Sonsuza dek reklamsız", "pricing.features.appDelays": "Yükleme Ekranları Yok", "pricing.features.customWebsites": "Özel Siteler Ekle", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Servis proxy'leri", "pricing.features.spellchecker": "Yazım denetimi desteği", "pricing.features.teamManagement": "Takım yönetimi", "pricing.features.thirdPartyServices": "3. parti servisleri yükleme", "pricing.features.unlimitedServices": "Sınırsız servis ekleme", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Çalışma Alanları", "pricing.plan.free": "Ferdi - Ücretsiz", "pricing.plan.legacy": "Ferdi - Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi - Yıllık Professional", "pricing.trial.cta.accept": "Evet, hesabını Ferdi Professional'a yükselt", "pricing.trial.cta.skip": "Ferdi'ye Devam Et", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Üzgünüz, ücretsiz denemeni başlatamadık!", "pricing.trial.features.headline": "Ferdi Professional şunları içerir:", - "pricing.trial.headline": "Ferdi - Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "Kredi kartı gerektirmez", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "{name} yeniden yükle", "service.crashHandler.autoReload": "{name}'i {seconds} saniye içerisinde otomatik onarmayı deniyoruz", "service.crashHandler.headline": "Olamaz!", @@ -405,10 +437,15 @@ "signup.link.login": "Hali hazırda hesabınız varsa giriş yapmak ister misiniz?", "signup.password.label": "Şifre", "signup.submit.label": "Hesap oluştur", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Hesabını Yükselt", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "İptal", -- cgit v1.2.3-70-g09d2 From 691ea69b52f20e57873b523ac4133bd0880a0c2f Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:28:58 +0200 Subject: New translations en-US.json (Ukrainian) --- src/i18n/locales/uk.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json index d6da96961..1deed25fe 100644 --- a/src/i18n/locales/uk.json +++ b/src/i18n/locales/uk.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Отримати ліцензію Ferdi Supporter ", "feature.delayApp.upgrade.actionShort": "Преміум акаунт", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Не можливо підключитись до онлайн сервісів Ferdi", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.", @@ -140,15 +163,20 @@ "password.submit.label": "Подати", "password.successInfo": "Будь ласка, перевірте ваш email", "premiumFeature.button.upgradeAccount": "Преміум акаунт", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Перезавантажити {name}", "service.crashHandler.autoReload": "Спробую автоматично відновити {name} через {seconds} с", "service.crashHandler.headline": "О, ні!", @@ -405,10 +437,15 @@ "signup.link.login": "У вас вже є обліковий запис, увійти?", "signup.password.label": "Password", "signup.submit.label": "Створити акаунт", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Відмінити", -- cgit v1.2.3-70-g09d2 From 5db185c08604c8c48a2554069875d7061a91b8c8 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:03 +0200 Subject: New translations en-US.json (Italian) --- src/i18n/locales/it.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index 9a49fb6ce..f3ed42e3a 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Ottieni la prova gratuita per 14 giorni di Ferdi Professional e salta la coda", "feature.delayApp.upgrade.action": "Ricevi una Licenza Supporter di Ferdi", "feature.delayApp.upgrade.actionShort": "Effettua l'upgrade del tuo account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Le attività Ferdi sono ora disponibili agli utenti premium!", "feature.todos.premium.rollout": "Chiunque altro dovrà aspettare un po' di più.", "feature.todos.premium.upgrade": "Potenzia l'Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Impossibile connettersi ai servizi online di Ferdi", "global.franzProRequired": "Richiesto Ferdi Professional", "global.notConnectedToTheInternet": "Non sei connesso a Internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Invia", "password.successInfo": "Per favore controlla la tua email", "premiumFeature.button.upgradeAccount": "Effettua l'upgrade del tuo account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Senza pubblicità per sempre", "pricing.features.appDelays": "Nessuna schermata di attesa", "pricing.features.customWebsites": "Aggiungi siti web personalizzati", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "Servizi ospitati & on-premise", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Proxy di servizio", "pricing.features.spellchecker": "Supporto per il correttore ortografico", "pricing.features.teamManagement": "Gestione del team", "pricing.features.thirdPartyServices": "Installa servizi di terze parti", "pricing.features.unlimitedServices": "Aggiungi servizi illimitati", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Aree di lavoro", "pricing.plan.free": "Ferdi Gratuito", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Annuale", "pricing.trial.cta.accept": "Sì, potenzia il mio account a Ferdi Professional", "pricing.trial.cta.skip": "Continua su Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Ci dispiace, non abbiamo potuto attivare la tua prova!", "pricing.trial.features.headline": "Ferdi Professional include:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "La tua personale offerta di benvenuto:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "La tua prova gratuita finirà automaticamente dopo 14 giorni", "pricing.trial.terms.headline": "Senza impegno", "pricing.trial.terms.noCreditCard": "Nessuna carta di credito richiesta", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Ricarica {name}", "service.crashHandler.autoReload": "Tentativo di ripristino automatico di {name} in {seconds} secondi", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Hai già un account, vuoi accedere?", "signup.password.label": "Password", "signup.submit.label": "Crea un account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Sì, inizia la prova gratuita di Ferdi Professional", "subscription.cta.allOptions": "Vedi tutte le opzioni", "subscription.cta.choosePlan": "Scegli il tuo piano", "subscription.includedProFeatures": "Il piano Ferdi Professional include:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Potenzia l'Account", "subscription.teaser.includedFeatures": "I piani Ferdi a pagamento includono:", "subscription.teaser.intro": "Ferdi 5 contiene un ampia gamma di nuove caratteristiche per potenziare le tue comunicazioni di tutti i giorni - incluse le batterie. Dai un'occhiata ai nostri nuovi piani per scoprire quale si adatta di più a te!", "subscriptionPopup.buttonCancel": "Annulla", -- cgit v1.2.3-70-g09d2 From a569464b8730ed8a28fe9f9f99ebfec3403f5b7d Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:07 +0200 Subject: New translations en-US.json (Indonesian) --- src/i18n/locales/id.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json index dcbd826c3..2378bfbad 100644 --- a/src/i18n/locales/id.json +++ b/src/i18n/locales/id.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Dapatkan Lisensi Pendukung Ferdi", "feature.delayApp.upgrade.actionShort": "Tingkatkan akun", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Tidak dapat tersambung ke layanan Ferdi", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "Anda tidak tersambung ke internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Kirim", "password.successInfo": "Periksa email Anda", "premiumFeature.button.upgradeAccount": "Tingkatkan akun", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Ruang kerja", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Muat Ulang {name}", "service.crashHandler.autoReload": "Mencoba memulihkan {name} secara otomatis dalam {seconds} detik", "service.crashHandler.headline": "Ya Ampun!", @@ -405,10 +437,15 @@ "signup.link.login": "Sudah punya akun, masuk?", "signup.password.label": "Password", "signup.submit.label": "Buat akun", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Batalkan", -- cgit v1.2.3-70-g09d2 From 3d28972017d1b41907df4b1effb62d727b7e5406 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:10 +0200 Subject: New translations en-US.json (Arabic) --- src/i18n/locales/ar.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/ar.json +++ b/src/i18n/locales/ar.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From eeb25c4a627b5a0812ce72a5108e4477d11d82af Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:15 +0200 Subject: New translations en-US.json (Danish) --- src/i18n/locales/da.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/da.json b/src/i18n/locales/da.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/da.json +++ b/src/i18n/locales/da.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From 131a28abbd26a03bb6fc0fa0aa6472171669c237 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:18 +0200 Subject: New translations en-US.json (Bosnian) --- src/i18n/locales/bs.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/bs.json b/src/i18n/locales/bs.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/bs.json +++ b/src/i18n/locales/bs.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From d9f15790dadaa9748e0fd62aef3d2772d4cca650 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:23 +0200 Subject: New translations en-US.json (Catalan) --- src/i18n/locales/ca.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json index 2c8696f8e..5f55f804a 100644 --- a/src/i18n/locales/ca.json +++ b/src/i18n/locales/ca.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Aconsegueix una llicència de suport per a Ferdi", "feature.delayApp.upgrade.actionShort": "Millorar el teu compte", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "No es pot connectar amb els serveis en línia de Ferdi", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "No esteu connectat a Internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Enviar", "password.successInfo": "Comproveu el vostre correu electrònic", "premiumFeature.button.upgradeAccount": "Millorar el teu compte", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Recarrega {name}", "service.crashHandler.autoReload": "Intentant restablir automàticament {name} en {seconds} segons", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Ja teniu un compte, iniciar la sessió?", "signup.password.label": "Password", "signup.submit.label": "Crea un compte", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel·la", -- cgit v1.2.3-70-g09d2 From f2820923ce1de789bf3f4ef1e8e0d549427048f9 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:26 +0200 Subject: New translations en-US.json (Chinese Simplified) --- src/i18n/locales/zh.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From 50c6d1409d0505180a1113f41d55025af18f8ebd Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:29 +0200 Subject: New translations en-US.json (Chinese Traditional) --- src/i18n/locales/zh-Hant.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/zh-Hant.json b/src/i18n/locales/zh-Hant.json index 899591ab0..872bfd9d7 100644 --- a/src/i18n/locales/zh-Hant.json +++ b/src/i18n/locales/zh-Hant.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "無法連接到Ferdi網路服務", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "您未連上網際網路", @@ -140,15 +163,20 @@ "password.submit.label": "送出", "password.successInfo": "請重新確認您的電子郵件信箱", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "您已有一個帳戶,請問是否要登入?", "signup.password.label": "Password", "signup.submit.label": "建立帳戶", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "取消", -- cgit v1.2.3-70-g09d2 From 52888fd5c0af94f4c7ff6ddb21e7605503a15289 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:33 +0200 Subject: New translations en-US.json (Croatian) --- src/i18n/locales/hr.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json index 94ea0582d..5ad85cc1a 100644 --- a/src/i18n/locales/hr.json +++ b/src/i18n/locales/hr.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Nije se moguće povezati na Francove on-line servise. ", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "Sada ste povezani s internetom. ", @@ -140,15 +163,20 @@ "password.submit.label": "Pošalji", "password.successInfo": "Molimo Vas da provjerite svoju e-mail adresu", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Osvježi okvir", "service.crashHandler.autoReload": "Pokušati ću automatski povratiti {ime} u {sekundi} sekundi", "service.crashHandler.headline": "O, ne! ", @@ -405,10 +437,15 @@ "signup.link.login": "Imate račun? Prijavite se.", "signup.password.label": "Password", "signup.submit.label": "Napravite novi račun", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Odustani", -- cgit v1.2.3-70-g09d2 From 20bbd590bf884b47858d2c31a9dcb2d6bc232fb5 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:36 +0200 Subject: New translations en-US.json (Czech) --- src/i18n/locales/cs.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index cd4b7bfcd..e8d3827dd 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Podpoř Ferdi a získej Supporter licenci", "feature.delayApp.upgrade.actionShort": "Vylepši si svůj účet", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Nemůžeme připojit Ferdi k online službám", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "Připojení k internetu není k dispozici.", @@ -140,15 +163,20 @@ "password.submit.label": "Odeslat", "password.successInfo": "Prosím, zkontrolujte svůj e-mail", "premiumFeature.button.upgradeAccount": "Vylepši si svůj účet", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Načíst znovu {name}", "service.crashHandler.autoReload": "Pokus o automatické obnovení {name} za {seconds} sekund", "service.crashHandler.headline": "Ale ne!", @@ -405,10 +437,15 @@ "signup.link.login": "Již máte účet, přihlásit se?", "signup.password.label": "Password", "signup.submit.label": "Vytvořit účet", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Zrušit", -- cgit v1.2.3-70-g09d2 From 817c2537d3b1f730f76c3b63edfa5b2c1fef4ce5 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:38 +0200 Subject: New translations en-US.json (Dutch) --- src/i18n/locales/nl.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index af26ffa1e..e5467c877 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Sponsor Ferdi", "feature.delayApp.upgrade.actionShort": "Upgrade Account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Kan geen verbinding maken met de Ferdi-services.", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "U bent niet verbonden met het internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Verzenden", "password.successInfo": "Controleer je e-mail", "premiumFeature.button.upgradeAccount": "Upgrade Account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Werkruimtes", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Laad {name} opnieuw", "service.crashHandler.autoReload": "Bezig om {name} te herstellen over {seconds} seconden", "service.crashHandler.headline": "Oh nee!", @@ -405,10 +437,15 @@ "signup.link.login": "Heb je al een account? Log in!", "signup.password.label": "Password", "signup.submit.label": "Account aanmaken", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Annuleer", -- cgit v1.2.3-70-g09d2 From 77f4644fcf9ae83fe192dbd4353dc9bb226ff113 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:40 +0200 Subject: New translations en-US.json (Hungarian) --- src/i18n/locales/hu.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json index 83d454eec..940db5dff 100644 --- a/src/i18n/locales/hu.json +++ b/src/i18n/locales/hu.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Szerezz egy Ferdi Támogatói Liszencet", "feature.delayApp.upgrade.actionShort": "Fiók frissítése", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "A Ferdi Tennivalók már elérhető a prémium felhasználók részére!", "feature.todos.premium.rollout": "Mindenki másnak még egy kicsit tovább kell várni.", "feature.todos.premium.upgrade": "Fiók frissítése", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Nem lehet csatlakozni a Ferdi online szolgáltatáshoz", "global.franzProRequired": "Ferdi Professional szükséges", "global.notConnectedToTheInternet": "Nincs hálózati kapcsolat.", @@ -140,15 +163,20 @@ "password.submit.label": "Küldés", "password.successInfo": "Ellenőrizd az email fiókodat", "premiumFeature.button.upgradeAccount": "Fiók frissítése", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Hirdetésmentesség, örökre!", "pricing.features.appDelays": "Nincsenek töltőképernyők", "pricing.features.customWebsites": "Egyéni weboldalak megadása", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "Helyi és egyéb távoli szolgáltatások", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Szolgáltatás Proxy-k", "pricing.features.spellchecker": "Helyesírás-ellenőrzés támogatás", "pricing.features.teamManagement": "Csapatkezelés", "pricing.features.thirdPartyServices": "Harmadik féltől származó szolgáltatások használata", "pricing.features.unlimitedServices": "Korlátlan szolgáltatások felvitele", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Munkaterületek", "pricing.plan.free": "Ingyenes Ferdi", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "{name} újratöltése", "service.crashHandler.autoReload": "{name} automatikusan helyreállítása {seconds} másodpercen belül", "service.crashHandler.headline": "Jajj ne!", @@ -405,10 +437,15 @@ "signup.link.login": "Már van fiókod? Lépj be!", "signup.password.label": "Password", "signup.submit.label": "Fiók létrehozása", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Fiók frissítése", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Mégsem", -- cgit v1.2.3-70-g09d2 From 46937e2010d258f1588093d5cc8d4265c984448a Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:43 +0200 Subject: New translations en-US.json (Finnish) --- src/i18n/locales/fi.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/fi.json b/src/i18n/locales/fi.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/fi.json +++ b/src/i18n/locales/fi.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From 77e861a28fe5646c36a156f74bf61cf166ebc771 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:46 +0200 Subject: New translations en-US.json (Flemish) --- src/i18n/locales/nl-BE.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json index dda3e65f5..ce8a35ce8 100644 --- a/src/i18n/locales/nl-BE.json +++ b/src/i18n/locales/nl-BE.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Neem een Ferdi Supporter Licentie ", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Kan geen verbinding maken met de Ferdi services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "Je hebt geen internet verbinding.", @@ -140,15 +163,20 @@ "password.submit.label": "Verzenden", "password.successInfo": "Controleer alsjeblieft je e-mail", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Werkruimten", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "{naam} herladen", "service.crashHandler.autoReload": "Ga proberen om {name} te herstellen over {seconds} seconden", "service.crashHandler.headline": "Oh nee!", @@ -405,10 +437,15 @@ "signup.link.login": "Al een account, inloggen?", "signup.password.label": "Password", "signup.submit.label": "Account aanmaken", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Annuleren", -- cgit v1.2.3-70-g09d2 From 9e6c80a27f47a66a488f0e2a111bf5538ddb84ad Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:49 +0200 Subject: New translations en-US.json (French) --- src/i18n/locales/fr.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 508eb875e..1ae8d6164 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Prendre l'essai gratuit de 14 jours de Ferdi Professionnel et esquiver la ligne", "feature.delayApp.upgrade.action": "Acheter une license Ferdi", "feature.delayApp.upgrade.actionShort": "Augmenter le niveau de mon compte", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Sélectionner un service avec TAB, ↑ et ↓. Ouvrir un service avec ENTER.", "feature.quickSwitch.search": "Rechercher...", "feature.quickSwitch.title": "Changement rapide", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos est disponible aux utilisateurs premium maintenant!", "feature.todos.premium.rollout": "Tous le monde devra attendre un peux plus longtemps.", "feature.todos.premium.upgrade": "Améliorez votre compte", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Impossible de se connecter aux services en ligne de Ferdi", "global.franzProRequired": "Ferdi Professionnel Requis", "global.notConnectedToTheInternet": "Vous n'êtes pas connecté à Internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Soumettre", "password.successInfo": "Merci de consulter vos emails", "premiumFeature.button.upgradeAccount": "Augmenter le niveau de mon compte", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Toujours sans pub", "pricing.features.appDelays": "Plus d'écrans d'attente", "pricing.features.customWebsites": "Ajouter des sites web modifiés", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "Services hébergés sur place et autre", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxy", "pricing.features.spellchecker": "Support du correcteur orthographique", "pricing.features.teamManagement": "Gestion d'équipe", "pricing.features.thirdPartyServices": "Installer des services tiers", "pricing.features.unlimitedServices": "Ajouter des services illimités", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Espace de travail", "pricing.plan.free": "Ferdi Gratuit", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professionnel à l'année", "pricing.trial.cta.accept": "Oui, améliorer mon compte à Ferdi Professionnel", "pricing.trial.cta.skip": "Continuer à Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Désoler, nous ne pouvons pas activé votre essai!", "pricing.trial.features.headline": "Ferdi Professionnel inclus:", - "pricing.trial.headline": "Ferdi Professionnel", - "pricing.trial.subheadline": "Votre offre d'accueil personnelle:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Votre essai gratuit se finis automatiquement après 14 jours", "pricing.trial.terms.headline": "Sans condition", "pricing.trial.terms.noCreditCard": "Pas de carte de crédit requis", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Recharger {name}", "service.crashHandler.autoReload": "Tentative de restauration automatique de {name} dans {seconds} secondes", "service.crashHandler.headline": "Oh non!", @@ -405,10 +437,15 @@ "signup.link.login": "Vous avez déjà un compte? Connectez-vous", "signup.password.label": "Mot de passe", "signup.submit.label": "Créer un compte", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Oui, commencer l'essai gratuit de Ferdi Professionnel", "subscription.cta.allOptions": "Voir toutes les options", "subscription.cta.choosePlan": "Choisissez votre plan", "subscription.includedProFeatures": "Le plan Ferdi Professionnel inclus:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Améliorez votre compte", "subscription.teaser.includedFeatures": "Les plans de Ferdi payés inclus:", "subscription.teaser.intro": "Ferdi 5 viens avec une large plage de nouvelles fonctionnalités pour renforcer votre communication quotidienne - batteries inclus. Aller voir nos nouveaux plans et trouver celui qui vous satisfait le mieux!", "subscriptionPopup.buttonCancel": "Annuler", -- cgit v1.2.3-70-g09d2 From 53b3c91110275da89d09e7f1539f637d5b17dcf4 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:54 +0200 Subject: New translations en-US.json (Georgian) --- src/i18n/locales/ka.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json index 0065b1b56..2f0aaa5ae 100644 --- a/src/i18n/locales/ka.json +++ b/src/i18n/locales/ka.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Ferdi-ის ონლაინ სერვისთან დაკავშირება ვერ მოხერხდა", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "თქვენ არ ხართ ინტერნეტთან დაკავშირებული.", @@ -140,15 +163,20 @@ "password.submit.label": "დადასტურება", "password.successInfo": "გთხოვთ შეამოწმეთ მეილი", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "უკვე გაქვთ ანგარიში?", "signup.password.label": "Password", "signup.submit.label": "ანგარიშის შექმნა", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "გაუქმება", -- cgit v1.2.3-70-g09d2 From bcfafa66abe4fb005c716d29fc1c63b96ab7f0f6 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:29:58 +0200 Subject: New translations en-US.json (German) --- src/i18n/locales/de.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 6b7ac8a35..02e9b2a8e 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Hol dir die kostenlose Ferdi Professional Testlizenz und es geht ohne Warten weiter", "feature.delayApp.upgrade.action": "Hol dir Ferdi Premium", "feature.delayApp.upgrade.actionShort": "Account erweitern", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Wähle einen Service mit TAB, ↑ und ↓. Um einen Service zu öffnen, drücke ENTER.", "feature.quickSwitch.search": "Suchen...", "feature.quickSwitch.title": "Schnellauswahl", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos sind jetzt für Premium User verfügbar!", "feature.todos.premium.rollout": "Alle anderen müssen sich noch ein wenig gedulden.", "feature.todos.premium.upgrade": "Account Upgrade", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Verbindung zu den Ferdi Online Services fehlgeschlagen", "global.franzProRequired": "Ferdi Professional benötigt", "global.notConnectedToTheInternet": "Du bist nicht mit dem Internet verbunden.", @@ -140,15 +163,20 @@ "password.submit.label": "Absenden", "password.successInfo": "Wir haben Dir eine E-Mail mit weiteren Anweisungen geschickt", "premiumFeature.button.upgradeAccount": "Account erweitern", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Keine Werbung", "pricing.features.appDelays": "Keine unnötigen Unterbrechungen", "pricing.features.customWebsites": "Hinzufügen von eigenen Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & andere Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service-Proxies", "pricing.features.spellchecker": "Rechtschreibprüfung", "pricing.features.teamManagement": "Team-Management", "pricing.features.thirdPartyServices": "Integration von Services über Drittanbieter", "pricing.features.unlimitedServices": "Unbegrenztes hinzufügen von Services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Arbeitsbereiche", "pricing.plan.free": "Ferdi kostenlos", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional jährlich", "pricing.trial.cta.accept": "Ja, Upgrade zu Ferdi Professional durchführen", "pricing.trial.cta.skip": "Weiter zu Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Tut uns leid, wir konnten deine kostenlose Testlizenz nicht aktivieren!", "pricing.trial.features.headline": "Ferdi Professional beinhaltet:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Dein persönliches Willkommensangebot:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Deine kostenlose Testlizenz endet automatisch nach 14 Tagen", "pricing.trial.terms.headline": "Ohne Bindung, ohne Haken", "pricing.trial.terms.noCreditCard": "Keine Kreditkarte notwendig", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "{name} neu laden", "service.crashHandler.autoReload": "{name} wird in {seconds} Sekunden automatisch wiederhergestellt", "service.crashHandler.headline": "Oh nein!", @@ -405,10 +437,15 @@ "signup.link.login": "Du hast bereits ein Konto? Melde Dich an.", "signup.password.label": "Passwort", "signup.submit.label": "Konto erstellen", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Ja, kostenlose Ferdi Professional Testlizenz starten", "subscription.cta.allOptions": "Alle Optionen anzeigen", "subscription.cta.choosePlan": "Wähle deine Lizenz", "subscription.includedProFeatures": "Die Ferdi Professional Lizenz beinhaltet:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Account Upgrade", "subscription.teaser.includedFeatures": "Bezahlte Ferdi Lizenzen beinhalten:", "subscription.teaser.intro": "Ferdi 5 ist voll gepackt mit vielen neuen Features, damit du für jegliche kommunikative Eventualität gerüstet bist. Nimm dir was du brauchst und leg los!", "subscriptionPopup.buttonCancel": "Abbrechen", -- cgit v1.2.3-70-g09d2 From ea0f6c7ab22ddd4a3ffa129e2196b84aa74966b5 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:30:03 +0200 Subject: New translations en-US.json (Greek) --- src/i18n/locales/el.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json index e8c9d1aae..89c0d62b6 100644 --- a/src/i18n/locales/el.json +++ b/src/i18n/locales/el.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Δεν είναι δυνατή η σύνδεση με τις ζωντανές υπηρεσίες του Ferdi", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "Έχετε αποσυνδεθεί από το Διαδίκτυο", @@ -140,15 +163,20 @@ "password.submit.label": "Υποβολή", "password.successInfo": "Ελέγξτε το email σας", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Επαναφόρτωση {name}", "service.crashHandler.autoReload": "Γίνεται προσπάθεια αυτόματης ανάκτησης του {name} σε {seconds} δευτερόλεπτα", "service.crashHandler.headline": "Ω, όχι!", @@ -405,10 +437,15 @@ "signup.link.login": "Έχετε ήδη λογαριασμό? Συνδεθείτε.", "signup.password.label": "Password", "signup.submit.label": "Δημιουργία λογαριασμού", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Ακύρωση", -- cgit v1.2.3-70-g09d2 From c73f9ac975a95709afc2e56127aef765dc463b02 Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:30:08 +0200 Subject: New translations en-US.json (Hebrew) --- src/i18n/locales/he.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/he.json b/src/i18n/locales/he.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/he.json +++ b/src/i18n/locales/he.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From 62405c5b686abaf4d45e45734dac7aad2d7d6f1a Mon Sep 17 00:00:00 2001 From: Ferdi Bot <56048320+FerdiBot@users.noreply.github.com> Date: Thu, 24 Oct 2019 15:30:14 +0200 Subject: New translations en-US.json (Vietnamese) --- src/i18n/locales/vi.json | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/vi.json b/src/i18n/locales/vi.json index 628880d9f..edcc67771 100644 --- a/src/i18n/locales/vi.json +++ b/src/i18n/locales/vi.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "Can't connect to Ferdi online services", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "You are not connected to the internet.", @@ -140,15 +163,20 @@ "password.submit.label": "Submit", "password.successInfo": "Please check your email", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -160,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -405,10 +437,15 @@ "signup.link.login": "Already have an account, sign in?", "signup.password.label": "Password", "signup.submit.label": "Create account", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "Cancel", -- cgit v1.2.3-70-g09d2 From 3cf468d1f200b0e634549d4cb84a1f26a81561c7 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Thu, 24 Oct 2019 15:49:25 +0200 Subject: Update CHANGELOG.md --- CHANGELOG.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5df55fbe0..c97f60757 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,13 @@ # [5.4.0](https://github.com/getferdi/ferdi/compare/v5.3.4...v5.4.0) - Merge Franz v5.4.0 -- Add option to always show service navigation bar -- Minifying build files to improve app size -- Sorting applications in QuickSwitch by last used +- Add option to show a service navigation bar - Add service hibernation -- Fix universal darkmode for WhatsApp and Threema +- Minifying build files to improve app size +- Switching to `electron-spellchecker` for improved spellchecking - Add button to open darkmode.css for a service - Add option to change accent color +- Fix universal darkmode for WhatsApp and Threema +- Sorting applications in QuickSwitch by last used # [5.3.4](https://github.com/getferdi/ferdi/compare/v5.3.3...v5.3.4) (2019-09-25) - Fix continuous releases/assets delivery on tags builds #53 -- cgit v1.2.3-70-g09d2 From cff8e092caa9fd0ec08627c53a45258c9c5fe587 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Thu, 24 Oct 2019 15:50:57 +0200 Subject: Switch to beta version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f7b633091..b26986270 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "ferdi", "productName": "Ferdi", "appId": "com.kytwb.ferdi", - "version": "5.4.0", + "version": "5.4.0-beta.3", "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", "copyright": "kytwb", "main": "index.js", -- cgit v1.2.3-70-g09d2 From d397ceb3564e1db4d338982b22b71ebeb1fb3145 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Thu, 24 Oct 2019 15:52:08 +0200 Subject: Merge translations --- recipes | 2 +- src/i18n/locales/zh-HANT.json | 47 ++++++++++++++++++++++++++++++++++++++++--- src/server | 2 +- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/recipes b/recipes index 198381d2b..7aa76feba 160000 --- a/recipes +++ b/recipes @@ -1 +1 @@ -Subproject commit 198381d2b0f720cdb935b73ef0002a1ace9274de +Subproject commit 7aa76feba8bd94368d27bee556480313c636f941 diff --git a/src/i18n/locales/zh-HANT.json b/src/i18n/locales/zh-HANT.json index 678554c05..872bfd9d7 100644 --- a/src/i18n/locales/zh-HANT.json +++ b/src/i18n/locales/zh-HANT.json @@ -9,6 +9,22 @@ "feature.delayApp.trial.headline": "Get the free Ferdi Professional 14 day trial and skip the line", "feature.delayApp.upgrade.action": "Get a Ferdi Supporter License", "feature.delayApp.upgrade.actionShort": "Upgrade account", + "feature.planSelection.cta.ctaDowngradeFree": "Downgrade to Free", + "feature.planSelection.cta.stayOnFree": "Stay on Free", + "feature.planSelection.cta.trial": "Start my free 14-days Trial", + "feature.planSelection.cta.upgradePersonal": "Choose Personal", + "feature.planSelection.cta.upgradePro": "Choose Professional", + "feature.planSelection.free.text": "Basic functionality", + "feature.planSelection.fullFeatureList": "Complete comparison of all plans", + "feature.planSelection.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.planSelection.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.planSelection.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.planSelection.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.planSelection.fullscreen.subheadline": "It's time to make a choice. Ferdi works best on our Personal and Professional plans. Please have a look and choose the best one for you.", + "feature.planSelection.fullscreen.welcome": "Are you ready to choose, {name}", + "feature.planSelection.personal.text": "More services, no waiting - ideal for personal use.", + "feature.planSelection.pricesBasedOnAnnualPayment": "All prices based on yearly payment", + "feature.planSelection.pro.text": "Unlimited services and professional features for you - and your team.", "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", "feature.quickSwitch.search": "Search...", "feature.quickSwitch.title": "QuickSwitch", @@ -23,6 +39,13 @@ "feature.todos.premium.info": "Ferdi Todos are available to premium users now!", "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", "feature.todos.premium.upgrade": "Upgrade Account", + "feature.trialStatusBar.cta": "Upgrade now", + "feature.trialStatusBar.expired": "Your free Ferdi {plan} Trial has expired, please upgrade your account.", + "feature.trialStatusBar.fullscreen.dialog.cta.downgrade": "Downgrade to Free", + "feature.trialStatusBar.fullscreen.dialog.cta.upgrade": "Choose Personal", + "feature.trialStatusBar.fullscreen.dialog.message": "You're about to downgrade to our Free account. Are you sure? Click here instead to get more services and functionality for just {currency}{price} a month.", + "feature.trialStatusBar.fullscreen.dialog.title": "Downgrade your Ferdi Plan", + "feature.trialStatusBar.restTime": "Your Free Ferdi {plan} Trial ends in {time}.", "global.api.unhealthy": "無法連接到Ferdi網路服務", "global.franzProRequired": "Ferdi Professional Required", "global.notConnectedToTheInternet": "您未連上網際網路", @@ -54,6 +77,7 @@ "locked.invalidCredentials": "Password invalid", "locked.password.label": "Password", "locked.submit.label": "Unlock", + "login.changeServer": "Change server", "login.customServerQuestion": "Using a custom Ferdi server?", "login.customServerSuggestion": "Try importing your Franz account", "login.email.label": "電子郵件信箱", @@ -139,15 +163,20 @@ "password.submit.label": "送出", "password.successInfo": "請重新確認您的電子郵件信箱", "premiumFeature.button.upgradeAccount": "Upgrade account", + "pricing.features.accountSync": "Account Synchronisation", "pricing.features.adFree": "Forever ad-free", "pricing.features.appDelays": "No Waiting Screens", "pricing.features.customWebsites": "Add Custom Websites", + "pricing.features.desktopNotifications": "Desktop Notifications", "pricing.features.onPremise": "On-premise & other Hosted Services", + "pricing.features.recipes": "Choose from more than 70 Services", "pricing.features.serviceProxies": "Service Proxies", "pricing.features.spellchecker": "Spellchecker support", "pricing.features.teamManagement": "Team Management", "pricing.features.thirdPartyServices": "Install 3rd party services", "pricing.features.unlimitedServices": "Add unlimited services", + "pricing.features.upToSixServices": "Add up to 6 services", + "pricing.features.upToThreeServices": "Add up to 3 services", "pricing.features.workspaces": "Workspaces", "pricing.plan.free": "Ferdi Free", "pricing.plan.legacy": "Ferdi Premium", @@ -159,13 +188,17 @@ "pricing.plan.pro-yearly": "Ferdi Professional Yearly", "pricing.trial.cta.accept": "Yes, upgrade my account to Ferdi Professional", "pricing.trial.cta.skip": "Continue to Ferdi", + "pricing.trial.cta.start": "Start using Ferdi", "pricing.trial.error": "Sorry, we could not activate your trial!", "pricing.trial.features.headline": "Ferdi Professional includes:", - "pricing.trial.headline": "Ferdi Professional", - "pricing.trial.subheadline": "Your personal welcome offer:", + "pricing.trial.headline.pro": "Hi {name}, welcome to Ferdi", + "pricing.trial.intro.happyMessaging": "Happy messaging,", + "pricing.trial.intro.specialTreat": "We have a special treat for you.", + "pricing.trial.intro.tryPro": "Enjoy the full Ferdi Professional experience completely free for 14 days.", "pricing.trial.terms.automaticTrialEnd": "Your free trial ends automatically after 14 days", "pricing.trial.terms.headline": "No strings attached", "pricing.trial.terms.noCreditCard": "No credit card required", + "pricing.trial.terms.trialWorth": "Free trial (normally {currency}{price} per month)", "service.crashHandler.action": "Reload {name}", "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds", "service.crashHandler.headline": "Oh no!", @@ -186,6 +219,7 @@ "services.getStarted": "開始使用", "services.login": "Please login to use Ferdi.", "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner.", + "services.serverless": "Use Ferdi without an Account", "services.welcome": "歡迎使用 Ferdi", "settings.account.account.editButton": "更改帳戶資訊", "settings.account.accountType.basic": "基本帳戶", @@ -263,7 +297,7 @@ "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", "settings.app.serverInfo": "We advice you to logout after changing your server as your settings might not be saved otherwise.", - "settings.app.serverMoneyInfo": "You are using the official Ferdi Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Ferdi's server resources - which Ferdi's creator has to pay for.\nPlease still consider [Link 1]paying for a Ferdi account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Ferdi's recipe store, server resources and its development.", + "settings.app.serverMoneyInfo": "You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz's server resources - which Franz's creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz's recipe store, server resources and its development.", "settings.app.subheadlineCache": "Cache", "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature. (default: https://app.franztodos.com)", "settings.app.translationHelp": "Help us to translate Ferdi into your language.", @@ -354,6 +388,8 @@ "settings.team.headline": "Team", "settings.team.intro": "You and your team use Ferdi? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", "settings.team.manageAction": "Manage your Team on getferdi.com", + "settings.team.teamsUnavailable": "Teams are unavailable", + "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", "settings.team.upgradeAction": "Upgrade your Account", "settings.user.form.accountType.company": "公司", "settings.user.form.accountType.individual": "個人", @@ -401,10 +437,15 @@ "signup.link.login": "您已有一個帳戶,請問是否要登入?", "signup.password.label": "Password", "signup.submit.label": "建立帳戶", + "subscription.bestValue": "Best value", "subscription.cta.activateTrial": "Yes, start the free Ferdi Professional trial", "subscription.cta.allOptions": "See all options", "subscription.cta.choosePlan": "Choose your plan", "subscription.includedProFeatures": "The Ferdi Professional Plan includes:", + "subscription.interval.per": "per {interval}", + "subscription.interval.perMonth": "per month", + "subscription.interval.perMonthPerUser": "per month & user", + "subscription.planItem.upgradeAccount": "Upgrade Account", "subscription.teaser.includedFeatures": "Paid Ferdi Plans include:", "subscription.teaser.intro": "Ferdi 5 comes with a wide range of new features to boost up your everyday communication - batteries included. Check out our new plans and find out which one suits you most!", "subscriptionPopup.buttonCancel": "取消", diff --git a/src/server b/src/server index f541cbf9c..b5973cdc4 160000 --- a/src/server +++ b/src/server @@ -1 +1 @@ -Subproject commit f541cbf9c73d4b80e3d88f084fb8eb9bff7a6411 +Subproject commit b5973cdc4cdd60e61d2fba25a317bb4d216a0d1c -- cgit v1.2.3-70-g09d2