From d212be408f8cc9db76266942e121ab0f7341dabd Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Tue, 18 Jul 2023 11:22:15 +0200 Subject: [PATCH] Merge pull request #13337 from overleaf/jpa-translate-plans-page [web] translate all the things on the plans page (to German) GitOrigin-RevId: cbd812a4eca41573986c2d9e4f5e37b3d5a49e4f --- .../interstitialPaymentConfig.js | 28 +++---- .../st-personal-off-default/plansConfig.js | 10 +-- .../st-personal-off-default/plansFeatures.js | 60 ++++++------- .../interstitialPaymentConfig.js | 30 +++---- .../st-personal-off-variant/plansConfig.js | 10 +-- .../st-personal-off-variant/plansFeatures.js | 58 ++++++------- .../plans-marketing/_group_plan_modal.pug | 26 +++--- .../st-personal-off-default/v2/_mixins.pug | 10 +-- .../plans-marketing-v2.pug | 8 +- .../st-personal-off-variant/v2/_mixins.pug | 14 ++-- .../features/plans/group-plan-modal/index.js | 10 ++- .../plans-v2/plans-v2-group-plan.js | 2 +- services/web/locales/de.json | 84 ++++++++++++++----- services/web/locales/en.json | 22 +++++ 14 files changed, 221 insertions(+), 151 deletions(-) diff --git a/services/web/app/src/Features/Subscription/st-personal-off-default/interstitialPaymentConfig.js b/services/web/app/src/Features/Subscription/st-personal-off-default/interstitialPaymentConfig.js index 0667bf86e4..56c2f173dd 100644 --- a/services/web/app/src/Features/Subscription/st-personal-off-default/interstitialPaymentConfig.js +++ b/services/web/app/src/Features/Subscription/st-personal-off-default/interstitialPaymentConfig.js @@ -10,8 +10,8 @@ const config = { highlightedColumn: { index: 1, text: { - monthly: 'MOST POPULAR', - annual: 'MOST POPULAR', + monthly: 'most_popular', + annual: 'most_popular', }, }, eventTrackingKey: 'paywall-plans-page-click', @@ -25,10 +25,10 @@ const config = { info: 'number_of_users_info', value: 'str', plans: { - personal: '1 user', - collaborator: '1 user', - professional: '1 user', - student: '1 user', + personal: 'one_user', + collaborator: 'one_user', + professional: 'one_user', + student: 'one_user', }, }, { @@ -36,10 +36,10 @@ const config = { info: 'max_collab_per_project_info', value: 'str', plans: { - personal: 'You + 1', - collaborator: 'You + 10', - professional: 'Unlimited', - student: 'You + 6', + personal: 'you_plus_1', + collaborator: 'you_plus_10', + professional: 'unlimited', + student: 'you_plus_6', }, }, ], @@ -54,10 +54,10 @@ const config = { info: 'compile_timeout_short_info', value: 'str', plans: { - personal: '4 minutes', - collaborator: '4 minutes', - professional: '4 minutes', - student: '4 minutes', + personal: 'four_minutes', + collaborator: 'four_minutes', + professional: 'four_minutes', + student: 'four_minutes', }, }, { diff --git a/services/web/app/src/Features/Subscription/st-personal-off-default/plansConfig.js b/services/web/app/src/Features/Subscription/st-personal-off-default/plansConfig.js index 59253b4ea9..119d6e1923 100644 --- a/services/web/app/src/Features/Subscription/st-personal-off-default/plansConfig.js +++ b/services/web/app/src/Features/Subscription/st-personal-off-default/plansConfig.js @@ -13,8 +13,8 @@ const config = { highlightedColumn: { index: 2, text: { - monthly: 'MOST POPULAR', - annual: 'MOST POPULAR', + monthly: 'most_popular', + annual: 'most_popular', }, }, eventTrackingKey: 'plans-page-click', @@ -30,7 +30,7 @@ const config = { highlightedColumn: { index: 0, text: { - annual: 'MOST POPULAR', + annual: 'most_popular', }, }, eventTrackingKey: 'plans-page-click', @@ -52,8 +52,8 @@ const config = { highlightedColumn: { index: 1, text: { - monthly: 'SAVE 20% ON ANNUAL PLAN', - annual: 'SAVING 20%', + monthly: 'save_20_percent_by_paying_annually', + annual: 'saving_20_percent', }, }, eventTrackingKey: 'plans-page-click', diff --git a/services/web/app/src/Features/Subscription/st-personal-off-default/plansFeatures.js b/services/web/app/src/Features/Subscription/st-personal-off-default/plansFeatures.js index cf1e8ad577..5bf84a1fe6 100644 --- a/services/web/app/src/Features/Subscription/st-personal-off-default/plansFeatures.js +++ b/services/web/app/src/Features/Subscription/st-personal-off-default/plansFeatures.js @@ -7,10 +7,10 @@ const individualPlans = [ info: 'number_of_users_info', value: 'str', plans: { - free: '1 user', - personal: '1 user', - collaborator: '1 user', - professional: '1 user', + free: 'one_user', + personal: 'one_user', + collaborator: 'one_user', + professional: 'one_user', }, }, { @@ -18,10 +18,10 @@ const individualPlans = [ info: 'max_collab_per_project_info', value: 'str', plans: { - free: 'You + 1', - personal: 'You + 1', - collaborator: 'You + 10', - professional: 'Unlimited', + free: 'you_plus_1', + personal: 'you_plus_1', + collaborator: 'you_plus_10', + professional: 'unlimited', }, }, ], @@ -36,10 +36,10 @@ const individualPlans = [ info: 'compile_timeout_short_info', value: 'str', plans: { - free: '1 minute', - personal: '4 minutes', - collaborator: '4 minutes', - professional: '4 minutes', + free: 'one_minute', + personal: 'four_minutes', + collaborator: 'four_minutes', + professional: 'four_minutes', }, }, { @@ -205,9 +205,9 @@ const groupPlans = [ info: 'number_of_users_info', value: 'str', plans: { - group_standard: '2 users', - group_professional: '2 users', - organization: 'Contact sales', + group_standard: 'two_users', + group_professional: 'two_users', + organization: 'contact_sales', }, }, { @@ -215,9 +215,9 @@ const groupPlans = [ info: 'max_collab_per_project_info', value: 'str', plans: { - group_standard: 'Project author + 10', - group_professional: 'Unlimited', - organization: 'Unlimited', + group_standard: 'project_owner_plus_10', + group_professional: 'unlimited', + organization: 'unlimited', }, }, ], @@ -232,9 +232,9 @@ const groupPlans = [ info: 'user_management_info', value: 'str', plans: { - group_standard: 'admin panel', - group_professional: 'admin panel', - organization: 'automatic user registration', + group_standard: 'subscription_admin_panel', + group_professional: 'subscription_admin_panel', + organization: 'automatic_user_registration', }, }, { @@ -309,9 +309,9 @@ const groupPlans = [ info: 'compile_timeout_short_info', value: 'str', plans: { - group_standard: '4 minutes', - group_professional: '4 minutes', - organization: '4 minutes', + group_standard: 'four_minutes', + group_professional: 'four_minutes', + organization: 'four_minutes', }, }, { @@ -464,8 +464,8 @@ const studentPlans = [ info: 'number_of_users_info', value: 'str', plans: { - free: '1 user', - student: '1 user', + free: 'one_user', + student: 'one_user', }, }, { @@ -473,8 +473,8 @@ const studentPlans = [ info: 'max_collab_per_project_info', value: 'str', plans: { - free: 'You + 1', - student: 'You + 6', + free: 'you_plus_1', + student: 'you_plus_6', }, }, ], @@ -489,8 +489,8 @@ const studentPlans = [ info: 'compile_timeout_short_info', value: 'str', plans: { - free: '1 minute', - student: '4 minutes', + free: 'one_minute', + student: 'four_minutes', }, }, { diff --git a/services/web/app/src/Features/Subscription/st-personal-off-variant/interstitialPaymentConfig.js b/services/web/app/src/Features/Subscription/st-personal-off-variant/interstitialPaymentConfig.js index b7ef58ee07..b946c55197 100644 --- a/services/web/app/src/Features/Subscription/st-personal-off-variant/interstitialPaymentConfig.js +++ b/services/web/app/src/Features/Subscription/st-personal-off-variant/interstitialPaymentConfig.js @@ -10,8 +10,8 @@ const config = { highlightedColumn: { index: 1, text: { - monthly: 'MOST POPULAR', - annual: 'MOST POPULAR', + monthly: 'most_popular', + annual: 'most_popular', }, }, eventTrackingKey: 'paywall-plans-page-click', @@ -25,21 +25,21 @@ const config = { info: 'number_of_users_info', value: 'str', plans: { - free: '1 user', - collaborator: '1 user', - professional: '1 user', - student: '1 user', + free: 'one_user', + collaborator: 'one_user', + professional: 'one_user', + student: 'one_user', }, }, { feature: 'max_collab_per_project', info: 'max_collab_per_project_info', - value: 'richText', + value: 'str', plans: { - free: 'You + 1', - collaborator: 'You + 10', - professional: 'Unlimited', - student: 'You + 6', + free: 'you_plus_1', + collaborator: 'you_plus_10', + professional: 'unlimited_bold', + student: 'you_plus_6', }, }, ], @@ -54,10 +54,10 @@ const config = { info: 'compile_timeout_short_info', value: 'str', plans: { - free: '1 minute', - collaborator: '4 minutes', - professional: '4 minutes', - student: '4 minutes', + free: 'one_minute', + collaborator: 'four_minutes', + professional: 'four_minutes', + student: 'four_minutes', }, }, { diff --git a/services/web/app/src/Features/Subscription/st-personal-off-variant/plansConfig.js b/services/web/app/src/Features/Subscription/st-personal-off-variant/plansConfig.js index 6723ef9f5e..e8e8600d5f 100644 --- a/services/web/app/src/Features/Subscription/st-personal-off-variant/plansConfig.js +++ b/services/web/app/src/Features/Subscription/st-personal-off-variant/plansConfig.js @@ -12,8 +12,8 @@ const config = { highlightedColumn: { index: 1, text: { - monthly: 'MOST POPULAR', - annual: 'MOST POPULAR', + monthly: 'most_popular', + annual: 'most_popular', }, }, eventTrackingKey: 'plans-page-click', @@ -29,7 +29,7 @@ const config = { highlightedColumn: { index: 0, text: { - annual: 'MOST POPULAR', + annual: 'most_popular', }, }, eventTrackingKey: 'plans-page-click', @@ -51,8 +51,8 @@ const config = { highlightedColumn: { index: 1, text: { - monthly: 'SAVE 20% ON ANNUAL PLAN', - annual: 'SAVING 20%', + monthly: 'save_20_percent_by_paying_annually', + annual: 'saving_20_percent', }, }, eventTrackingKey: 'plans-page-click', diff --git a/services/web/app/src/Features/Subscription/st-personal-off-variant/plansFeatures.js b/services/web/app/src/Features/Subscription/st-personal-off-variant/plansFeatures.js index 4c11ea3929..e9cc82ff78 100644 --- a/services/web/app/src/Features/Subscription/st-personal-off-variant/plansFeatures.js +++ b/services/web/app/src/Features/Subscription/st-personal-off-variant/plansFeatures.js @@ -7,19 +7,19 @@ const individualPlans = [ info: 'number_of_users_info', value: 'str', plans: { - free: '1 user', - collaborator: '1 user', - professional: '1 user', + free: 'one_user', + collaborator: 'one_user', + professional: 'one_user', }, }, { feature: 'max_collab_per_project', info: 'max_collab_per_project_info', - value: 'richText', + value: 'str', plans: { - free: 'You + 1', - collaborator: 'You + 10', - professional: 'Unlimited', + free: 'you_plus_1', + collaborator: 'you_plus_10', + professional: 'unlimited_bold', }, }, ], @@ -34,9 +34,9 @@ const individualPlans = [ info: 'compile_timeout_short_info', value: 'str', plans: { - free: '1 minute', - collaborator: '4 minutes', - professional: '4 minutes', + free: 'one_minute', + collaborator: 'four_minutes', + professional: 'four_minutes', }, }, { @@ -189,19 +189,19 @@ const groupPlans = [ info: 'number_of_users_info', value: 'str', plans: { - group_standard: '2 users', - group_professional: '2 users', - organization: 'Contact sales', + group_standard: 'two_users', + group_professional: 'two_users', + organization: 'contact_sales', }, }, { feature: 'max_collab_per_project', info: 'max_collab_per_project_info', - value: 'richText', + value: 'str', plans: { - group_standard: 'Project author + 10', - group_professional: 'Unlimited', - organization: 'Unlimited', + group_standard: 'project_owner_plus_10', + group_professional: 'unlimited_bold', + organization: 'unlimited_bold', }, }, ], @@ -216,9 +216,9 @@ const groupPlans = [ info: 'user_management_info', value: 'str', plans: { - group_standard: 'admin panel', - group_professional: 'admin panel', - organization: 'automatic user registration', + group_standard: 'subscription_admin_panel', + group_professional: 'subscription_admin_panel', + organization: 'automatic_user_registration', }, }, { @@ -293,9 +293,9 @@ const groupPlans = [ info: 'compile_timeout_short_info', value: 'str', plans: { - group_standard: '4 minutes', - group_professional: '4 minutes', - organization: '4 minutes', + group_standard: 'four_minutes', + group_professional: 'four_minutes', + organization: 'four_minutes', }, }, { @@ -448,8 +448,8 @@ const studentPlans = [ info: 'number_of_users_info', value: 'str', plans: { - free: '1 user', - student: '1 user', + free: 'one_user', + student: 'one_user', }, }, { @@ -457,8 +457,8 @@ const studentPlans = [ info: 'max_collab_per_project_info', value: 'str', plans: { - free: 'You + 1', - student: 'You + 6', + free: 'you_plus_1', + student: 'you_plus_6', }, }, ], @@ -473,8 +473,8 @@ const studentPlans = [ info: 'compile_timeout_short_info', value: 'str', plans: { - free: '1 minute', - student: '4 minutes', + free: 'one_minute', + student: 'four_minutes', }, }, { diff --git a/services/web/app/views/subscriptions/plans-marketing/_group_plan_modal.pug b/services/web/app/views/subscriptions/plans-marketing/_group_plan_modal.pug index b57c7f925d..0744dd0d8a 100644 --- a/services/web/app/views/subscriptions/plans-marketing/_group_plan_modal.pug +++ b/services/web/app/views/subscriptions/plans-marketing/_group_plan_modal.pug @@ -12,7 +12,7 @@ div.modal.fade(tabindex="-1" role="dialog" data-ol-group-plan-modal) aria-label=translate("close") ) span(aria-hidden="true") × - h2 Customize your group subscription + h2 #{translate("customize_your_group_subscription")} h3 #{translate("save_30_percent_or_more_uppercase")} .modal-body.plans.group-subscription-modal .container-fluid @@ -20,11 +20,11 @@ div.modal.fade(tabindex="-1" role="dialog" data-ol-group-plan-modal) .col-md-6.text-center .circle.circle-lg span(data-ol-group-plan-display-price) ... - span.small / year + span.small / #{translate('year')} br - span.circle-subtext(data-ol-group-plan-price-per-user) ... + span.circle-subtext(data-ol-group-plan-price-per-user=translate('per_user')) ... ul.list-unstyled - li Each user will have access to: + li #{translate('each_user_will_have_access_to')}: li   li( hidden=(groupPlanModalDefaults.plan_code !== 'collaborator') @@ -41,7 +41,7 @@ div.modal.fade(tabindex="-1" role="dialog" data-ol-group-plan-modal) form.form(data-ol-group-plan-form) .form-group label(for='plan_code') - | Plan + | #{translate('plan')} for plan_code in groupPlanModalOptions.plan_codes label.group-plan-option input( @@ -51,7 +51,7 @@ div.modal.fade(tabindex="-1" role="dialog" data-ol-group-plan-modal) value=plan_code.code data-ol-group-plan-code=plan_code.code ) - span #{plan_code.display} + span #{translate(plan_code.i18n)} .form-group label(for='size') | #{translate('number_of_users')} @@ -69,7 +69,7 @@ div.modal.fade(tabindex="-1" role="dialog" data-ol-group-plan-modal) ) #{size} .form-group(data-ol-group-plan-form-currency) label(for='currency') - | Currency + | #{translate('currency')} select.form-control(id="currency") for currency in groupPlanModalOptions.currencies option( @@ -78,7 +78,7 @@ div.modal.fade(tabindex="-1" role="dialog" data-ol-group-plan-modal) ) #{currency.display} .form-group label(for='usage') - | Overleaf offers a 40% educational discount for groups of 10 or more. + | #{translate('educational_discount_for_groups_of_ten_or_more')} label.group-plan-option input( id="usage" @@ -89,16 +89,16 @@ div.modal.fade(tabindex="-1" role="dialog" data-ol-group-plan-modal) event-tracking-trigger="click" event-tracking-element="checkbox" ) - span This license is for educational purposes (applies to students or faculty using Overleaf for teaching) + span #{translate('educational_discount_disclaimer')} .row .col-md-12.text-center .educational-discount-badge div(hidden=(groupPlanModalDefaults.usage !== 'educational') data-ol-group-plan-educational-discount) p.applied(hidden=true data-ol-group-plan-educational-discount-applied) - | 40% educational discount applied! + | #{translate('educational_discount_applied')} p.ineligible(hidden=true data-ol-group-plan-educational-discount-ineligible) - | The educational discount is available for groups of 10 or more + | #{translate('educational_discount_available_for_groups_of_ten_or_more')} .modal-footer .text-center button.btn.btn-primary.btn-lg( @@ -106,10 +106,10 @@ div.modal.fade(tabindex="-1" role="dialog" data-ol-group-plan-modal) event-tracking="form-submitted-groups-modal-purchase-click" event-tracking-mb="true" event-tracking-trigger="click" - ) Purchase Now + ) #{translate('purchase_now')} hr.thin a( href data-ol-open-contact-form-for-more-than-50-licenses - ) Need more than 50 licenses? Please get in touch + ) #{translate('need_more_than_to_licenses_get_in_touch')} diff --git a/services/web/app/views/subscriptions/plans-marketing/st-personal-off-default/v2/_mixins.pug b/services/web/app/views/subscriptions/plans-marketing/st-personal-off-default/v2/_mixins.pug index 6d5aa4bbaa..d5ae44e0e6 100644 --- a/services/web/app/views/subscriptions/plans-marketing/st-personal-off-default/v2/_mixins.pug +++ b/services/web/app/views/subscriptions/plans-marketing/st-personal-off-default/v2/_mixins.pug @@ -40,9 +40,9 @@ mixin plans_v2_table(period, config) ) .plans-v2-table-th if (discountHighlighted) - p.plans-v2-table-discount-highlighted-text !{config.discountedColumn.text[period]} + p.plans-v2-table-discount-highlighted-text #{translate(config.discountedColumn.text[period]).toUpperCase()} if (highlighted) - p.plans-v2-table-green-highlighted-text !{config.highlightedColumn.text[period]} + p.plans-v2-table-green-highlighted-text #{translate(config.highlightedColumn.text[period]).toUpperCase()} case tableHeadKey when 'individual_free' +table_head_individual_free(highlighted, period) @@ -208,7 +208,7 @@ mixin table_head_group_collaborator(highlighted, eventTrackingKey, additionalEve p.plans-v2-table-price span(data-ol-plans-v2-group-price-per-user='collaborator') #{initialLocalizedGroupPrice.pricePerUser.collaborator} p.plans-v2-table-price-period-label - | per user / year + | #{translate("per_user_year")} .plans-v2-table-btn-buy-container-mobile +btn_buy_group_collaborator(highlighted, eventTrackingKey) +additional_link_group(eventTrackingKey, additionalEventSegmentation, 'group_collaborator') @@ -229,7 +229,7 @@ mixin table_head_group_professional(highlighted, eventTrackingKey, additionalEve p.plans-v2-table-price span(data-ol-plans-v2-group-price-per-user='professional') #{initialLocalizedGroupPrice.pricePerUser.professional} p.plans-v2-table-price-period-label - | per user / year + | #{translate("per_user_year")} .plans-v2-table-btn-buy-container-mobile +btn_buy_group_professional(highlighted, eventTrackingKey) +additional_link_group(eventTrackingKey, additionalEventSegmentation, 'group_professional') @@ -336,7 +336,7 @@ mixin table_cell(feature, plan) data-ol-plans-v2-table-cell-feature=featureName ) if (feature.value === 'str') - | #{planValue} + | !{translate(planValue, {}, ['strong'])} else if (feature.value === 'bool') if (planValue) i.fa.fa-check(aria-hidden="true") diff --git a/services/web/app/views/subscriptions/plans-marketing/st-personal-off-variant/plans-marketing-v2.pug b/services/web/app/views/subscriptions/plans-marketing/st-personal-off-variant/plans-marketing-v2.pug index 2206ed4ab2..166c9200c2 100644 --- a/services/web/app/views/subscriptions/plans-marketing/st-personal-off-variant/plans-marketing-v2.pug +++ b/services/web/app/views/subscriptions/plans-marketing/st-personal-off-variant/plans-marketing-v2.pug @@ -31,13 +31,13 @@ block content |   span #{translate("subject_to_additional_vat")} i.fa.fa-cc-mastercard.fa-2x(aria-hidden="true")   - span.sr-only Mastercard accepted + span.sr-only #{translate('payment_method_accepted', { paymentMethod: 'Mastercard' })} i.fa.fa-cc-visa.fa-2x(aria-hidden="true")   - span.sr-only Visa accepted + span.sr-only #{translate('payment_method_accepted', { paymentMethod: 'Visa' })} i.fa.fa-cc-amex.fa-2x(aria-hidden="true")   - span.sr-only Amex accepted + span.sr-only #{translate('payment_method_accepted', { paymentMethod: 'Amex' })} i.fa.fa-cc-paypal.fa-2x(aria-hidden="true")   - span.sr-only Paypal accepted + span.sr-only #{translate('payment_method_accepted', { paymentMethod: 'Paypal' })} include ./v2/_university_info diff --git a/services/web/app/views/subscriptions/plans-marketing/st-personal-off-variant/v2/_mixins.pug b/services/web/app/views/subscriptions/plans-marketing/st-personal-off-variant/v2/_mixins.pug index a32c14be82..77d230b418 100644 --- a/services/web/app/views/subscriptions/plans-marketing/st-personal-off-variant/v2/_mixins.pug +++ b/services/web/app/views/subscriptions/plans-marketing/st-personal-off-variant/v2/_mixins.pug @@ -40,9 +40,9 @@ mixin plans_v2_table(period, config) ) .plans-v2-table-th if (discountHighlighted) - p.plans-v2-table-discount-highlighted-text !{config.discountedColumn.text[period]} + p.plans-v2-table-discount-highlighted-text #{translate(config.discountedColumn.text[period]).toUpperCase()} if (highlighted) - p.plans-v2-table-green-highlighted-text !{config.highlightedColumn.text[period]} + p.plans-v2-table-green-highlighted-text #{translate(config.highlightedColumn.text[period]).toUpperCase()} case tableHeadKey when 'individual_free' +table_head_individual_free(highlighted, period) @@ -194,7 +194,7 @@ mixin table_head_group_collaborator(highlighted, eventTrackingKey, additionalEve p.plans-v2-table-price span(data-ol-plans-v2-group-price-per-user='collaborator') #{initialLocalizedGroupPrice.pricePerUser.collaborator} p.plans-v2-table-price-period-label - | per user / year + | #{translate('per_user_year')} .plans-v2-table-btn-buy-container-mobile +btn_buy_group_collaborator(highlighted, eventTrackingKey) +additional_link_group(eventTrackingKey, additionalEventSegmentation, 'group_collaborator') @@ -215,7 +215,7 @@ mixin table_head_group_professional(highlighted, eventTrackingKey, additionalEve p.plans-v2-table-price span(data-ol-plans-v2-group-price-per-user='professional') #{initialLocalizedGroupPrice.pricePerUser.professional} p.plans-v2-table-price-period-label - | per user / year + | #{translate('per_user_year')} .plans-v2-table-btn-buy-container-mobile +btn_buy_group_professional(highlighted, eventTrackingKey) +additional_link_group(eventTrackingKey, additionalEventSegmentation, 'group_professional') @@ -322,10 +322,8 @@ mixin table_cell(feature, plan) data-ol-plans-v2-table-cell-plan=plan data-ol-plans-v2-table-cell-feature=featureName ) - if (feature.value === 'richText') - | !{planValue} - else if (feature.value === 'str') - | #{planValue} + if (feature.value === 'str') + | !{translate(planValue, {}, ['strong'])} else if (feature.value === 'bool') if (planValue) i.fa.fa-check(aria-hidden="true") diff --git a/services/web/frontend/js/features/plans/group-plan-modal/index.js b/services/web/frontend/js/features/plans/group-plan-modal/index.js index 980c164cd2..6177bbb1a4 100644 --- a/services/web/frontend/js/features/plans/group-plan-modal/index.js +++ b/services/web/frontend/js/features/plans/group-plan-modal/index.js @@ -36,9 +36,13 @@ export function updateGroupModalPlanPricing() { }) modalEl.querySelector('[data-ol-group-plan-display-price]').innerText = localizedPrice - modalEl.querySelector( - '[data-ol-group-plan-price-per-user]' - ).innerText = `${localizedPerUserPrice} per user` + modalEl + .querySelectorAll('[data-ol-group-plan-price-per-user]') + .forEach(el => { + el.innerText = `${localizedPerUserPrice} ${el.getAttribute( + 'data-ol-group-plan-price-per-user' + )}` + }) modalEl.querySelector('[data-ol-group-plan-educational-discount]').hidden = usage !== 'educational' diff --git a/services/web/frontend/js/pages/user/subscription/plans-v2/plans-v2-group-plan.js b/services/web/frontend/js/pages/user/subscription/plans-v2/plans-v2-group-plan.js index 9cb97ce3eb..b29f90ef10 100644 --- a/services/web/frontend/js/pages/user/subscription/plans-v2/plans-v2-group-plan.js +++ b/services/web/frontend/js/pages/user/subscription/plans-v2/plans-v2-group-plan.js @@ -114,7 +114,7 @@ export function changeNumberOfUsersInFeatureTable() { '[data-ol-plans-v2-license-picker-select]' ).value - el.textContent = `${licenseSize} users` + el.textContent = el.textContent.replace(/\d+/, licenseSize) }) } diff --git a/services/web/locales/de.json b/services/web/locales/de.json index 815232f418..abaee7096c 100644 --- a/services/web/locales/de.json +++ b/services/web/locales/de.json @@ -61,6 +61,7 @@ "all_our_group_plans_offer_educational_discount": "Alle unsere <0>Gruppen-Abonnements bieten einen <1>Bildungsrabatt für Studenten und Lehrkräfte", "all_packages_and_templates": "Alle Pakete und <0>Vorlagen, die du brauchst", "all_premium_features": "Alle Premiumfunktionen", + "all_prices_displayed_are_in_currency": "Alle Preise sind in __recommendedCurrency__ angezeigt.", "all_projects": "Alle Projekte", "all_templates": "Alle Vorlagen", "already_have_sl_account": "Hast du bereits ein __appName__-Konto?", @@ -95,6 +96,7 @@ "autocompile_disabled_reason": "Aufgrund der hohen Serverlast wurde das Neukompilieren im Hintergrund vorübergehend deaktiviert. Bitte neu kompilieren, indem du auf die Schaltfläche oben klickst.", "autocomplete": "Autovervollständigung", "autocomplete_references": "Referenzautovervollständigung (in einem \\cite{}-Block)", + "automatic_user_registration": "Automatische Nutzerregistrierung", "back_to_account_settings": "Zurück zu den Kontoeinstellungen", "back_to_editor": "Zurück zum Editor", "back_to_your_projects": "Zurück zu deinen Projekten", @@ -185,7 +187,7 @@ "click_link_to_proceed": "Klicke auf „__clickText__“, um fortzufahren.", "clone_with_git": "Mit Git klonen", "close": "Schließen", - "clsi_maintenance": "Die Kompilierungsserver wurden für Wartungsarbeiten heruntergefahren und werden in Kürze zurück sein.", + "clsi_maintenance": "Die Kompilierserver wurden für Wartungsarbeiten heruntergefahren und werden in Kürze zurück sein.", "clsi_unavailable": "Entschuldigung, der Kompilierserver für dein Projekt war vorübergehend nicht verfügbar. Versuche es in einigen Augenblicken erneut.", "cn": "Chinesisch (vereinfacht)", "code_check_failed": "Codeprüfung fehlgeschlagen", @@ -211,7 +213,7 @@ "compile_timeout": "Zeitlimit beim Kompilieren (Minuten)", "compile_timeout_short": "Zeitlimit beim Kompilieren", "compile_timeout_short_info": "So viel Zeit hast du, um dein Projekt auf den Overleaf-Servern zu kompilieren. Für kurze und einfache Projekte sollte eine Minute ausreichen, aber du brauchst möglicherweise länger für komplexe oder längere Projekte", - "compiler": "Kompiler", + "compiler": "Compiler", "compiling": "Kompilieren", "complete": "Fertig", "confirm": "Bestätigen", @@ -227,10 +229,11 @@ "connecting": "Verbinden", "contact": "Kontakt", "contact_message_label": "Nachricht", + "contact_sales": "Vertrieb kontaktieren", "contact_support_to_change_group_subscription": "Bitte wende dich an den Support, wenn du dein Gruppenabonnement ändern möchtest.", "contact_us": "Kontaktiere uns", "contact_us_lowercase": "Kontaktiere uns", - "continue_github_merge": "Ich habe es von Hand gemerded, fortsetzen", + "continue_github_merge": "Ich habe es von Hand gemerget, fortsetzen", "continue_to": "Weiter zu __appName__", "copy": "Kopieren", "copy_project": "Projekt kopieren", @@ -247,6 +250,7 @@ "creating": "Erstellung läuft", "credit_card": "Kreditkarte", "cs": "Tschechisch", + "currency": "Währung", "current_file": "Aktuelle Datei", "current_password": "Aktuelles Passwort", "current_session": "Aktuelle Sitzung", @@ -255,6 +259,7 @@ "custom_resource_portal": "Benutzerdefiniertes Ressourcenportal", "custom_resource_portal_info": "Du kannst deine eigene benutzerdefinierte Portalseite auf Overleaf haben. Dies ist ein großartiger Ort für die Nutzer, um mehr über Overleaf zu erfahren, auf Vorlagen, FAQs und Hilferessourcen zuzugreifen und sich bei Overleaf anzumelden.", "customize": "Anpassen", + "customize_your_group_subscription": "Dein Gruppenabonnement anpassen", "customize_your_plan": "Abonnement anpassen", "da": "Dänisch", "de": "Deutsch", @@ -323,6 +328,7 @@ "dropbox_unlinked_because_full": "Die Verknüpfung deines Dropbox-Kontos wurde aufgehoben, da es voll ist und wir an es keine Updates mehr senden können. Bitte gib Speicherplatz frei und verknüpfe dein Dropbox-Konto erneut, um es weiterhin mit Overleaf zu verwenden.", "dropbox_unlinked_premium_feature": "<0>Die Verknüpfung deines Dropbox-Kontos wurde aufgehoben, weil Dropbox Sync eine Premiumfunktion ist, die du über eine institutionelle Lizenz hattest.", "duplicate_file": "Datei duplizieren", + "each_user_will_have_access_to": "Jeder Nutzer hat Zugriff auf", "ease_of_use": "Einfacher Gebrauch", "easily_manage_your_project_files_everywhere": "Verwalte deine Projektdateien einfach und überall", "edit": "Bearbeiten", @@ -335,6 +341,10 @@ "editor_only_hide_pdf": "Nur Editor <0>(PDF ausblenden)", "editor_resources": "Editor-Literatur", "editor_theme": "Editor-Thema", + "educational_discount_applied": "40% Bildungsrabatt angewendet!", + "educational_discount_available_for_groups_of_ten_or_more": "Der Bildungsrabatt ist verfügbar für Gruppen ab 10 Personen", + "educational_discount_disclaimer": "Dieses Abonnement ist nur für Bildungseinrichtungen (gilt für Studenten oder Lehrkräfte, die Overleaf im Unterricht verwenden)", + "educational_discount_for_groups_of_ten_or_more": "Overleaf bietet 40% Bildungsrabatt für Gruppen ab 10 Personen.", "email": "E-Mail", "email_already_associated_with": "Die E-Mail-Adresse __email1__ ist bereits mit dem Konto __email2__ __appName__ verknüpft.", "email_already_registered": "Diese E-Mail-Adresse ist bereits registriert.", @@ -370,8 +380,8 @@ "faq_do_collab_need_on_paid_plan_question": "Müssen meine Mitarbeiter auch ein bezahltes Abonnement haben?", "faq_how_does_a_group_plan_work_answer": "Gruppenabonnements sind eine Möglichkeit, mehr als ein Overleaf-Konto zu aktualisieren. Sie sind einfach zu verwalten, helfen Papierkram zu sparen, und reduzieren die Kosten für den separaten Kauf mehrerer Abonnements. Um mehr zu erfahren, lies über <0>Beitritt zu einem Gruppenabonnement und <1>Verwalten eines Gruppenabonnements. Du kannst Gruppenabonnements oben erwerben oder indem du <2>uns kontaktierst.", "faq_how_does_a_group_plan_work_question": "Wie funktioniert ein Gruppen-Abonnement? Wie kann ich Personen zum Abonnement hinzufügen?", - "faq_how_does_free_trial_works_answer": "Während deines __len__-tägigen Probe-Abonnements erhältst du vollen Zugriff auf die Funktionen des von dir gewählten __appName__-Abonnements. Es besteht keine Verpflichtung, über die Testperiode hinaus fortzufahren. Deine Karte wird am Ende des __len__-tägigen Testzeitraums belastet, sofern du nicht vorher gekündigst hast. Um zu kündigen, gehe zu deinen Abonnementeinstellungen in deinem Konto.", - "faq_how_free_trial_works_answer_v2": "Du erhältst vollen Zugriff auf das von dir gewählte Premium-Abonnement während deines __len__-tägigen kostenlosen Testzeitraums, und es besteht keine Verpflichtung zur Nutzung über die Testzeit hinaus. Deine Karte wird am Ende deiner Testphase belastet, sofern du nicht vorher gekündigst hast. Um zu kündigen, gehe zu deinen Abonnementeinstellungen in deinem Konto (der Testzeitraum endet erst nach den vollen __len__ Tagen).", + "faq_how_does_free_trial_works_answer": "Während deines __len__-tägigen Probe-Abonnements erhältst du vollen Zugriff auf die Funktionen des von dir gewählten __appName__-Abonnements. Es besteht keine Verpflichtung, über die Testperiode hinaus fortzufahren. Deine Karte wird am Ende des __len__-tägigen Testzeitraums belastet, sofern du nicht vorher gekündigt hast. Um zu kündigen, gehe zu deinen Abonnementeinstellungen in deinem Konto.", + "faq_how_free_trial_works_answer_v2": "Du erhältst vollen Zugriff auf das von dir gewählte Premium-Abonnement während deines __len__-tägigen kostenlosen Testzeitraums, und es besteht keine Verpflichtung zur Nutzung über die Testzeit hinaus. Deine Karte wird am Ende deiner Testphase belastet, sofern du nicht vorher gekündigt hast. Um zu kündigen, gehe zu deinen Abonnementeinstellungen in deinem Konto (der Testzeitraum endet erst nach den vollen __len__ Tagen).", "faq_how_free_trial_works_question": "Wie funktioniert das kostenlose Probe-Abonnement?", "faq_i_have_free_account_want_subscription_how_answer_first_paragraph": "In Overleaf erstellt und verwaltet jeder Nutzer sein eigenes Overleaf-Konto. Die meisten Nutzer beginnen mit der kostenlosen Version, können aber ein Upgrade durchführen und die Premiumfunktionen nutzen, indem sie ein Abonnement abschließen, einem Gruppen-Abonnement oder einer <0>standortweiten Abonnement beitreten. Wenn du ein Abonnement kaufst, einem Abonnement beitrittst oder ein Abonnement verlässt, kannst du immer dasselbe Overleaf-Konto behalten.", "faq_i_have_free_account_want_subscription_how_answer_second_paragraph": "Um mehr zu erfahren, lies <0>wie Konten und Abonnements in Overleaf zusammenarbeiten.", @@ -380,7 +390,7 @@ "faq_pay_by_invoice_question": "Kann ich per Rechnung / Bestellung bezahlen?", "faq_the_individual_standard_plan_10_collab_first_paragraph": "Nein. Nur das Konto des Abonnenten wird aktualisiert. Mit einem individuellen Standard-Abonnement kannst du 10 Mitarbeiter zu jedem Projekt einladen, das dir gehört.", "faq_the_individual_standard_plan_10_collab_question": "Das individuelle Standard-Abonnement hat 10 Projektmitarbeiter. Bedeutet das, dass 10 Personen ein Upgrade erhalten?", - "faq_the_individual_standard_plan_10_collab_second_paragraph": "Während der Arbeit an einem Projekt, das du als Abonnent mit ihnen teilst, können deine Mitarbeiter auf einige Premiumfunktionen wie den vollständigen Dokumentverlauf und die verlängerte Kompilierzeit für dieses bestimmte Projekt zugreifen. Wenn du sie zu einem bestimmten Projekt einlädtst, wird für ihre Konten jedoch nicht insgesamt ein Upgrade durchgeführt. Lies <0>welche Funktionen pro Projekt und welche pro Konto gelten.", + "faq_the_individual_standard_plan_10_collab_second_paragraph": "Während der Arbeit an einem Projekt, das du als Abonnent mit ihnen teilst, können deine Mitarbeiter auf einige Premiumfunktionen wie den vollständigen Dokumentverlauf und die verlängerte Kompilierzeit für dieses bestimmte Projekt zugreifen. Wenn du sie zu einem bestimmten Projekt einlädst, wird für ihre Konten jedoch nicht insgesamt ein Upgrade durchgeführt. Lies <0>welche Funktionen pro Projekt und welche pro Konto gelten.", "faq_what_is_the_difference_between_users_and_collaborators_answer_first_paragraph": "In Overleaf erstellt jeder Nutzer sein eigenes Konto. Du kannst Projekte erstellen, an denen nur du arbeitest, und du kannst auch andere dazu einladen, Projekte anzusehen oder mit dir an Projekten zu arbeiten, die dir gehören. Nutzer, mit denen du dein Projekt teilst, werden <0>Mitarbeiter genannt. Wir bezeichnen sie auch als Projektmitarbeiter.", "faq_what_is_the_difference_between_users_and_collaborators_answer_second_paragraph": "Mit anderen Worten, Mitarbeiter sind nur andere Overleaf-Nutzer, mit denen du an einem deiner Projekte arbeitest.", "faq_what_is_the_difference_between_users_and_collaborators_question": "Was ist der Unterschied zwischen Nutzern und Mitarbeitern?", @@ -389,6 +399,7 @@ "feature_not_included": "Funktion nicht enthalten", "featured_latex_templates": "Ausgewählte LaTeX-Vorlagen", "features": "Features", + "features_and_benefits": "Features & Vorteile", "february": "Februar", "file_action_created": "Erstellt", "file_action_deleted": "Gelöscht", @@ -422,15 +433,21 @@ "footer_plans_and_pricing": "Abos & Preise", "for_american_express": "Für <0>American Express die <1>4 Ziffern auf der <2>Vorderseite deiner Karte.", "for_enterprise": "Für Unternehmen", + "for_enterprises": "Für Unternehmen", + "for_groups": "Für Gruppen", "for_groups_or_site_wide": "Für Gruppen oder standortweit", "for_individuals_and_groups": "Für Einzelpersonen & Gruppen", + "for_publishers": "Für Verlage", "for_students": "Für Studierende", + "for_teaching": "Für die Lehre", "for_universities": "Für Universitäten", "for_visa_mastercard_and_discover": "Für <0>Visa, MasterCard und Discover die <1>3 Ziffern auf der <2>Rückseite deiner Karte.", + "for_writing": "Für Autoren", "forgot_your_password": "Passwort vergessen", + "four_minutes": "4 Minuten", "fr": "Französisch", "free": "Kostenlos", - "free_accounts_have_timeout_upgrade_to_increase": "Kostenlose Nutzerkonten haben einen Zeitlimit von einer Minute. Führe ein Upgrade durch, um dein Zeitimit zu erhöhen", + "free_accounts_have_timeout_upgrade_to_increase": "Kostenlose Nutzerkonten haben einen Zeitlimit von einer Minute. Führe ein Upgrade durch, um dein Zeitlimit zu erhöhen", "free_dropbox_and_history": "Kostenloser Dropbox und Dateiversionsverlauf", "from_another_project": "Von einem anderen Projekt", "from_external_url": "Von externer URL", @@ -440,7 +457,7 @@ "full_doc_history_info_v2": "Du kannst alle Bearbeitungen in deinem Projekt sehen und, wer jede Änderung vorgenommen hat. Füge Labels hinzu, um schnell auf bestimmte Versionen zuzugreifen.", "generic_history_error": "Beim Abrufen des Verlaufs deines Projekts ist ein Fehler aufgetreten. Wenn der Fehler weiterhin besteht, kontaktiere uns bitte unter:", "generic_if_problem_continues_contact_us": "Wenn das Problem weiterhin besteht, kontaktiere uns bitte", - "generic_linked_file_compile_error": "Die Ausgabedateien dieses Projekts sind nicht verfügbar, da sie nicht kompiliert werden konnten. Öffne das Projekt, um die Fehlerdetails der Kompilervorgangs anzuzeigen.", + "generic_linked_file_compile_error": "Die Ausgabedateien dieses Projekts sind nicht verfügbar, da sie nicht kompiliert werden konnten. Öffne das Projekt, um die Fehlerdetails des Kompiliervorgangs anzuzeigen.", "generic_something_went_wrong": "Sorry, irgendetwas ist schief gelaufen", "get_collaborative_benefits": "Profitiere von den kollaborativen Vorteilen von __appName__, auch wenn du lieber offline arbeitest", "get_in_touch_having_problems": "Wende dich an den Support, wenn du Probleme hast", @@ -452,7 +469,7 @@ "git_integration_lowercase": "Git-Integration", "git_integration_lowercase_info": "Du kannst dein Overleaf-Projekt in ein lokales Repository klonen und dein Overleaf-Projekt als entferntes Repository behandeln, in das Änderungen verschoben und aus dem diese abgerufen werden können.", "github_commit_message_placeholder": "Commit-Meldung für Änderungen die in __appName__ gemacht wurden", - "github_credentials_expired": "Deine GitHub-Authorisierungsschlüssel sind abgelaufen", + "github_credentials_expired": "Deine GitHub-Autorisierungsschlüssel sind abgelaufen", "github_file_name_error": "Dein Projekt enthält eine oder mehrere Dateien mit ungültigen Dateinamen. Überprüfe dein Repository und versuche es erneut.", "github_for_link_shared_projects": "Auf dieses Projekt wurde über Linkfreigabe zugegriffen und es wird nicht mit deinem GitHub synchronisiert, es sei denn, du wirst vom Projektinhaber per E-Mail eingeladen.", "github_git_folder_error": "Dieses Projekt enthält auf der obersten Ebene einen .git-Ordner, was darauf hinweist, dass es sich bereits um ein Git-Repository handelt. Der GitHub-Synchronisierungsdienst von Overleaf kann keine Git-Verläufe synchronisieren. Bitte entferne den .git-Ordner and versuche es erneut.", @@ -465,7 +482,7 @@ "github_only_integration_lowercase": "GitHub-Integration", "github_only_integration_lowercase_info": "Verknüpfe deine Overleaf-Projekte direkt mit einem GitHub-Repository, das als Remote-Repository für dein Overleaf-Projekt fungiert. Dies ermöglicht dir die gemeinsame Nutzung mit Mitarbeitern außerhalb von Overleaf und die Integration von Overleaf in komplexere Arbeitsabläufe.", "github_private_description": "Du wählst, wer dieses Repository sehen und etwas übergeben kann.", - "github_public_description": "Jeder kann dieses Repository sehen. Du entscheidest wer commiten darf.", + "github_public_description": "Jeder kann dieses Repository sehen. Du entscheidest wer committen darf.", "github_repository_diverged": "Der Standard-Branch des verknüpften Repositorys wurde forciert gepusht. Das Pullen von GitHub-Änderungen nach einem forciertem Push kann dazu führen, dass Overleaf und GitHub nicht mehr synchron sind. Möglicherweise musst du Änderungen nach dem Pullen erneut Pushen um wieder synchron zu sein", "github_successfully_linked_description": "Danke, wir haben dein GitHub-Nutzerkonto erfolgreich mit __appName__ verknüpft. Du kannst die __appName__-Projekte jetzt in GitHub exportieren oder Projekte aus deinen GitHub-Repositories importieren.", "github_symlink_error": "Dein GitHub-Repository enthält Dateien mit symbolischen Links, was derzeit von Overleaf nicht unterstützt wird. Entferne diese und versuche es erneut.", @@ -638,7 +655,7 @@ "latex_guides": "LaTeX-Anleitungen", "latex_help_guide": "LaTeX-Anleitung", "latex_in_thirty_minutes": "LaTeX in 30 Minuten", - "latex_templates": "LaTeX Vorlagen", + "latex_templates": "LaTeX-Vorlagen", "layout": "Layout", "layout_processing": "Layout wird angewandt", "ldap": "LDAP", @@ -679,7 +696,7 @@ "loading": "Laden", "loading_content": "Erstelle Projekt", "loading_github_repositories": "Deine GitHub-Repositories werden geladen", - "loading_recent_github_commits": "Neueste Commits weren geladen", + "loading_recent_github_commits": "Neueste Commits werden geladen", "log_entry_description": "Protokolleintrag mit Level: __level__", "log_entry_maximum_entries": "Maximale Anzahl an Protokolleinträgen erreicht", "log_entry_maximum_entries_title": "__total__ Protokollmeldungen insgesamt, zeige die ersten __displayed__", @@ -753,6 +770,7 @@ "more": "Mehr", "more_info": "Mehr Infos", "more_than_one_kind_of_snippet_was_requested": "Der Link zum Öffnen dieses Inhalts auf Overleaf enthielt einige ungültige Parameter. Wenn dies bei Links auf einer bestimmten Website weiterhin auftritt, melde dies bitte dort.", + "most_popular": "am beliebtesten", "most_premium_features": "Die meisten Premiumfunktionen", "move_to_annual_billing": "Zur jährlichen Abrechnung wechseln", "must_be_email_address": "Es muss eine E-Mail-Adresse sein!", @@ -764,6 +782,7 @@ "navigation": "Navigation", "nearly_activated": "Du bist einen Schritt davon entfernt, dein __appName__-Konto zu aktivieren!", "need_anything_contact_us_at": "Wenn du irgendetwas benötigst, kannst du uns gern direkt kontaktieren über", + "need_more_than_to_licenses_get_in_touch": "Brauchst Du mehr Lizenzen? Bitte kontaktiere uns", "need_to_add_new_primary_before_remove": "Du musst eine neue primäre E-Mail-Adresse hinzufügen, bevor du diese entfernen kannst.", "need_to_leave": "Du musst gehen?", "need_to_upgrade_for_more_collabs": "Du musst dein Konto upgraden um mehr Mitarbeiter hinzuzufügen", @@ -774,6 +793,7 @@ "new_password": "Neues Passwort", "new_project": "Neues Projekt", "new_snippet_project": "Ohne Titel", + "new_subscription_will_be_billed_immediately": "Dein neues Abonnement wird umgehend mit deiner aktuellen Zahlungsmethode abgerechnet.", "new_to_latex_look_at": "Neu bei LaTeX? Starte indem du einen Blick wirfst auf unser", "newsletter": "Newsletter", "newsletter-accept": "Ich möchte E-Mails zu Produktangeboten, Neuigkeiten und Veranstaltungen des Unternehmens erhalten.", @@ -835,6 +855,8 @@ "on": "An", "one_collaborator": "Nur ein Mitarbeiter", "one_free_collab": "Ein kostenloser Mitarbeiter", + "one_minute": "1 Minute", + "one_user": "1 Nutzer", "online_latex_editor": "Online-LaTeX-Editor", "open_a_file_on_the_left": "Öffne eine Datei auf der linken Seite", "open_as_template": "Als Vorlage öffnen", @@ -865,8 +887,9 @@ "password_managed_externally": "Passworteinstellungen werden extern verwaltet", "password_reset": "Passwort zurücksetzen", "password_reset_email_sent": "Dir wurde eine E-Mail gesendet, um dein Passwort zurückzusetzen.", - "password_reset_token_expired": "Dein Passwortzurücksetztoken ist nicht mehr gültig. Bitte fordere ein neues Passwortresetmail an und folge dem Link im Mail.", + "password_reset_token_expired": "Dein Passwortzurücksetz-Token ist nicht mehr gültig. Bitte fordere eine neue Passwortzurücksetz-Mail an und folge dem darin enthaltenen Link.", "password_too_long_please_reset": "Maximale Passwortlänge überschritten. Bitte setze dein Passwort zurück.", + "payment_method_accepted": "__paymentMethod__ akzeptiert", "payment_provider_unreachable_error": "Entschuldigung, bei der Kommunikation mit unserem Zahlungsanbieter ist ein Fehler aufgetreten. Versuche es in einigen Augenblicken erneut. Wenn du Erweiterungen zum Blockieren von Werbung oder Skripten in deinem Browser verwendest, musst du diese möglicherweise kurzzeitig deaktivieren.", "payment_summary": "Zahlungsübersicht", "pdf_compile_in_progress_error": "Kompiliervorgang läuft bereits in einem anderen Fenster", @@ -880,8 +903,15 @@ "pdf_viewer_error": "Beim Anzeigen dieses Projekt-PDFs ist ein Problem aufgetreten.", "pending": "Ausstehend", "pending_additional_licenses": "Dein Abonnement wird geändert, um <0>__pendingAdditionalLicenses__ zusätzliche Lizenz(en) für insgesamt <1>__pendingTotalLicenses__ Lizenzen einzuschließen.", + "per_month": "pro Monat", + "per_user": "pro Nutzer", + "per_user_year": "pro Nutzer / Jahr", + "per_year": "pro Jahr", "personal": "Persönlich", + "personalized_onboarding": "Personalisiertes Onboarding", + "personalized_onboarding_info": "Wir helfen Dir alles einzurichten und dann stehen wir deinen Mitarbeitern bei Fragen zur Plattform, Vorlagen oder LaTeX zur Verfügung!", "pl": "Polnisch", + "plan": "Abonnement", "planned_maintenance": "Geplante Wartungsarbeiten", "plans_amper_pricing": "Produkte und Preise", "plans_and_pricing": "Produkte und Preise", @@ -936,6 +966,7 @@ "project_layout_sharing_submission": "Projektlayout, Freigabe und Einreichung", "project_name": "Projektname", "project_not_linked_to_github": "Dieses Projekt ist nicht mit einem GitHub Repository verlinkt. Du kannst ein neues Repository in GitHub erstellen:", + "project_owner_plus_10": "Projektinhaber + 10", "project_ownership_transfer_confirmation_1": "Möchtest du <0>__user__ wirklich zum Eigentümer von <1>__project__ machen?", "project_ownership_transfer_confirmation_2": "Diese Aktion kann nicht rückgängig gemacht werden. Der neue Eigentümer wird benachrichtigt und kann die Zugriffseinstellungen für das Projekt ändern (einschließlich des Entfernens deines eigenen Zugriffs).", "project_synced_with_git_repo_at": "Das Projekt ist mit dem GitHub Repository verlinkt", @@ -951,17 +982,18 @@ "publish_as_template": "Als Vorlage veröffentlichen", "publishing": "Veröffentlichen", "pull_github_changes_into_sharelatex": "GitHub-Änderungen nach __appName__ ziehen", + "purchase_now": "Jetzt kaufen", "push_sharelatex_changes_to_github": "__appName__-Änderungen in GitHub drücken", "quoted_text_in": "Zitierter Text in", "raw_logs": "Raw Logs", - "raw_logs_description": "Raw Logs vom LaTeX-Kompiler", + "raw_logs_description": "Raw Logs vom LaTeX-Compiler", "read_only": "Nur Lesen", "realtime_collab": "Zusammenarbeit in Echtzeit", "realtime_collab_info": "Wenn du zusammenarbeitest, kannst du die Textpositionen deiner Mitarbeiter und ihre Änderungen in Echtzeit sehen, sodass jeder immer die neueste Version hat.", "realtime_track_changes": "Änderungen in Echtzeit nachverfolgen", "realtime_track_changes_info": "Jetzt musst du dich nicht mehr zwischen nachverfolgten Änderungen und Schriftsatz in LaTeX entscheiden. Hinterlasse Kommentare, behalte TODOs im Auge und akzeptiere oder lehne die Änderungen anderer Mitarbeiter ab.", "realtime_track_changes_info_v2": "Aktiviere die Nachverfolgung von Änderungen, um zu sehen, wer die Änderungen vorgenommen hat, nimm die Änderungen anderer Mitarbeiter an oder lehne sie ab und schreibe Kommentare.", - "reauthorize_github_account": "Authorisiere dein GitHub-Konto erneut", + "reauthorize_github_account": "Autorisiere dein GitHub-Konto erneut", "recaptcha_conditions": "Diese Website ist durch reCAPTCHA geschützt und es gelten die <1>Datenschutzerklärung und die <2>Nutzungsbedingungen von Google.", "recent_commits_in_github": "Neueste Commits auf GitHub", "recompile": "Aktualisieren", @@ -1013,7 +1045,7 @@ "removed": "gelöscht", "removing": "Entfernen", "rename": "Umbenennen", - "rename_folder": "Ordner umbennenen", + "rename_folder": "Ordner umbenennen", "rename_project": "Projekt umbenennen", "renaming": "Umbenennung", "reopen": "Erneut öffnen", @@ -1052,6 +1084,8 @@ "saml": "SAML", "saml_create_admin_instructions": "Wähle eine E-Mail-Adresse für den ersten __appName__-Admin-Konto. Dieses sollte bereits im SAML-System vorhanden sein. Du wirst dann aufgefordert, dich mit diesem Konto einzuloggen.", "save_20_percent_by_paying_annually": "Spare 20 % bei jährlicher Zahlung", + "save_30_percent_or_more": "spare 30% oder mehr", + "save_30_percent_or_more_uppercase": "Spare 30% oder mehr", "save_or_cancel-cancel": "Abbrechen", "save_or_cancel-or": "oder", "save_or_cancel-save": "Speichern", @@ -1109,6 +1143,7 @@ "show_in_pdf": "Im PDF anzeigen", "show_less": "Weniger anzeigen", "show_outline": "Dateigliederung anzeigen", + "show_your_support": "Zeige deine Unterstützung", "showing_1_result": "1 Ergebnis wird angezeigt", "showing_1_result_of_total": "Zeige 1 Ergebnis von __total__", "showing_x_results": "Es werden __x__ Ergebnisse angezeigt", @@ -1145,11 +1180,12 @@ "still_have_questions": "Hast du noch Fragen?", "stop_compile": "Kompiliervorgang stoppen", "stop_on_first_error": "Beim ersten Fehler anhalten", - "stop_on_first_error_enabled_description": "<0>„Anhalten beim ersten Fehler“ ist aktiviert. Durch Deaktivieren kann der Kompiler möglicherweise eine PDF-Datei erstellen (Das Projekt wird aber weiterhin Fehler enthalten).", + "stop_on_first_error_enabled_description": "<0>„Anhalten beim ersten Fehler“ ist aktiviert. Durch Deaktivieren kann der Compiler möglicherweise eine PDF-Datei erstellen (Das Projekt wird aber weiterhin Fehler enthalten).", "stop_on_first_error_enabled_title": "Kein PDF: Anhalten beim ersten Fehler aktiviert", "stop_on_validation_error": "Überprüfe die Syntax vor dem Kompilieren", "store_your_work": "Speichere deine Arbeit auf deiner eigenen Infrastruktur", "student": "Student", + "student_and_faculty_support_make_difference": "Die Unterstützung von Studenten und Mitarbeitern kann den Unterschied machen! Gerne leiten wir deine Nachfrage an unsere Kontakte an deiner Universität weiter, wenn wir ein solches Abonnement mit deiner Universität besprechen.", "student_disclaimer": "Der Bildungsrabatt gilt für alle Studierenden an weiterführenden und höheren Bildungseinrichtungen (Schulen und Universitäten). Wir können dich kontaktieren, damit du den Anspruch auf den Rabatt bestätigst.", "student_plans": "Studenten-Abonnements", "subject": "Betreff", @@ -1158,6 +1194,7 @@ "submit_title": "Einreichen", "subscribe": "Abonnieren", "subscription": "Abonnement", + "subscription_admin_panel": "Verwaltungsoberfläche", "subscription_admins_cannot_be_deleted": "Du kannst dein Konto nicht löschen, während du ein Abonnement besitzt. Kündige dein Abonnement und versuche es erneut. Wenn diese Meldung weiterhin erscheint, kontaktiere uns bitte.", "subscription_canceled": "Abonnement gekündigt", "subscription_canceled_and_terminate_on_x": "Dein Abonnement wurde gekündigt und wird am <0>__terminateDate__ enden. Keine weiteren Zahlungen werden angenommen.", @@ -1204,7 +1241,7 @@ "thank_you_for_being_part_of_our_beta_program": "Vielen Dank, dass du Teil unseres Beta-Programms bist, bei dem du <0>frühzeitig auf neue Funktionen zugreifen und uns dabei helfen kannst, deine Bedürfnisse besser zu verstehen", "thanks": "Danke", "thanks_for_subscribing": "Danke fürs Abonnieren!", - "thanks_for_subscribing_you_help_sl": "Danke, dass du den __planName__-Plant abonniert hast. Die Unterstützung von Menschen wie dir macht es __appName__ möglich, zu wachsen und besser zu werden.", + "thanks_for_subscribing_you_help_sl": "Danke, dass du den __planName__-Plan abonniert hast. Die Unterstützung von Menschen wie dir macht es __appName__ möglich, zu wachsen und besser zu werden.", "thanks_settings_updated": "Danke, deine Einstellungen wurden aktualisiert.", "the_easy_online_collab_latex_editor": "Der einfach zu nutzende, kollaborative, Online-LaTeX-Editor", "the_requested_conversion_job_was_not_found": "Der Link zum Öffnen dieses Inhalts auf Overleaf gab einen Konvertierungsauftrag an, der nicht gefunden werden konnte. Es ist möglich, dass der Job abgelaufen ist und erneut ausgeführt werden muss. Wenn dies bei Links auf einer bestimmten Website weiterhin auftritt, melde dies bitte dort.", @@ -1245,8 +1282,10 @@ "tooltip_hide_pdf": "Klicken, um das PDF auszublenden", "tooltip_show_filetree": "Klicken, um den Dateibaum anzuzeigen", "tooltip_show_pdf": "Klicken, um das PDF anzuzeigen", + "total": "Insgesamt", "total_per_month": "Insgesamt pro Monat", "total_per_year": "Insgesamt pro Jahr", + "total_per_year_for_x_users": "insgesamt pro Jahr für __licenseSize__ Nutzer", "total_words": "Gesamtwortanzahl", "tr": "Türkisch", "track_any_change_in_real_time": "Verfolge jegliche Änderung, in Echtzeit", @@ -1271,6 +1310,7 @@ "turn_off_link_sharing": "Deaktiviere die Linkfreigabe", "turn_on_link_sharing": "Aktiviere die Linkfreigabe", "tutorials": "Tutorials", + "two_users": "2 Nutzer", "uk": "Ukrainisch", "unable_to_extract_the_supplied_zip_file": "Das Öffnen dieses Inhalts auf Overleaf ist fehlgeschlagen, da die ZIP-Datei nicht extrahiert werden konnte. Bitte stelle sicher, dass es sich um eine gültige ZIP-Datei handelt. Wenn dies bei Links auf einer bestimmten Website weiterhin auftritt, melde dies bitte dort.", "unarchive": "Wiederherstellen", @@ -1279,8 +1319,10 @@ "unfold_line": "Zeile ausklappen", "university": "Universität", "unlimited": "Unbegrenzt", + "unlimited_bold": "<0>Unbegrenzt", "unlimited_collaborators_in_each_project": "Unbegrenzte Zahl von Mitarbeitern in jedem Projekt", "unlimited_collabs": "Unbeschränkt viele Mitarbeiter", + "unlimited_collabs_rt": "<0>Unbeschränkt viele Mitarbeiter", "unlimited_private": "Unbegrenzte private Projekte", "unlimited_private_info": "Alle deine Projekte sind standardmäßig privat. Lade Mitarbeiter per E-Mail-Adresse oder durch Senden eines geheimen Links zum Lesen oder Bearbeiten ein.", "unlimited_projects": "Unbegrenzte Projekte", @@ -1363,6 +1405,7 @@ "work_with_non_overleaf_users": "Arbeite mit Nicht-Overleaf-Nutzern", "work_with_word_users": "Arbeite mit Word-Nutzern", "work_with_word_users_blurb": "__appName__ ist so einfach zu lernen, dass du auch Kollegen, die sich mit LaTeX nicht auskennen, einladen kannst, um direkt zu deinen LaTeX-Dokumenten beizutragen. Du wirst vom ersten Tag an produktiv sein und kannst schnell etwas LaTeX aufschnappen, während Du arbeitest.", + "would_you_like_to_see_a_university_subscription": "Interessiert an einem Standortweiten __appName__ Abonnement für deine Universität?", "x_collaborators_per_project": "__collaboratorsCount__ Mitarbeiter pro Projekt", "x_price_for_first_month": "<0>__price__ für deinen ersten Monat", "x_price_for_first_year": "<0>__price__ für dein erstes Jahr", @@ -1371,7 +1414,7 @@ "year": "Jahr", "yes_that_is_correct": "Ja, das ist richtig", "you_and_collaborators_get_access_to": "Du und deine Projektmitarbeiter erhalten darauf Zugriff", - "you_and_collaborators_get_access_to_info": "Diese Funktionen stehen dir und deinen Projektmitarbeitern (anderen Overleaf-Nutzern, die du zu deinen Projekten einlädtst) zur Verfügung.", + "you_and_collaborators_get_access_to_info": "Diese Funktionen stehen dir und deinen Projektmitarbeitern (anderen Overleaf-Nutzern, die du zu deinen Projekten einlädst) zur Verfügung.", "you_can_now_log_in_sso": "Du kannst dich jetzt über deine Institution anmelden und möglicherweise <0>kostenlose __appName__ „Professionell“-Funktionen erhalten!", "you_can_opt_in_and_out_of_the_program_at_any_time_on_this_page": "Du kannst dich jederzeit auf dieser Seite für das Beta-Programm an- und abmelden", "you_get_access_to": "Du erhältst darauf Zugriff", @@ -1380,6 +1423,9 @@ "you_introed_high_number": "Du hast bereits <0>__numberOfPeople__ Personen zu __appName__ eingeladen. Super!", "you_introed_small_number": "Du hast bereits <0>__numberOfPeople__ Person zu __appName__ eingeladen. Gut gemacht!, aber schaffst du noch mehr?", "you_not_introed_anyone_to_sl": "Du hast noch niemanden zu __appName__ eingeladen. Beginne zu teilen!", + "you_plus_1": "Du + 1", + "you_plus_10": "Du + 10", + "you_plus_6": "Du + 6", "you_will_be_able_to_contact_us_any_time_to_share_your_feedback": "Du kannst uns jederzeit kontaktieren, um uns dein Feedback mitzuteilen", "your_affiliation_is_confirmed": "Deine Zugehörigkeit zu <0>__institutionName__ ist bestätigt.", "your_browser_does_not_support_this_feature": "Entschuldigung, dein Browser unterstützt diese Funktion nicht. Bitte aktualisiere deinen Browser auf die neueste Version.", diff --git a/services/web/locales/en.json b/services/web/locales/en.json index ef2468dc63..1d3fc8f4cf 100644 --- a/services/web/locales/en.json +++ b/services/web/locales/en.json @@ -126,6 +126,7 @@ "autocompile_disabled_reason": "Due to high server load, background recompilation has been temporarily disabled. Please recompile by clicking the button above.", "autocomplete": "Autocomplete", "autocomplete_references": "Reference Autocomplete (inside a \\cite{} block)", + "automatic_user_registration": "automatic user registration", "back": "Back", "back_to_account_settings": "Back to account settings", "back_to_editor": "Back to the editor", @@ -429,6 +430,10 @@ "editor_only_hide_pdf": "Editor only <0>(hide PDF)", "editor_resources": "Editor Resources", "editor_theme": "Editor theme", + "educational_discount_applied": "40% educational discount applied!", + "educational_discount_available_for_groups_of_ten_or_more": "The educational discount is available for groups of 10 or more", + "educational_discount_disclaimer": "This license is for educational purposes (applies to students or faculty using Overleaf for teaching)", + "educational_discount_for_groups_of_ten_or_more": "Overleaf offers a 40% educational discount for groups of 10 or more.", "educational_discount_for_groups_of_x_or_more": "The educational discount is available for groups of __size__ or more", "educational_percent_discount_applied": "__percent__% educational discount applied!", "email": "Email", @@ -552,6 +557,7 @@ "for_visa_mastercard_and_discover": "For <0>Visa, MasterCard and Discover, the <1>3 digits on the <2>back of your card.", "for_writing": "For Writing", "forgot_your_password": "Forgot your password", + "four_minutes": "4 minutes", "fr": "French", "free": "Free", "free_accounts_have_timeout_upgrade_to_increase": "Free accounts have a one minute timeout, whereas upgraded accounts have a timeout of four minutes.", @@ -1008,6 +1014,7 @@ "more_info": "More Info", "more_project_collaborators": "<0>More project <0>collaborators", "more_than_one_kind_of_snippet_was_requested": "The link to open this content on Overleaf included some invalid parameters. If this keeps happening for links on a particular site, please report this to them.", + "most_popular": "most popular", "most_premium_features": "Most premium features", "move_to_annual_billing": "Move to Annual Billing", "must_be_email_address": "Must be an email address", @@ -1025,6 +1032,7 @@ "need_anything_contact_us_at": "If there is anything you ever need please feel free to contact us directly at", "need_contact_group_admin_to_make_changes": "You’ll need to contact your group admin if you wish to make certain changes to your account. <0>Read more about managed users.", "need_make_changes": "You need to make some changes", + "need_more_than_to_licenses_get_in_touch": "Need more than 50 licenses? Please get in touch", "need_more_than_x_licenses": "Need more than __x__ licenses?", "need_to_add_new_primary_before_remove": "You’ll need to add a new primary email address before you can remove this one.", "need_to_leave": "Need to leave?", @@ -1108,6 +1116,8 @@ "on_free_plan_upgrade_to_access_features": "You are on the __appName__ Free plan. Upgrade to access these <0>Premium Features", "one_collaborator": "Only one collaborator", "one_free_collab": "One free collaborator", + "one_minute": "1 minute", + "one_user": "1 user", "online_latex_editor": "Online LaTeX Editor", "only_group_admin_or_managers_can_delete_your_account": "Only your group admin or group managers will be able to delete your account.", "open_a_file_on_the_left": "Open a file on the left", @@ -1153,6 +1163,7 @@ "password_too_long_please_reset": "Maximum password length exceeded. Please reset your password.", "password_updated": "Password updated", "password_was_detected_on_a_public_list_of_known_compromised_passwords": "This password was detected on a <0>public list of known compromised passwords", + "payment_method_accepted": "__paymentMethod__ accepted", "payment_provider_unreachable_error": "Sorry, there was an error talking to our payment provider. Please try again in a few moments.\nIf you are using any ad or script blocking extensions in your browser, you may need to temporarily disable them.", "payment_summary": "Payment summary", "pdf_compile_in_progress_error": "A previous compile is still running. Please wait a minute and try compiling again.", @@ -1168,6 +1179,8 @@ "pending_additional_licenses": "Your subscription is changing to include <0>__pendingAdditionalLicenses__ additional license(s) for a total of <1>__pendingTotalLicenses__ licenses.", "pending_invite": "Pending invite", "per_month": "per month", + "per_user": "per user", + "per_user_year": "per user / year", "per_year": "per year", "percent_discount_for_groups": "__appName__ offers a __percent__% educational discount for groups of __size__ or more.", "personal": "Personal", @@ -1241,6 +1254,7 @@ "project_layout_sharing_submission": "Project Layout, Sharing, and Submission", "project_name": "Project Name", "project_not_linked_to_github": "This project is not linked to a GitHub repository. You can create a repository for it in GitHub:", + "project_owner_plus_10": "Project author + 10", "project_ownership_transfer_confirmation_1": "Are you sure you want to make <0>__user__ the owner of <1>__project__?", "project_ownership_transfer_confirmation_2": "This action cannot be undone. The new owner will be notified and will be able to change project access settings (including removing your own access).", "project_synced_with_git_repo_at": "This project is synced with the GitHub repository at", @@ -1263,6 +1277,7 @@ "publisher_account": "Publisher Account", "publishing": "Publishing", "pull_github_changes_into_sharelatex": "Pull GitHub changes into __appName__", + "purchase_now": "Purchase Now", "push_sharelatex_changes_to_github": "Push __appName__ changes to GitHub", "quoted_text_in": "Quoted text in", "raw_logs": "Raw logs", @@ -1538,6 +1553,7 @@ "submit_title": "Submit", "subscribe": "Subscribe", "subscription": "Subscription", + "subscription_admin_panel": "admin panel", "subscription_admins_cannot_be_deleted": "You cannot delete your account while on a subscription. Please cancel your subscription and try again. If you keep seeing this message please contact us.", "subscription_canceled": "Subscription Canceled", "subscription_canceled_and_terminate_on_x": " Your subscription has been canceled and will terminate on <0>__terminateDate__. No further payments will be taken.", @@ -1669,6 +1685,7 @@ "tooltip_show_filetree": "Click to show the file-tree", "tooltip_show_pdf": "Click to show the PDF", "top_pick": "Top pick", + "total": "Total", "total_per_month": "Total per month", "total_per_year": "Total per year", "total_per_year_for_x_users": "total per year for __licenseSize__ users", @@ -1709,6 +1726,7 @@ "turn_off_link_sharing": "Turn off link sharing", "turn_on_link_sharing": "Turn on link sharing", "tutorials": "Tutorials", + "two_users": "2 users", "uk": "Ukrainian", "unable_to_extract_the_supplied_zip_file": "Opening this content on Overleaf failed because the zip file could not be extracted. Please ensure that it is a valid zip file. If this keeps happening for links on a particular site, please report this to them.", "unarchive": "Restore", @@ -1721,6 +1739,7 @@ "university": "University", "unknown": "Unknown", "unlimited": "Unlimited", + "unlimited_bold": "<0>Unlimited", "unlimited_collaborators_in_each_project": "Unlimited collaborators in each project", "unlimited_collabs": "Unlimited collaborators", "unlimited_collabs_rt": "<0>Unlimited collaborators", @@ -1859,6 +1878,9 @@ "you_introed_high_number": " You’ve introduced <0>__numberOfPeople__ people to __appName__. Good job!", "you_introed_small_number": " You’ve introduced <0>__numberOfPeople__ person to __appName__. Good job, but can you get some more?", "you_not_introed_anyone_to_sl": "You’ve not introduced anyone to __appName__ yet. Get sharing!", + "you_plus_1": "You + 1", + "you_plus_10": "You + 10", + "you_plus_6": "You + 6", "you_will_be_able_to_contact_us_any_time_to_share_your_feedback": "<0>You will be able to contact us any time to share your feedback", "you_will_be_able_to_reassign_subscription": "You will be able to reassign their subscription membership to another person in your organization", "your_affiliation_is_confirmed": "Your <0>__institutionName__ affiliation is confirmed.",