From cc989b3ad54d192615797e74ee09ac89deb65d7a Mon Sep 17 00:00:00 2001 From: Cathy Sarisky Date: Wed, 12 Feb 2025 14:43:17 -0500 Subject: [PATCH 1/6] fix untranslatable donation field string --- apps/portal/src/components/pages/SupportPage.js | 2 +- apps/portal/src/utils/api.js | 5 +++-- ghost/i18n/locales/af/portal.json | 1 + ghost/i18n/locales/ar/portal.json | 1 + ghost/i18n/locales/bg/portal.json | 1 + ghost/i18n/locales/bn/portal.json | 1 + ghost/i18n/locales/bs/portal.json | 1 + ghost/i18n/locales/ca/portal.json | 1 + ghost/i18n/locales/context.json | 1 + ghost/i18n/locales/cs/portal.json | 1 + ghost/i18n/locales/da/portal.json | 1 + ghost/i18n/locales/de-CH/portal.json | 1 + ghost/i18n/locales/de/portal.json | 1 + ghost/i18n/locales/el/portal.json | 1 + ghost/i18n/locales/en/portal.json | 1 + ghost/i18n/locales/eo/portal.json | 1 + ghost/i18n/locales/es/portal.json | 3 ++- ghost/i18n/locales/et/portal.json | 1 + ghost/i18n/locales/fa/portal.json | 1 + ghost/i18n/locales/fi/portal.json | 1 + ghost/i18n/locales/fr/portal.json | 1 + ghost/i18n/locales/gd/portal.json | 3 ++- ghost/i18n/locales/he/portal.json | 1 + ghost/i18n/locales/hi/portal.json | 1 + ghost/i18n/locales/hr/portal.json | 1 + ghost/i18n/locales/hu/portal.json | 1 + ghost/i18n/locales/id/portal.json | 1 + ghost/i18n/locales/is/portal.json | 1 + ghost/i18n/locales/it/portal.json | 1 + ghost/i18n/locales/ja/portal.json | 1 + ghost/i18n/locales/ko/portal.json | 1 + ghost/i18n/locales/kz/portal.json | 1 + ghost/i18n/locales/lt/portal.json | 1 + ghost/i18n/locales/lv/portal.json | 1 + ghost/i18n/locales/mk/portal.json | 1 + ghost/i18n/locales/mn/portal.json | 1 + ghost/i18n/locales/ms/portal.json | 1 + ghost/i18n/locales/ne/portal.json | 1 + ghost/i18n/locales/nl/portal.json | 1 + ghost/i18n/locales/nn/portal.json | 1 + ghost/i18n/locales/no/portal.json | 1 + ghost/i18n/locales/pl/portal.json | 1 + ghost/i18n/locales/pt-BR/portal.json | 1 + ghost/i18n/locales/pt/portal.json | 1 + ghost/i18n/locales/ro/portal.json | 1 + ghost/i18n/locales/ru/portal.json | 1 + ghost/i18n/locales/si/portal.json | 1 + ghost/i18n/locales/sk/portal.json | 1 + ghost/i18n/locales/sl/portal.json | 1 + ghost/i18n/locales/sq/portal.json | 1 + ghost/i18n/locales/sr-Cyrl/portal.json | 1 + ghost/i18n/locales/sr/portal.json | 1 + ghost/i18n/locales/sv/portal.json | 1 + ghost/i18n/locales/sw/portal.json | 1 + ghost/i18n/locales/ta/portal.json | 1 + ghost/i18n/locales/th/portal.json | 1 + ghost/i18n/locales/tr/portal.json | 1 + ghost/i18n/locales/uk/portal.json | 1 + ghost/i18n/locales/ur/portal.json | 1 + ghost/i18n/locales/uz/portal.json | 1 + ghost/i18n/locales/vi/portal.json | 1 + ghost/i18n/locales/zh-Hant/portal.json | 1 + ghost/i18n/locales/zh/portal.json | 1 + ghost/members-api/lib/controllers/RouterController.js | 1 + ghost/payments/lib/PaymentsService.js | 7 ++++--- ghost/stripe/lib/StripeAPI.js | 5 +++-- 66 files changed, 75 insertions(+), 10 deletions(-) diff --git a/apps/portal/src/components/pages/SupportPage.js b/apps/portal/src/components/pages/SupportPage.js index 2ee7e482399..af202b97aa3 100644 --- a/apps/portal/src/components/pages/SupportPage.js +++ b/apps/portal/src/components/pages/SupportPage.js @@ -19,7 +19,7 @@ const SupportPage = () => { const api = setupGhostApi({siteUrl}); try { - const response = await api.member.checkoutDonation({successUrl, cancelUrl}); + const response = await api.member.checkoutDonation({successUrl, cancelUrl, personalNoteText: t('Add a personal note')}); if (response.url) { window.location.replace(response.url); diff --git a/apps/portal/src/utils/api.js b/apps/portal/src/utils/api.js index 41abc9263e3..4e4b6a9a644 100644 --- a/apps/portal/src/utils/api.js +++ b/apps/portal/src/utils/api.js @@ -456,7 +456,7 @@ function setupGhostApi({siteUrl = window.location.origin, apiUrl, apiKey}) { }); }, - async checkoutDonation({successUrl, cancelUrl, metadata = {}} = {}) { + async checkoutDonation({successUrl, cancelUrl, metadata = {}, personalNoteText = 'Add a personal note'} = {}) { const identity = await api.member.identity(); const url = endpointFor({type: 'members', resource: 'create-stripe-checkout-session'}); @@ -471,7 +471,8 @@ function setupGhostApi({siteUrl = window.location.origin, apiUrl, apiKey}) { metadata: metadataObj, successUrl, cancelUrl, - type: 'donation' + type: 'donation', + personalNoteText }; const response = await makeRequest({ diff --git a/ghost/i18n/locales/af/portal.json b/ghost/i18n/locales/af/portal.json index 82d6aa642ff..20cbaf887d0 100644 --- a/ghost/i18n/locales/af/portal.json +++ b/ghost/i18n/locales/af/portal.json @@ -15,6 +15,7 @@ "Account": "Rekening", "Account details updated successfully": "", "Account settings": "Rekening instellings", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Na afloop van die gratis proeftydperk sal u die vasgestelde pry vir die vlak wat u gekies het, betaal. U kan altyd voor die tyd kanselleer.", "Already a member?": "Is u reeds 'n lid?", "An error occurred": "", diff --git a/ghost/i18n/locales/ar/portal.json b/ghost/i18n/locales/ar/portal.json index 17fd06e36d2..0b241f3df4a 100644 --- a/ghost/i18n/locales/ar/portal.json +++ b/ghost/i18n/locales/ar/portal.json @@ -15,6 +15,7 @@ "Account": "الحساب", "Account details updated successfully": ".تم تحديث تفاصيل الحساب بنجاح", "Account settings": "إعدادات الحساب", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": ".بعد انتهاء فترة التجربة المجانية، سيتم خصم السعر العادي للفئة التي اخترتها. يمكنك دائمًا إلغاء الاشتراك قبل ذلك", "Already a member?": "هل أنت عضو بالفعل؟", "An error occurred": "حدث خطأ", diff --git a/ghost/i18n/locales/bg/portal.json b/ghost/i18n/locales/bg/portal.json index cdc7b1411bd..e2d7cdbc865 100644 --- a/ghost/i18n/locales/bg/portal.json +++ b/ghost/i18n/locales/bg/portal.json @@ -15,6 +15,7 @@ "Account": "Профил", "Account details updated successfully": "Настройките бяха успешно обновени", "Account settings": "Настройки", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "След приключване на безплатния период ще бъдете таксувани според обявените цени. Можете да се откажете преди изтичането на безплатния период.", "Already a member?": "Абонат ли сте вече?", "An error occurred": "Възникна грешка", diff --git a/ghost/i18n/locales/bn/portal.json b/ghost/i18n/locales/bn/portal.json index 143127bf80d..a225efadaca 100644 --- a/ghost/i18n/locales/bn/portal.json +++ b/ghost/i18n/locales/bn/portal.json @@ -15,6 +15,7 @@ "Account": "অ্যাকাউন্ট", "Account details updated successfully": "", "Account settings": "অ্যাকাউন্ট সেটিংস", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "একটি ফ্রি ট্রায়াল শেষ হওয়ার পরে, আপনি যেই টিয়ারটি বেছে নিয়েছেন তার নিয়মিত মূল্য চার্জ করা হবে। আপনি যে কোনো সময় বাতিল করতে পারেন।", "Already a member?": "ইতিমধ্যেই সদস্য?", "An error occurred": "", diff --git a/ghost/i18n/locales/bs/portal.json b/ghost/i18n/locales/bs/portal.json index 479688e605e..e34f653c64e 100644 --- a/ghost/i18n/locales/bs/portal.json +++ b/ghost/i18n/locales/bs/portal.json @@ -15,6 +15,7 @@ "Account": "Račun", "Account details updated successfully": "", "Account settings": "Postavke računa", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Nakon isteka besplatnog probnog perioda, bit će ti naplaćena redovna cijena za plan koji si odabrao. Možeš otkazati članarinu prije toga.", "Already a member?": "Već si član?", "An error occurred": "", diff --git a/ghost/i18n/locales/ca/portal.json b/ghost/i18n/locales/ca/portal.json index 9d3e5c16310..6ea8568ca0d 100644 --- a/ghost/i18n/locales/ca/portal.json +++ b/ghost/i18n/locales/ca/portal.json @@ -15,6 +15,7 @@ "Account": "Compte", "Account details updated successfully": "", "Account settings": "Configuració del compte", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Després que finalitzi el període de prova gratuït, se't cobrarà el preu regular del nivell que hagis triat. Sempre pots cancel·lar abans d'això.", "Already a member?": "Ja ets membre?", "An error occurred": "", diff --git a/ghost/i18n/locales/context.json b/ghost/i18n/locales/context.json index 53a0af41a7c..4df693eecf8 100644 --- a/ghost/i18n/locales/context.json +++ b/ghost/i18n/locales/context.json @@ -6,6 +6,7 @@ "Account": "A label in Portal for your account area", "Account details updated successfully": "", "Account settings": "A label in Portal for your account settings", + "Add a personal note": "Becomes the field label for donations in Stripe", "Add comment": "Button text to post a comment", "Add context to your comment, share your name and expertise to foster a healthy discussion.": "Invitation to include additional info when commenting", "Add reply": "Button text to post your reply", diff --git a/ghost/i18n/locales/cs/portal.json b/ghost/i18n/locales/cs/portal.json index 2b455c2e34f..91b985cdeb8 100644 --- a/ghost/i18n/locales/cs/portal.json +++ b/ghost/i18n/locales/cs/portal.json @@ -15,6 +15,7 @@ "Account": "Účet", "Account details updated successfully": "", "Account settings": "Nastavení účtu", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Po skončení zkušební doby vám bude účtována běžná cena pro vybranou úroveň. Vždy můžete předtím zrušit odběr.", "Already a member?": "Již jste členem?", "An error occurred": "", diff --git a/ghost/i18n/locales/da/portal.json b/ghost/i18n/locales/da/portal.json index a41971f1bc6..1a910dd160b 100644 --- a/ghost/i18n/locales/da/portal.json +++ b/ghost/i18n/locales/da/portal.json @@ -15,6 +15,7 @@ "Account": "Konto", "Account details updated successfully": "Kontooplysningerne blev opdateret", "Account settings": "Kontoindstillinger", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Når din gratis prøveperiode udløber, vil du blive opkrævet den normale pris for det abonnement du har valgt. Du kan selvfølgelig altid annullere dit abonnement inden.", "Already a member?": "Er du allerede medlem?", "An error occurred": "Der opstod en fejl", diff --git a/ghost/i18n/locales/de-CH/portal.json b/ghost/i18n/locales/de-CH/portal.json index 814fe6d0dc7..7dc1b7aca39 100644 --- a/ghost/i18n/locales/de-CH/portal.json +++ b/ghost/i18n/locales/de-CH/portal.json @@ -15,6 +15,7 @@ "Account": "Konto", "Account details updated successfully": "", "Account settings": "Konto-Einstellungen", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Wenn das kostenlose Testabo endet, bezahlen Sie den regulären Preis für den gewählten Tarif. Sie können Ihr Abonnement jederzeit kündigen.", "Already a member?": "Bereits Mitglied?", "An error occurred": "", diff --git a/ghost/i18n/locales/de/portal.json b/ghost/i18n/locales/de/portal.json index 28506cb685d..ab48f8942c2 100644 --- a/ghost/i18n/locales/de/portal.json +++ b/ghost/i18n/locales/de/portal.json @@ -15,6 +15,7 @@ "Account": "Konto", "Account details updated successfully": "Kontodaten erfolgreich aktualisiert", "Account settings": "Konto-Einstellungen", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Wenn das kostenlose Testabo endet, bezahlst du den regulären Preis für den gewählten Tarif. Du kannst dein Abonnement jederzeit kündigen.", "Already a member?": "Bereits Mitglied?", "An error occurred": "Ein Fehler ist aufgetreten", diff --git a/ghost/i18n/locales/el/portal.json b/ghost/i18n/locales/el/portal.json index 6adf7581107..07b8446c345 100644 --- a/ghost/i18n/locales/el/portal.json +++ b/ghost/i18n/locales/el/portal.json @@ -15,6 +15,7 @@ "Account": "Λογαριασμός", "Account details updated successfully": "", "Account settings": "Ρυθμίσεις λογαριασμού", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Μετά το τέλος της δωρεάν δοκιμής, θα χρεωθείτε την κανονική τιμή για το επίπεδο που έχετε επιλέξει. Μπορείτε πάντα να ακυρώσετε πριν από τότε.", "Already a member?": "Ήδη μέλος;", "An error occurred": "", diff --git a/ghost/i18n/locales/en/portal.json b/ghost/i18n/locales/en/portal.json index e257f99d45d..6af88df00f6 100644 --- a/ghost/i18n/locales/en/portal.json +++ b/ghost/i18n/locales/en/portal.json @@ -15,6 +15,7 @@ "Account": "", "Account details updated successfully": "", "Account settings": "", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "", "Already a member?": "", "An error occurred": "", diff --git a/ghost/i18n/locales/eo/portal.json b/ghost/i18n/locales/eo/portal.json index 35d2076004d..a1d5d86b90c 100644 --- a/ghost/i18n/locales/eo/portal.json +++ b/ghost/i18n/locales/eo/portal.json @@ -15,6 +15,7 @@ "Account": "Konto", "Account details updated successfully": "", "Account settings": "Kontagordoj", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Post senpaga provo finiĝos, vi pagos la regulan prezon por la nivelo, kiun vi elektis. Vi ĉiam povas nuligi antaŭ tiam.", "Already a member?": "Ĉu membro jam?", "An error occurred": "", diff --git a/ghost/i18n/locales/es/portal.json b/ghost/i18n/locales/es/portal.json index feb711f4876..f03fd013123 100644 --- a/ghost/i18n/locales/es/portal.json +++ b/ghost/i18n/locales/es/portal.json @@ -15,6 +15,7 @@ "Account": "Cuenta", "Account details updated successfully": "Los detalles de la cuenta se actualizaron con éxito", "Account settings": "Configuración de la cuenta", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Después de que finalice el período de prueba gratuito, se te cobrará el precio regular del nivel que hayas elegido. Siempre puedes cancelar antes de eso.", "Already a member?": "¿Ya eres miembro?", "An error occurred": "Ocurrió un error", @@ -138,8 +139,8 @@ "Sign out": "Cerrar sesión", "Sign up": "Registrarse", "Signup error: Invalid link": "Error de registro: Enlace inválido", - "Something went wrong, please try again later.": "Algo salió mál, intenga de nuevo mas tarde.", "Signups from this email domain are currently restricted.": "", + "Something went wrong, please try again later.": "Algo salió mál, intenga de nuevo mas tarde.", "Sorry, no recommendations are available right now.": "Lo sentimos, no tenemos recomendaciones en este momento", "Sorry, that didn’t work.": "Lo siento, eso no funcionó.", "Spam complaints": "Quejas de spam", diff --git a/ghost/i18n/locales/et/portal.json b/ghost/i18n/locales/et/portal.json index 2537529a2db..384004593c5 100644 --- a/ghost/i18n/locales/et/portal.json +++ b/ghost/i18n/locales/et/portal.json @@ -15,6 +15,7 @@ "Account": "Konto", "Account details updated successfully": "", "Account settings": "Konto seaded", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Pärast tasuta prooviversiooni lõppu võetakse teilt tasu valitud taseme tavahinna eest. Saate alati enne seda tühistada.", "Already a member?": "Juba liige?", "An error occurred": "", diff --git a/ghost/i18n/locales/fa/portal.json b/ghost/i18n/locales/fa/portal.json index bec021a0eb1..071a5fcb33f 100644 --- a/ghost/i18n/locales/fa/portal.json +++ b/ghost/i18n/locales/fa/portal.json @@ -15,6 +15,7 @@ "Account": "حساب کاربری", "Account details updated successfully": "", "Account settings": "تنظیمات حساب کاربری", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "پس از این\u200cکه دوره رایکان شما پایان یابد، براساس بسته\u200cی انتخابی شما مبلغی از حساب شما برداشت می\u200cشود. شما همیشه می\u200cتوانید قبل از آن تاریخ، بسته\u200cی خود را تغییر و یا لغو کنید.", "Already a member?": "عضو هستید؟", "An error occurred": "", diff --git a/ghost/i18n/locales/fi/portal.json b/ghost/i18n/locales/fi/portal.json index 6fa19aebde7..5381abad42a 100644 --- a/ghost/i18n/locales/fi/portal.json +++ b/ghost/i18n/locales/fi/portal.json @@ -15,6 +15,7 @@ "Account": "Oma tili", "Account details updated successfully": "", "Account settings": "Tilin asetukset", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Kun ilmainen kokeilusi loppuu, sinulta veloitetaan valitsemasi tilauksen kuukausimaksu. Voit aina peruuttaa tilauksesi ennen tätä.", "Already a member?": "Oletko jo jäsen?", "An error occurred": "", diff --git a/ghost/i18n/locales/fr/portal.json b/ghost/i18n/locales/fr/portal.json index 9e27c5c9d75..1b324349e6e 100644 --- a/ghost/i18n/locales/fr/portal.json +++ b/ghost/i18n/locales/fr/portal.json @@ -15,6 +15,7 @@ "Account": "Compte", "Account details updated successfully": "Mise à jour réussie des données du compte", "Account settings": "Paramètres de compte", + "Add a personal note": "Ajouter une note personnelle", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "À la fin de la période d’essai gratuite, le prix normal de l’abonnement choisi sera facturé. Vous pourrez toujours l'annuler d’ici là.", "Already a member?": "Déjà abonné ?", "An error occurred": "Une erreur s'est produite", diff --git a/ghost/i18n/locales/gd/portal.json b/ghost/i18n/locales/gd/portal.json index ab106f71668..18cf4f7188a 100644 --- a/ghost/i18n/locales/gd/portal.json +++ b/ghost/i18n/locales/gd/portal.json @@ -15,6 +15,7 @@ "Account": "Cunntas", "Account details updated successfully": "Chaidh roghainnean a' chunntais ùrachadh gu soirbheachail", "Account settings": "Roghainnean", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Bidh agad ri pàigheadh nuair a dh’fhalbhachas an ùine air an tionndadh triail agad. Faodaidh tu ga sguir dheth ron a shin ge-tà.", "Already a member?": "’Eil thu nad bhall mar-thà?", "An error occurred": "Thachair mearachd", @@ -67,7 +68,7 @@ "Enter your name": "Cuir a-steach d' ainm", "Error": "Mearachd", "Expires {{expiryDate}}": "Falbhaidh an ùine air: {{expiryDate}}", -"Failed to cancel subscription, please try again": "Dh’fhàillig dùbhadh às an fho-sgrìobhaidh, feuch a-rithist", + "Failed to cancel subscription, please try again": "Dh’fhàillig dùbhadh às an fho-sgrìobhaidh, feuch a-rithist", "Failed to log in, please try again": "Dh’fhàillig clàradh a-steach, feuch a-rithist", "Failed to log out, please try again": "Dh’fhàillig clàradh a-mach, feuch a-rithist", "Failed to process checkout, please try again": "Dh'fhàillig a' cheannachd", diff --git a/ghost/i18n/locales/he/portal.json b/ghost/i18n/locales/he/portal.json index 1284f746057..28e06d78da1 100644 --- a/ghost/i18n/locales/he/portal.json +++ b/ghost/i18n/locales/he/portal.json @@ -15,6 +15,7 @@ "Account": "חשבון", "Account details updated successfully": "פרטי החשבון עודכנו בהצלחה", "Account settings": "הגדרות חשבון", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "לאחר תום תקופת הניסיון החינמית, תחויבו במחיר הרגיל של התוכנית שבחרתם. תוכלו לבטל בכל עת לפני כן.", "Already a member?": "כבר רשומים?", "An error occurred": "קרתה שגיאה", diff --git a/ghost/i18n/locales/hi/portal.json b/ghost/i18n/locales/hi/portal.json index 757c1c7c162..93758c36c07 100644 --- a/ghost/i18n/locales/hi/portal.json +++ b/ghost/i18n/locales/hi/portal.json @@ -15,6 +15,7 @@ "Account": "खाता", "Account details updated successfully": "", "Account settings": "खाता सेटिंग्स", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "मुफ्त परीक्षण समाप्त होने के बाद, आपको आपके द्वारा चुने गए स्तर के लिए नियमित कीमत पर शुल्क लिया जाएगा। आप तब तक किसी भी समय रद्द कर सकते हैं।", "Already a member?": "पहले से ही सदस्य हैं?", "An error occurred": "", diff --git a/ghost/i18n/locales/hr/portal.json b/ghost/i18n/locales/hr/portal.json index b8991fe8249..b87a1f451c5 100644 --- a/ghost/i18n/locales/hr/portal.json +++ b/ghost/i18n/locales/hr/portal.json @@ -15,6 +15,7 @@ "Account": "Vaš račun", "Account details updated successfully": "", "Account settings": "Podešavanje vašeg računa", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Nakon isteka probnog perioda, izvršit će se naplata odabranog plana pretplate. Uvijek možete otkazati pretplatu prije toga.", "Already a member?": "Već imate račun?", "An error occurred": "", diff --git a/ghost/i18n/locales/hu/portal.json b/ghost/i18n/locales/hu/portal.json index a8a61c1e2bb..4a3b98a237d 100644 --- a/ghost/i18n/locales/hu/portal.json +++ b/ghost/i18n/locales/hu/portal.json @@ -15,6 +15,7 @@ "Account": "Fiók", "Account details updated successfully": "", "Account settings": "Fiók beállítások", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Az ingyenes próbaidőszak lejárta után a kiválasztott csomag normál díját fogjuk felszámolni. A feliratkozás bármikor ingyenesen lemondható a próbaidőszak alatt.", "Already a member?": "Már van fiókja?", "An error occurred": "", diff --git a/ghost/i18n/locales/id/portal.json b/ghost/i18n/locales/id/portal.json index cee47dcafd9..00e9e3a7782 100644 --- a/ghost/i18n/locales/id/portal.json +++ b/ghost/i18n/locales/id/portal.json @@ -15,6 +15,7 @@ "Account": "Akun", "Account details updated successfully": "Detail akun berhasil diperbarui", "Account settings": "Pengaturan akun", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Setelah percobaan gratis berakhir, Anda akan dikenai harga normal untuk tingkatan yang dipilih. Anda selalu dapat membatalkannya sebelum masa percobaan gratis berakhir.", "Already a member?": "Sudah menjadi anggota?", "An error occurred": "Terjadi kesalahan", diff --git a/ghost/i18n/locales/is/portal.json b/ghost/i18n/locales/is/portal.json index 296b11a2257..7f7fc2579f3 100644 --- a/ghost/i18n/locales/is/portal.json +++ b/ghost/i18n/locales/is/portal.json @@ -15,6 +15,7 @@ "Account": "Aðgangur", "Account details updated successfully": "", "Account settings": "Aðgangsstillingar", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Þegar prufutímabili lýkur muntu greiða venjulegt verð í samræmi við áskriftarleiðina sem þú valdir. Þú getur ávallt sagt upp áskriftinni áður en til þess kemur.", "Already a member?": "Ertu nú þegar með áskrift?", "An error occurred": "", diff --git a/ghost/i18n/locales/it/portal.json b/ghost/i18n/locales/it/portal.json index eeeefa0a41f..ea724a75a6b 100644 --- a/ghost/i18n/locales/it/portal.json +++ b/ghost/i18n/locales/it/portal.json @@ -15,6 +15,7 @@ "Account": "Account", "Account details updated successfully": "Dettagli dell'account aggiornati con successo", "Account settings": "Impostazioni account", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Al termine della prova gratuita, ti verrà addebitato il prezzo regolare del piano scelto. Puoi annullare in qualsiasi momento prima della scadenza.", "Already a member?": "Sei già iscritto?", "An error occurred": "Si è verificato un errore", diff --git a/ghost/i18n/locales/ja/portal.json b/ghost/i18n/locales/ja/portal.json index d4c81885c1a..6b340537dc9 100644 --- a/ghost/i18n/locales/ja/portal.json +++ b/ghost/i18n/locales/ja/portal.json @@ -15,6 +15,7 @@ "Account": "アカウント", "Account details updated successfully": "アカウント詳細が更新されました", "Account settings": "アカウント設定", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "無料期間が終了すると、選択したプランの通常価格が請求されます。それまではいつでもキャンセルできます。", "Already a member?": "すでに会員ですか?", "An error occurred": "エラーが発生しました", diff --git a/ghost/i18n/locales/ko/portal.json b/ghost/i18n/locales/ko/portal.json index 48361859426..66329c567e6 100644 --- a/ghost/i18n/locales/ko/portal.json +++ b/ghost/i18n/locales/ko/portal.json @@ -15,6 +15,7 @@ "Account": "계정", "Account details updated successfully": "계정 정보가 성공적으로 업데이트되었어요", "Account settings": "계정 설정", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "무료 체험이 종료되면 선택한 요금제의 정상 가격이 청구돼요. 그 전에 언제든지 취소할 수 있어요.", "Already a member?": "이미 회원이신가요?", "An error occurred": "오류가 발생했어요", diff --git a/ghost/i18n/locales/kz/portal.json b/ghost/i18n/locales/kz/portal.json index 9d4c044f1eb..bf0689848f6 100644 --- a/ghost/i18n/locales/kz/portal.json +++ b/ghost/i18n/locales/kz/portal.json @@ -15,6 +15,7 @@ "Account": "Аккаунт", "Account details updated successfully": "", "Account settings": "Аккаунт баптаулары", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Тегін сынақ мерзімі аяқталғаннан кейін таңдаған деңгейіңіз үшін қалыпты баға төленеді. Оған дейін әрқашан бас тартуға болады.", "Already a member?": "Аккаунт бар ма?", "An error occurred": "", diff --git a/ghost/i18n/locales/lt/portal.json b/ghost/i18n/locales/lt/portal.json index 0c8a30b80d3..189146d46c6 100644 --- a/ghost/i18n/locales/lt/portal.json +++ b/ghost/i18n/locales/lt/portal.json @@ -15,6 +15,7 @@ "Account": "Paskyra", "Account details updated successfully": "", "Account settings": "Paskyros nustatymai", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Pasibaigus nemokamam bandomajam laikotarpiui, bus nuskaičiuota įprasta pasirinkto prenumeratos tipo kaina. Bet kuriuo metu galite atšaukti prenumeratą.", "Already a member?": "Jau turite paskyrą?", "An error occurred": "", diff --git a/ghost/i18n/locales/lv/portal.json b/ghost/i18n/locales/lv/portal.json index 34961f167aa..3550b19fcd4 100644 --- a/ghost/i18n/locales/lv/portal.json +++ b/ghost/i18n/locales/lv/portal.json @@ -15,6 +15,7 @@ "Account": "Konts", "Account details updated successfully": "Konta informācija ir veiksmīgi atjaunināta", "Account settings": "Konta iestatījumi", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Pēc bezmaksas izmēģinājuma perioda beigām no jums tiks iekasēta parastā cena par jūsu izvēlēto līmeni. Jūs vienmēr varat atcelt pirms tam.", "Already a member?": "Vai jau esat dalībnieks?", "An error occurred": "Radās kļūda", diff --git a/ghost/i18n/locales/mk/portal.json b/ghost/i18n/locales/mk/portal.json index c737ef4fa1f..a581160953c 100644 --- a/ghost/i18n/locales/mk/portal.json +++ b/ghost/i18n/locales/mk/portal.json @@ -15,6 +15,7 @@ "Account": "Сметка", "Account details updated successfully": "", "Account settings": "Поставки", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Откако пробниот период ќе истече, ќе ви биде наплатена регуларната цена за пакетот кој сте го избрале. Секогаш можете да откажете претходно.", "Already a member?": "Веќе сте член", "An error occurred": "", diff --git a/ghost/i18n/locales/mn/portal.json b/ghost/i18n/locales/mn/portal.json index 811b5b80241..803613583f0 100644 --- a/ghost/i18n/locales/mn/portal.json +++ b/ghost/i18n/locales/mn/portal.json @@ -15,6 +15,7 @@ "Account": "Бүртгэл", "Account details updated successfully": "", "Account settings": "Бүртгэлийн тохиргоо", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Үнэгүй туршилтын хугацаа дуусахад таны данснаас сонгосон багцын үнэ хасагдана. Гэвч та өмнө нь цуцлах боломжтой.", "Already a member?": "Бүртгэлтэй юу?", "An error occurred": "", diff --git a/ghost/i18n/locales/ms/portal.json b/ghost/i18n/locales/ms/portal.json index 5263d6e6e8f..5acbca71deb 100644 --- a/ghost/i18n/locales/ms/portal.json +++ b/ghost/i18n/locales/ms/portal.json @@ -15,6 +15,7 @@ "Account": "Akaun", "Account details updated successfully": "", "Account settings": "Tetapan akaun", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Selepas tempoh percubaan percuma tamat, anda akan dicaj harga biasa untuk peringkat yang anda pilih. Anda sentiasa boleh membatalkan sebelum itu.", "Already a member?": "Sudah menjadi ahli?", "An error occurred": "", diff --git a/ghost/i18n/locales/ne/portal.json b/ghost/i18n/locales/ne/portal.json index e257f99d45d..6af88df00f6 100644 --- a/ghost/i18n/locales/ne/portal.json +++ b/ghost/i18n/locales/ne/portal.json @@ -15,6 +15,7 @@ "Account": "", "Account details updated successfully": "", "Account settings": "", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "", "Already a member?": "", "An error occurred": "", diff --git a/ghost/i18n/locales/nl/portal.json b/ghost/i18n/locales/nl/portal.json index b3ef47ff292..7f2bb3aff45 100644 --- a/ghost/i18n/locales/nl/portal.json +++ b/ghost/i18n/locales/nl/portal.json @@ -15,6 +15,7 @@ "Account": "Account", "Account details updated successfully": "Accountgegevens succesvol bijgewerkt", "Account settings": "Gegevens", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Na de proefperiode zal het normale tarief in rekening worden gebracht voor het door jou gekozen abonnement.", "Already a member?": "Al lid?", "An error occurred": "Er is een fout opgetreden", diff --git a/ghost/i18n/locales/nn/portal.json b/ghost/i18n/locales/nn/portal.json index 8a1c15dcfd5..5c495205f89 100644 --- a/ghost/i18n/locales/nn/portal.json +++ b/ghost/i18n/locales/nn/portal.json @@ -15,6 +15,7 @@ "Account": "Brukar", "Account details updated successfully": "", "Account settings": "Brukarinnstillingar", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Når den gratis prøveperioden er over vil du bli belasta den normale prisen for abonnementet du har vald. Du kan alltids avslutta abonnementet au.", "Already a member?": "Allereie medlem?", "An error occurred": "", diff --git a/ghost/i18n/locales/no/portal.json b/ghost/i18n/locales/no/portal.json index cfbfea668b5..7088a32c2b4 100644 --- a/ghost/i18n/locales/no/portal.json +++ b/ghost/i18n/locales/no/portal.json @@ -15,6 +15,7 @@ "Account": "Konto", "Account details updated successfully": "Kontodetaljer oppdatert", "Account settings": "Kontoinnstillinger", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Etter at prøveperioden er over, vil du bli belastet den vanlige prisen for nivået du har valgt. Du kan alltid avbryte før det.", "Already a member?": "Allerede medlem?", "An error occurred": "En feil oppstod", diff --git a/ghost/i18n/locales/pl/portal.json b/ghost/i18n/locales/pl/portal.json index 979a35b66d9..d9c2fb2c291 100644 --- a/ghost/i18n/locales/pl/portal.json +++ b/ghost/i18n/locales/pl/portal.json @@ -15,6 +15,7 @@ "Account": "Konto", "Account details updated successfully": "", "Account settings": "Ustawienia konta", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Po zakończeniu okresu próbnego zostanie naliczona regularna opłata za wybrany poziom subskrypcji. Pamiętaj, że możesz anulować subskrypcję zanim to nastąpi.", "Already a member?": "Masz już konto?", "An error occurred": "", diff --git a/ghost/i18n/locales/pt-BR/portal.json b/ghost/i18n/locales/pt-BR/portal.json index dbe697583fd..1aa4b0b6284 100644 --- a/ghost/i18n/locales/pt-BR/portal.json +++ b/ghost/i18n/locales/pt-BR/portal.json @@ -15,6 +15,7 @@ "Account": "Conta", "Account details updated successfully": "Detalhes da conta atualizados com sucesso", "Account settings": "Configurações de conta", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Quando o teste grátis acabar, será cobrado o preço normal do plano que você escolheu. Você sempre pode cancelar antes.", "Already a member?": "Já é membro?", "An error occurred": "Ocorreu um erro", diff --git a/ghost/i18n/locales/pt/portal.json b/ghost/i18n/locales/pt/portal.json index ea170a9ffde..2ccdacb0d37 100644 --- a/ghost/i18n/locales/pt/portal.json +++ b/ghost/i18n/locales/pt/portal.json @@ -15,6 +15,7 @@ "Account": "Conta", "Account details updated successfully": "", "Account settings": "Definições de conta", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Após o término do teste grátis, será cobrado o valor normal para o nível escolhido. Poderá sempre cancelar até esse momento, caso não deseje ser cobrado.", "Already a member?": "Já é membro?", "An error occurred": "", diff --git a/ghost/i18n/locales/ro/portal.json b/ghost/i18n/locales/ro/portal.json index 26eefd68b4d..7dc4af80f81 100644 --- a/ghost/i18n/locales/ro/portal.json +++ b/ghost/i18n/locales/ro/portal.json @@ -15,6 +15,7 @@ "Account": "Cont", "Account details updated successfully": "", "Account settings": "Setări cont", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "După ce expiră perioada de încercare gratuită, vei fi taxat la prețul obișnuit pentru nivelul pe care l-ai ales. Poți anula în orice moment înainte de aceasta.", "Already a member?": "Ești deja membru?", "An error occurred": "", diff --git a/ghost/i18n/locales/ru/portal.json b/ghost/i18n/locales/ru/portal.json index 3ee77a4035e..3b03dca4343 100644 --- a/ghost/i18n/locales/ru/portal.json +++ b/ghost/i18n/locales/ru/portal.json @@ -15,6 +15,7 @@ "Account": "Аккаунт", "Account details updated successfully": "", "Account settings": "Настройки аккаунта", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "После окончания бесплатного периода с вас будут взиматься регулярные платежи по выбранному тарифу. До этого момента вы можете отменить подписку в любое время.", "Already a member?": "Уже есть аккаунт?", "An error occurred": "", diff --git a/ghost/i18n/locales/si/portal.json b/ghost/i18n/locales/si/portal.json index 40f351b198b..e8cc91a2bf0 100644 --- a/ghost/i18n/locales/si/portal.json +++ b/ghost/i18n/locales/si/portal.json @@ -15,6 +15,7 @@ "Account": "ගිණුම", "Account details updated successfully": "", "Account settings": "ගිණුම් සැකසුම්", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "නොමිලයේ ලබාදෙන අත්හදාබැලීමේ කාලය අවසන් වූ පසුව, ඔබ තෝරාගන්නා ලද tier එක අනුව එහි සාමාන්\u200dයය මිල ගණන් අය වනු ඇත. ඊට පෙර ඕනෑම අවස්ථාවක මෙය අවලංගු කිරීමට ඔබට හැකියාව ඇත.", "Already a member?": "දැනටමත් සාමාජිකයෙක්ද?", "An error occurred": "", diff --git a/ghost/i18n/locales/sk/portal.json b/ghost/i18n/locales/sk/portal.json index 532452826a0..7bcb15e7afc 100644 --- a/ghost/i18n/locales/sk/portal.json +++ b/ghost/i18n/locales/sk/portal.json @@ -15,6 +15,7 @@ "Account": "Účet", "Account details updated successfully": "", "Account settings": "Nastavenia účtu", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Po uplynutí skúšobného obdobia vám bute účtovaná bežná cena pre vybrunú úrovenň. Vždy to môžte pred tým zrušiť", "Already a member?": "Ste už členom?", "An error occurred": "", diff --git a/ghost/i18n/locales/sl/portal.json b/ghost/i18n/locales/sl/portal.json index 71e0a58a663..84631f7ec04 100644 --- a/ghost/i18n/locales/sl/portal.json +++ b/ghost/i18n/locales/sl/portal.json @@ -15,6 +15,7 @@ "Account": "Račun", "Account details updated successfully": "", "Account settings": "Nastavitve računa", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Po koncu brezplačnega preizkusa se vam zaračuna redna cena za izbrano stopnjo. Pred tem jo lahko vedno prekličete.", "Already a member?": "Ste že član?", "An error occurred": "", diff --git a/ghost/i18n/locales/sq/portal.json b/ghost/i18n/locales/sq/portal.json index 14fd540a0cd..aaab0ed6828 100644 --- a/ghost/i18n/locales/sq/portal.json +++ b/ghost/i18n/locales/sq/portal.json @@ -15,6 +15,7 @@ "Account": "Llogaria", "Account details updated successfully": "", "Account settings": "Cilësimet e llogarisë", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Pasi të përfundojë një provë falas, ju do të tarifoheni me çmimin e rregullt për nivelin që keni zgjedhur. Mund të anuloni gjithmonë përpara kësaj.", "Already a member?": "Tashme nje antar?", "An error occurred": "", diff --git a/ghost/i18n/locales/sr-Cyrl/portal.json b/ghost/i18n/locales/sr-Cyrl/portal.json index 766fbc1cf10..f85e3f2f01c 100644 --- a/ghost/i18n/locales/sr-Cyrl/portal.json +++ b/ghost/i18n/locales/sr-Cyrl/portal.json @@ -15,6 +15,7 @@ "Account": "Налог", "Account details updated successfully": "", "Account settings": "Подешавања налога", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Након што истекне бесплатан пробни период, наплатиће вам се редовна цена за ниво који сте одабрали. Увек можете отказати пре тог рока.", "Already a member?": "Већ сте члан?", "An error occurred": "", diff --git a/ghost/i18n/locales/sr/portal.json b/ghost/i18n/locales/sr/portal.json index c0c3a6cd6ff..af4f396fdb9 100644 --- a/ghost/i18n/locales/sr/portal.json +++ b/ghost/i18n/locales/sr/portal.json @@ -15,6 +15,7 @@ "Account": "Nalog", "Account details updated successfully": "", "Account settings": "Podešavanja naloga", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Nakon što besplatni probni period istekne, izvršiće se naplata po regularnoj ceni za nivo koji ste izabrali. Uvek možete da otkažete pretplatu pre toga.", "Already a member?": "Već ste član?", "An error occurred": "", diff --git a/ghost/i18n/locales/sv/portal.json b/ghost/i18n/locales/sv/portal.json index d7b0f7fdaea..a940cd950c4 100644 --- a/ghost/i18n/locales/sv/portal.json +++ b/ghost/i18n/locales/sv/portal.json @@ -15,6 +15,7 @@ "Account": "Konto", "Account details updated successfully": "Kontodetaljer uppdaterade framgångsrikt", "Account settings": "Kontoinställningar", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Efter att en gratis provperiod avslutas debiteras du det ordinarie priset för den nivå du har valt. Du kan alltid avbryta innan dess.", "Already a member?": "Redan medlem?", "An error occurred": "Ett fel inträffade", diff --git a/ghost/i18n/locales/sw/portal.json b/ghost/i18n/locales/sw/portal.json index 665d0e5b33d..e57874361f7 100644 --- a/ghost/i18n/locales/sw/portal.json +++ b/ghost/i18n/locales/sw/portal.json @@ -15,6 +15,7 @@ "Account": "Akaunti", "Account details updated successfully": "", "Account settings": "Mipangilio ya akaunti", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Baada ya kipindi cha majaribio bila malipo kukamilika, utatozwa bei ya kawaida kwa kiwango ulichochagua. Unaweza kughairi kabla ya hapo.", "Already a member?": "Tayari ni mwanachama?", "An error occurred": "", diff --git a/ghost/i18n/locales/ta/portal.json b/ghost/i18n/locales/ta/portal.json index 9e710725ba1..3a160bd0730 100644 --- a/ghost/i18n/locales/ta/portal.json +++ b/ghost/i18n/locales/ta/portal.json @@ -15,6 +15,7 @@ "Account": "கணக்கு", "Account details updated successfully": "கணக்கு விவரங்கள் வெற்றிகரமாக புதுப்பிக்கப்பட்டன", "Account settings": "கணக்கு அமைப்புகள்", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "இலவச சோதனை முடிந்தபின், நீங்கள் தேர்ந்தெடுத்த அடுக்குக்கான வழக்கமான விலை உங்களிடம் வசூலிக்கப்படும். அதற்கு முன் எப்போது வேண்டுமானாலும் நீங்கள் ரத்து செய்யலாம்.", "Already a member?": "ஏற்கனவே உறுப்பினரா?", "An error occurred": "ஒரு பிழை ஏற்பட்டது", diff --git a/ghost/i18n/locales/th/portal.json b/ghost/i18n/locales/th/portal.json index 1c51f76cea2..1e2cb244f1f 100644 --- a/ghost/i18n/locales/th/portal.json +++ b/ghost/i18n/locales/th/portal.json @@ -15,6 +15,7 @@ "Account": "บัญชี", "Account details updated successfully": "", "Account settings": "ตั้งค่าบัญชี", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "หลังจากช่วงทดลองใช้ฟรีสิ้นสุดลง, คุณจะถูกเรียกเก็บเงินตามราคาปกติตามระดับที่คุณเลือกไว้ คุณสามารถยกเลิกก่อนเวลาดังกล่าวได้เสมอ", "Already a member?": "เป็นสมาชิกอยู่แล้ว?", "An error occurred": "", diff --git a/ghost/i18n/locales/tr/portal.json b/ghost/i18n/locales/tr/portal.json index 5fb726e52d7..b92cfa3a1af 100644 --- a/ghost/i18n/locales/tr/portal.json +++ b/ghost/i18n/locales/tr/portal.json @@ -15,6 +15,7 @@ "Account": "Hesap", "Account details updated successfully": "Hesap bilgileri başarıyla güncellendi", "Account settings": "Hesap ayarları", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Ücretsiz deneme süresi bittikten sonra seçtiğin kategorinin normal fiyatından ücretlendirileceksin. O zamana kadar her an iptal edebilirsin.", "Already a member?": "Zaten üye misin?", "An error occurred": "Bir hata meydana geldi", diff --git a/ghost/i18n/locales/uk/portal.json b/ghost/i18n/locales/uk/portal.json index cce344becbb..6db1cc157ec 100644 --- a/ghost/i18n/locales/uk/portal.json +++ b/ghost/i18n/locales/uk/portal.json @@ -15,6 +15,7 @@ "Account": "Oбліковий запис", "Account details updated successfully": "Дані облікового запису успішно оновлено", "Account settings": "Налаштування облікового запису", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Після закінчення безплатного періоду, з тебе буде стягнена вартість за обраний тариф. Ти завжди можеш скасувати послугу до цього часу.", "Already a member?": "Вже є учасником?", "An error occurred": "Сталася помилка", diff --git a/ghost/i18n/locales/ur/portal.json b/ghost/i18n/locales/ur/portal.json index 8482056d87a..49b5f1abcd4 100644 --- a/ghost/i18n/locales/ur/portal.json +++ b/ghost/i18n/locales/ur/portal.json @@ -15,6 +15,7 @@ "Account": "اکاؤنٹ", "Account details updated successfully": "", "Account settings": "اکاؤنٹ کی ترتیبات", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "جب مفت ڈھانچا ختم ہو جائے گا، آپکو اس ڈھانچے کے لئے عام قیمت چارج ہوگی جس پر آپ نے فیصلہ کیا ہوا ہے۔ آپ ہمیشہ اس سے پہلے منسلک کر سکتے ہیں۔", "Already a member?": "پہلے ہی ممبر ہیں؟", "An error occurred": "", diff --git a/ghost/i18n/locales/uz/portal.json b/ghost/i18n/locales/uz/portal.json index 615fc3506e6..d9dbb4cc826 100644 --- a/ghost/i18n/locales/uz/portal.json +++ b/ghost/i18n/locales/uz/portal.json @@ -15,6 +15,7 @@ "Account": "Hisob", "Account details updated successfully": "", "Account settings": "Hisob sozlamalari", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Bepul sinov muddati tugagandan so'ng, siz tanlagan daraja uchun odatdagi narxdan undiriladi. Undan oldin istalgan vaqtda bekor qilishingiz mumkin.", "Already a member?": "Allaqachon a'zomisiz?", "An error occurred": "", diff --git a/ghost/i18n/locales/vi/portal.json b/ghost/i18n/locales/vi/portal.json index 5e55562211b..8cbd4a77f0f 100644 --- a/ghost/i18n/locales/vi/portal.json +++ b/ghost/i18n/locales/vi/portal.json @@ -15,6 +15,7 @@ "Account": "Tài khoản", "Account details updated successfully": "Đã cập nhật chi tiết tài khoản thành công", "Account settings": "Cài đặt", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Sau khi hết hạn đọc thử miễn phí, sẽ tính phí với gói thành viên mà bạn đã chọn. Bạn có thể hủy gói trước khi hết hạn đọc thử.", "Already a member?": "Bạn đã là thành viên?", "An error occurred": "Xảy ra lỗi", diff --git a/ghost/i18n/locales/zh-Hant/portal.json b/ghost/i18n/locales/zh-Hant/portal.json index 2b8746590a3..e9d946337da 100644 --- a/ghost/i18n/locales/zh-Hant/portal.json +++ b/ghost/i18n/locales/zh-Hant/portal.json @@ -15,6 +15,7 @@ "Account": "帳號", "Account details updated successfully": "帳號資訊已更新成功", "Account settings": "帳號設定", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "免費試用結束後,您將支付所選方案的定價金額。在此之前,您可以隨時取消。", "Already a member?": "已經是會員了?", "An error occurred": "錯誤發生", diff --git a/ghost/i18n/locales/zh/portal.json b/ghost/i18n/locales/zh/portal.json index 146f8775056..a3b5cb218df 100644 --- a/ghost/i18n/locales/zh/portal.json +++ b/ghost/i18n/locales/zh/portal.json @@ -15,6 +15,7 @@ "Account": "账户", "Account details updated successfully": "", "Account settings": "账户设置", + "Add a personal note": "", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "免费试用结束后,您将被收取所选套餐的标定价格。在此之前,您可以随时取消。", "Already a member?": "已经是会员了?", "An error occurred": "", diff --git a/ghost/members-api/lib/controllers/RouterController.js b/ghost/members-api/lib/controllers/RouterController.js index e787698c153..28edb275903 100644 --- a/ghost/members-api/lib/controllers/RouterController.js +++ b/ghost/members-api/lib/controllers/RouterController.js @@ -478,6 +478,7 @@ module.exports = class RouterController { ...data }); } else if (type === 'donation') { + options.personalNoteText = req.body.personalNoteText ?? 'Add a personal note' response = await this._createDonationCheckoutSession(options); } diff --git a/ghost/payments/lib/PaymentsService.js b/ghost/payments/lib/PaymentsService.js index 8d80dcf09a6..67c3e1ea822 100644 --- a/ghost/payments/lib/PaymentsService.js +++ b/ghost/payments/lib/PaymentsService.js @@ -122,19 +122,20 @@ class PaymentsService { * * @returns {Promise} */ - async getDonationPaymentLink({member, metadata, successUrl, cancelUrl, email, isAuthenticated}) { + async getDonationPaymentLink({member, metadata, successUrl, cancelUrl, email, isAuthenticated, personalNoteText}) { let customer = null; if (member && isAuthenticated) { customer = await this.getCustomerForMember(member); } - const data = { priceId: (await this.getPriceForDonations()).id, metadata, successUrl: successUrl, cancelUrl: cancelUrl, customer, - customerEmail: !customer && email ? email : null + customerEmail: !customer && email ? email : null, + personalNoteText: personalNoteText || 'Add a personal note' + }; const session = await this.stripeAPIService.createDonationCheckoutSession(data); diff --git a/ghost/stripe/lib/StripeAPI.js b/ghost/stripe/lib/StripeAPI.js index 2977422925c..8334e0ad8d4 100644 --- a/ghost/stripe/lib/StripeAPI.js +++ b/ghost/stripe/lib/StripeAPI.js @@ -516,10 +516,11 @@ module.exports = class StripeAPI { * @param {string} options.cancelUrl * @param {string} [options.customer] * @param {string} [options.customerEmail] + * @param {string} [options.personalNoteText] * * @returns {Promise} */ - async createDonationCheckoutSession({priceId, successUrl, cancelUrl, metadata, customer, customerEmail}) { + async createDonationCheckoutSession({priceId, successUrl, cancelUrl, metadata, customer, customerEmail, personalNoteText}) { await this._rateLimitBucket.throttle(); /** @@ -563,7 +564,7 @@ module.exports = class StripeAPI { key: 'donation_message', label: { type: 'custom', - custom: 'Add a personal note' + custom: personalNoteText || 'Add a personal note' }, type: 'text', optional: true From 727b7157dfb652833712d3ed99ec2be85a717d7d Mon Sep 17 00:00:00 2001 From: Cathy Sarisky Date: Wed, 12 Feb 2025 14:52:41 -0500 Subject: [PATCH 2/6] dangit lint --- ghost/members-api/lib/controllers/RouterController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ghost/members-api/lib/controllers/RouterController.js b/ghost/members-api/lib/controllers/RouterController.js index 28edb275903..6e838514e2c 100644 --- a/ghost/members-api/lib/controllers/RouterController.js +++ b/ghost/members-api/lib/controllers/RouterController.js @@ -478,7 +478,7 @@ module.exports = class RouterController { ...data }); } else if (type === 'donation') { - options.personalNoteText = req.body.personalNoteText ?? 'Add a personal note' + options.personalNoteText = req.body.personalNoteText ?? 'Add a personal note'; response = await this._createDonationCheckoutSession(options); } From cefac3d255bb77ca3512cb11619b23f0b857e662 Mon Sep 17 00:00:00 2001 From: Cathy Sarisky Date: Wed, 12 Feb 2025 15:26:36 -0500 Subject: [PATCH 3/6] fix accidentally duplicated SL key, minor lint, add validation. --- ghost/i18n/locales/sl/portal.json | 1 - ghost/members-api/lib/controllers/RouterController.js | 8 +++++++- ghost/payments/lib/PaymentsService.js | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ghost/i18n/locales/sl/portal.json b/ghost/i18n/locales/sl/portal.json index 8c9194f0467..b62bc172c25 100644 --- a/ghost/i18n/locales/sl/portal.json +++ b/ghost/i18n/locales/sl/portal.json @@ -16,7 +16,6 @@ "Account details updated successfully": "Podatki o računu so bili uspešno posodobljeni", "Account settings": "Nastavitve računa", "Add a personal note": "", - "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Po koncu brezplačnega preizkusa se vam zaračuna redna cena za izbrano stopnjo. Pred tem jo lahko vedno prekličete.", "After a free trial ends, you will be charged the regular price for the tier you've chosen. You can always cancel before then.": "Po koncu brezplačnega preizkusa se vam zaračuna redna cena za izbran paket. Pred tem jo lahko vedno prekličete.", "Already a member?": "Ste že član?", "An error occurred": "Prišlo je do napake", diff --git a/ghost/members-api/lib/controllers/RouterController.js b/ghost/members-api/lib/controllers/RouterController.js index 6e838514e2c..ebbaf6d316d 100644 --- a/ghost/members-api/lib/controllers/RouterController.js +++ b/ghost/members-api/lib/controllers/RouterController.js @@ -478,7 +478,13 @@ module.exports = class RouterController { ...data }); } else if (type === 'donation') { - options.personalNoteText = req.body.personalNoteText ?? 'Add a personal note'; + const rawText = req.body.personalNoteText; + if (typeof rawText !== 'string' || rawText.length > 255) { + throw new BadRequestError({ + message: 'Invalid personalNoteText, possibly an i18n error.' + }) + } + options.personalNoteText = rawText ?? 'Add a personal note'; response = await this._createDonationCheckoutSession(options); } diff --git a/ghost/payments/lib/PaymentsService.js b/ghost/payments/lib/PaymentsService.js index 67c3e1ea822..d59ced23cc4 100644 --- a/ghost/payments/lib/PaymentsService.js +++ b/ghost/payments/lib/PaymentsService.js @@ -127,6 +127,7 @@ class PaymentsService { if (member && isAuthenticated) { customer = await this.getCustomerForMember(member); } + const data = { priceId: (await this.getPriceForDonations()).id, metadata, From 442a3ac30c32325e6e185beea3fb17fb30eea702 Mon Sep 17 00:00:00 2001 From: Cathy Sarisky Date: Wed, 12 Feb 2025 15:34:24 -0500 Subject: [PATCH 4/6] lint --- ghost/members-api/lib/controllers/RouterController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ghost/members-api/lib/controllers/RouterController.js b/ghost/members-api/lib/controllers/RouterController.js index ebbaf6d316d..00f9d1ee722 100644 --- a/ghost/members-api/lib/controllers/RouterController.js +++ b/ghost/members-api/lib/controllers/RouterController.js @@ -482,7 +482,7 @@ module.exports = class RouterController { if (typeof rawText !== 'string' || rawText.length > 255) { throw new BadRequestError({ message: 'Invalid personalNoteText, possibly an i18n error.' - }) + }); } options.personalNoteText = rawText ?? 'Add a personal note'; response = await this._createDonationCheckoutSession(options); From 65e9cfc928b7326292915c234b8441d34e4afc34 Mon Sep 17 00:00:00 2001 From: Cathy Sarisky Date: Wed, 12 Feb 2025 15:40:38 -0500 Subject: [PATCH 5/6] validation broke the endpoint, oops. --- ghost/members-api/lib/controllers/RouterController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ghost/members-api/lib/controllers/RouterController.js b/ghost/members-api/lib/controllers/RouterController.js index 00f9d1ee722..e84dffd0a8d 100644 --- a/ghost/members-api/lib/controllers/RouterController.js +++ b/ghost/members-api/lib/controllers/RouterController.js @@ -479,7 +479,7 @@ module.exports = class RouterController { }); } else if (type === 'donation') { const rawText = req.body.personalNoteText; - if (typeof rawText !== 'string' || rawText.length > 255) { + if (rawText && typeof rawText !== 'string' || rawText.length > 255) { throw new BadRequestError({ message: 'Invalid personalNoteText, possibly an i18n error.' }); From 08e26a040703aa274ea306fd03d68f4ca1308fe3 Mon Sep 17 00:00:00 2001 From: Cathy Sarisky Date: Wed, 12 Feb 2025 17:35:16 -0500 Subject: [PATCH 6/6] grrrr --- ghost/members-api/lib/controllers/RouterController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ghost/members-api/lib/controllers/RouterController.js b/ghost/members-api/lib/controllers/RouterController.js index e84dffd0a8d..687ff383b31 100644 --- a/ghost/members-api/lib/controllers/RouterController.js +++ b/ghost/members-api/lib/controllers/RouterController.js @@ -478,7 +478,7 @@ module.exports = class RouterController { ...data }); } else if (type === 'donation') { - const rawText = req.body.personalNoteText; + const rawText = req.body.personalNoteText || 'Add a personal note'; if (rawText && typeof rawText !== 'string' || rawText.length > 255) { throw new BadRequestError({ message: 'Invalid personalNoteText, possibly an i18n error.'