From d815bc81b78e3f8beeb7468f13df797af16f248d Mon Sep 17 00:00:00 2001
From: Duy <104808921+honhatduy@users.noreply.github.com>
Date: Wed, 27 May 2026 07:51:05 +0700
Subject: [PATCH 01/10] Update comments.json
---
ghost/i18n/locales/vi/comments.json | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/ghost/i18n/locales/vi/comments.json b/ghost/i18n/locales/vi/comments.json
index bd18c3b9322..42f24d1286c 100644
--- a/ghost/i18n/locales/vi/comments.json
+++ b/ghost/i18n/locales/vi/comments.json
@@ -12,7 +12,7 @@
"Already a member?": "Đã là thành viên?",
"Anonymous": "Ẩn danh",
"Are you sure?": "Bạn có chắc không?",
- "Back": "",
+ "Back": "Quay lại",
"Become a member of {publication} to start commenting.": "Trở thành thành viên của {publication} để có thể bình luận.",
"Become a paid member of {publication} to start commenting.": "Trở thành thành viên trả phí của {publication} để có thể bình luận.",
"Best": "Hay nhất",
@@ -25,7 +25,7 @@
"Deleted member": "Thành viên đã xóa",
"Deleting": "Đang xóa",
"Discussion": "Thảo luận",
- "Dislike": "",
+ "Dislike": "Không thích",
"Edit": "Sửa",
"Edit this comment": "Sửa bình luận này",
"edited": "đã sửa",
@@ -36,10 +36,10 @@
"Head of Marketing at Acme, Inc": "Trưởng phòng Marketing tại Acme, Inc",
"Hidden for members": "Ẩn với thành viên",
"Hide comment": "Ẩn bình luận",
- "Jamie Larson": "Nguyễn Minh Châu",
+ "Jamie Larson": "Nguyễn Minh Anh",
"Join the discussion": "Tham gia thảo luận",
"Just now": "Vừa xong",
- "Like": "",
+ "Like": "Thích",
"Load more ({amount})": "Hiện thêm ({amount})",
"Local resident": "Cư dân địa phương",
"Member discussion": "Thảo luận của thành viên",
@@ -50,11 +50,11 @@
"Once deleted, this comment can’t be recovered.": "Một khi đã xóa, bình luận này không thể khôi phục.",
"One hour ago": "Một giờ trước",
"One min ago": "Một phút trước",
- "Pin comment": "",
- "Pinned": "",
- "Read more replies": "",
- "Remove dislike": "",
- "Remove like": "",
+ "Pin comment": "Ghim bình luận",
+ "Pinned": "Đã ghim",
+ "Read more replies": "Đọc thêm câu trả lời",
+ "Remove dislike": "Bỏ không thích",
+ "Remove like": "Bỏ thích",
"removed": "đã xóa",
"Replied to": "Đã trả lời",
"Reply": "Trả lời",
@@ -64,7 +64,7 @@
"Report comment": "Báo cáo bình luận",
"Report this comment?": "Báo cáo bình luận này?",
"Save": "Lưu",
- "See full discussion": "",
+ "See full discussion": "Xem toàn bộ cuộc thảo luận",
"Sending": "Đang gửi",
"Sent": "Đã gửi",
"Show {amount} more replies": "Xem thêm {amount} trả lời khác",
@@ -77,8 +77,8 @@
"The linked comment is no longer available.": "Liên kết bình luận này không còn nữa.",
"This comment has been hidden.": "Bình luận này đã bị ẩn.",
"This comment has been removed.": "Bình luận này đã bị xóa.",
- "Unpin": "",
- "Unpin comment": "",
+ "Unpin": "Bỏ ghim",
+ "Unpin comment": "Bỏ ghim bình luận",
"Upgrade now": "Nâng cấp",
"View in admin": "Xem trong bảng quản trị",
"Yesterday": "Hôm qua",
From bca80432b5519c11d5c2da728f0249d4b0ec739e Mon Sep 17 00:00:00 2001
From: Duy <104808921+honhatduy@users.noreply.github.com>
Date: Wed, 27 May 2026 08:19:09 +0700
Subject: [PATCH 02/10] Update ghost.json
---
ghost/i18n/locales/vi/ghost.json | 52 ++++++++++++++++----------------
1 file changed, 26 insertions(+), 26 deletions(-)
diff --git a/ghost/i18n/locales/vi/ghost.json b/ghost/i18n/locales/vi/ghost.json
index 598d8366066..b52166e9432 100644
--- a/ghost/i18n/locales/vi/ghost.json
+++ b/ghost/i18n/locales/vi/ghost.json
@@ -1,8 +1,8 @@
{
- "{count} month_other": "",
- "{count} year_other": "",
+ "{count} month_other": "{count} month_other",
+ "{count} year_other": "{count} year_other",
"{date}": "{date}",
- "{tierName} membership": "",
+ "{tierName} membership": "Thành viên {tierName}",
"All the best!": "Chúc bạn mọi điều tốt đẹp nhất!",
"Become a paid member of {site} to get access to all premium content.": "Trở thành thành viên trả phí của {site} để truy cập toàn bộ nội dung cao cấp.",
"By {authors}": "Viết bởi {authors}",
@@ -15,18 +15,18 @@
"Confirm your email address": "Xác nhận địa chỉ email của bạn",
"Confirm your email update for {siteTitle}!": "Xác nhận cập nhật địa chỉ email của bạn trên {siteTitle}!",
"Confirm your subscription to {siteTitle}": "Xác nhận bạn sẽ đăng ký {siteTitle}",
- "Continue subscription": "",
+ "Continue subscription": "Tiếp tục đăng ký",
"Device:": "Thiết bị:",
"Email": "Email",
"For security verification, enter the code below to sign in to {siteTitle}:": "Để xác minh bảo mật, nhập mã bên dưới để đăng nhập {siteTitle}:",
"For your security, the link will expire in 24 hours time.": "Để bảo mật, liên kết sẽ hết hạn trong vòng 24 giờ.",
"free": "miễn phí",
- "Gift subscription": "",
- "Here's how to keep your {tierName} membership.": "",
+ "Gift subscription": "Tặng gói thành viên",
+ "Here's how to keep your {tierName} membership.": "Đây là cách tiếp tục làm thành viên {tierName}.",
"Here's your code to login to {siteTitle}": "Đây là mã dùng để đăng nhập {siteTitle}",
"Hey there,": "Chào bạn,",
"Hey there!": "Chào bạn!",
- "Hi {firstName},": "",
+ "Hi {firstName},": "Xin chào {firstName},",
"If you did not make this request, you can safely ignore this email.": "Nếu bạn không thực hiện yêu cầu này, vui lòng bỏ qua email này.",
"If you did not make this request, you can simply delete this message.": "Nếu bạn không thực hiện yêu cầu này, hãy xóa email này.",
"If you didn't try to sign in recently, you can safely ignore this email to deny access.": "Nếu không phải là bạn đăng nhập gần đây, bỏ qua email này để từ chối truy cập.",
@@ -39,15 +39,15 @@
"Name": "Tên",
"New comment on {postTitle}": "Bài viết {postTitle} có bình luận mới",
"New reply to your comment on {siteTitle}": "Bình luận của bạn trên {siteTitle} có phản hồi mới",
- "one-month": "",
- "one-year": "",
- "Open this link to redeem your gift.": "",
+ "one-month": "một-tháng",
+ "one-year": "một-năm",
+ "Open this link to redeem your gift.": "Mở liên kết này để mở quà của bạn.",
"Or use this link to securely sign in": "Hoặc dùng liên kết này để đăng nhập an toàn",
"Or, skip the code and sign in directly": "Hoặc, bỏ qua mã và đăng nhập trực tiếp",
"paid": "trả phí",
"Please confirm your email address with this link:": "Vui lòng xác nhận địa chỉ email của bạn bằng liên kết này:",
- "Redeem your gift subscription": "",
- "Secure sign in link for {siteTitle}": "Liên kết đăng nhập {siteTitle} an toàn",
+ "Redeem your gift subscription": "Đổi quà tặng gói thành viên",
+ "Secure sign in link for {siteTitle}": "Liên kết đăng nhập an toàn {siteTitle}",
"See you soon!": "Hẹn gặp lại bạn!",
"Sent to {email}": "Đã gửi đến {email}",
"Share": "Chia sẻ",
@@ -61,16 +61,16 @@
"Subscription details": "Chi tiết gói thành viên",
"Tap the link below to complete the signup process for {siteTitle}, and be automatically signed in:": "Nhấn vào liên kết bên dưới để hoàn tất quy trình đăng ký {siteTitle} và tự động đăng nhập:",
"Thank you for signing up to {siteTitle}!": "Cám ơn bạn đã trở thành thành viên {siteTitle}!",
- "Thank you for subscribing to {siteTitle}!": "Cám ơn bạn đã đăng ký gói thành viên {siteTitle}!",
- "Thank you for subscribing to {siteTitle}.": "Cám ơn bạn đã đăng ký gói thành viên {siteTitle}.",
+ "Thank you for subscribing to {siteTitle}!": "Cám ơn bạn đã đăng ký thành viên {siteTitle}!",
+ "Thank you for subscribing to {siteTitle}.": "Cám ơn bạn đã đăng ký thành viên {siteTitle}.",
"Thank you for subscribing to {siteTitle}. Tap the link below to be automatically signed in:": "Cám ơn bạn đã đăng ký gói thành viên {siteTitle}. Nhấn vào liên kết bên dưới để đăng nhập tự động:",
- "Thank you for supporting {siteTitle}.": "",
- "Thank you for your support. Share the link below with whoever you'd like to gift them a {cadenceLabel} {tierName} membership to {siteTitle}.": "",
- "Thanks for reading {siteTitle}.": "",
- "The link expires on {expiresAt} and can only be redeemed once.": "",
+ "Thank you for supporting {siteTitle}.": "Cảm ơn bạn đã ủng hộ {siteTitle}.",
+ "Thank you for your support. Share the link below with whoever you'd like to gift them a {cadenceLabel} {tierName} membership to {siteTitle}.": "Cảm ơn bạn đã ủng hộ. Hãy chia sẻ liên kết bên dưới với người mà bạn muốn tặng thành viên {cadenceLabel} {tierName} trên {siteTitle}.",
+ "Thanks for reading {siteTitle}.": "Cảm ơn bạn đã đọc {siteTitle}.",
+ "The link expires on {expiresAt} and can only be redeemed once.": "Liên kết hết hạn vào {expiresAt} và chỉ có thể đổi một lần.",
"This email address will not be used.": "Địa chỉ email này sẽ không còn sử dụng.",
"This message was sent from {siteDomain} to {email}.": "Tin nhắn này được {siteDomain} gửi tới {email}.",
- "To keep your {tierName} membership, continue with a paid subscription today and we'll automatically add the rest of your gift period as a free trial.": "",
+ "To keep your {tierName} membership, continue with a paid subscription today and we'll automatically add the rest of your gift period as a free trial.": "Để tiếp tục là thành viên {tierName}, hãy tiếp tục sử dụng gói trả phí ngay hôm nay và chúng tôi sẽ tự động gia hạn thời gian đọc thử còn lại của quà tặng dưới dạng bản đọc thử miễn phí.",
"trialing": "đọc thử",
"Unsubscribe": "Hủy đăng ký",
"Unsubscribe from comment reply notifications": "Ngừng nhận thông báo về phản hồi cho bình luận của bạn",
@@ -92,13 +92,13 @@
"You will not be subscribed.": "Bạn sẽ không đăng ký gói.",
"You're one tap away from subscribing to {siteTitle} — please confirm your email address with this link:": "Bạn còn một bước nữa để đăng ký {siteTitle} — vui lòng xác nhận địa chỉ email của bạn bằng liên kết này:",
"You're one tap away from subscribing to {siteTitle}!": "Bạn còn một bước nữa để đăng ký {siteTitle}!",
- "You've been gifted a {duration}-month {tierName} membership to {siteTitle}": "",
- "You've been gifted a {duration}-year {tierName} membership to {siteTitle}": "",
- "Your free trial ends on {date}, at which time you will be charged the regular price. You can always cancel before then.": "Gói đọc thử của bạn sẽ kết thúc vào {date} và sau đó bắt đầu tính phí. Bạn luôn có thể hủy gói trước thời điểm này.",
- "Your gift is ready": "",
- "Your gift subscription confirmation": "",
- "Your gift subscription is ending soon": "",
- "Your gift subscription to {siteTitle} ends on {consumesAt}.": "",
+ "You've been gifted a {duration}-month {tierName} membership to {siteTitle}": "Bạn vừa được tặng {duration}-tháng thành viên {tierName} trên {siteTitle}",
+ "You've been gifted a {duration}-year {tierName} membership to {siteTitle}": "Bạn vừa được tặng {duration}-năm {tierName} thành viên trên {siteTitle}",
+ "Your free trial ends on {date}, at which time you will be charged the regular price. You can always cancel before then.": "Gói đọc thử của bạn sẽ hết hạn vào {date} và sau đó bắt đầu tính phí. Bạn luôn có thể hủy gói trước thời điểm này.",
+ "Your gift is ready": "Món quà của bạn đã chuẩn bị xong",
+ "Your gift subscription confirmation": "Xác nhận nhận quà gói thành viên",
+ "Your gift subscription is ending soon": "Gói thành viên mà bạn được tặng sắp hết hạn",
+ "Your gift subscription to {siteTitle} ends on {consumesAt}.": "Gói thành viên mà bạn được tặng trên {siteTitle} hết hạn vào {consumesAt}.",
"Your subscription has been canceled and will expire on {date}. You can resume your subscription via your account settings.": "Gói thành viên của bạn đã bị hủy và sẽ hết hạn vào {date}. Bạn có thể tiếp tục lại trong cài đặt tài khoản.",
"Your subscription has expired.": "Gói thành viên của bạn đã hết hạn.",
"Your subscription will expire on {date}.": "Gói thành viên của bạn sẽ hết hạn vào {date}.",
From 90b1c704727f641fcd2bd39e8cef63ebf848dedb Mon Sep 17 00:00:00 2001
From: Duy <104808921+honhatduy@users.noreply.github.com>
Date: Wed, 27 May 2026 08:39:01 +0700
Subject: [PATCH 03/10] Update portal.json
---
ghost/i18n/locales/vi/portal.json | 68 +++++++++++++++----------------
1 file changed, 34 insertions(+), 34 deletions(-)
diff --git a/ghost/i18n/locales/vi/portal.json b/ghost/i18n/locales/vi/portal.json
index 2c1f2e9b7c4..0e0402f8d94 100644
--- a/ghost/i18n/locales/vi/portal.json
+++ b/ghost/i18n/locales/vi/portal.json
@@ -11,14 +11,14 @@
"{memberEmail} will no longer receive this newsletter.": "{memberEmail} sẽ không còn được nhận bản tin này.",
"{months} months": "{months} tháng",
"{months} months free": "Miễn phí {months} tháng",
- "{tierName} membership": "",
+ "{tierName} membership": "Thành viên {tierName}",
"{trialDays} days free": "{trialDays} ngày đọc thử miễn phí",
"{years} years": "{years} năm",
"+1 (123) 456-7890": "+84 (987) 654-321",
"1 month": "1 tháng",
"1 month free": "Miễn phí 1 tháng",
"1 year": "1 năm",
- "A gift, just for you": "",
+ "A gift, just for you": "Một món quà, dành riêng cho bạn",
"Access your RSS feeds": "Truy cập các nguồn tin RSS của bạn",
"Account": "Tài khoản",
"Account details updated successfully": "Đã cập nhật chi tiết tài khoản thành công",
@@ -48,7 +48,7 @@
"Choose a plan": "Chọn một gói",
"Choose your newsletters": "Chọn bản tin bạn muốn nhận",
"Click here to retry": "Nhấn vào đây thử lại",
- "Click the confirmation link in your inbox to finish redeeming your membership. If it doesn't arrive within 3 minutes, check your spam folder.": "",
+ "Click the confirmation link in your inbox to finish redeeming your membership. If it doesn't arrive within 3 minutes, check your spam folder.": "Hãy nhấn vào liên kết xác nhận trong hộp thư đến của bạn để hoàn tất việc kích hoạt tư cách thành viên. Nếu bạn không nhận được email trong vòng 3 phút, hãy kiểm tra thư mục spam.",
"Close": "Đóng",
"Code": "Mã",
"Comment preferences updated.": "Đã cập nhật thiết lập bình luận.",
@@ -60,9 +60,9 @@
"Contact support": "Liên hệ hỗ trợ",
"Continue": "Tiếp tục",
"Continue subscription": "Tiếp tục đăng ký",
- "Continue with a paid subscription anytime. Your remaining gift period will be added as a free trial.": "",
+ "Continue with a paid subscription anytime. Your remaining gift period will be added as a free trial.": "Bạn có thể tiếp tục sử dụng gói trả phí bất cứ lúc nào. Thời gian sử dụng còn lại sẽ được tính là thời gian đọc thử miễn phí.",
"Copied": "Đã sao chép",
- "Copy": "",
+ "Copy": "Sao chép",
"Copy link": "Sao chép liên kết",
"Could not create Stripe billing portal session": "Không thể tạo phiên cổng thanh toán Stripe",
"Could not create Stripe checkout session": "Không thể tạo phiên thanh toán Stripe",
@@ -113,17 +113,17 @@
"Get help": "Trợ giúp",
"Get in touch for help": "Yêu cầu trợ giúp",
"Get notified when someone replies to your comment": "Thông báo khi có ai đó trả lời bình luận",
- "Gift a membership": "",
- "Gift could not be redeemed": "",
- "Gift details": "",
- "Gift redeemed! You're all set.": "",
- "Gift subscription": "",
- "Gift subscriptions are not available right now.": "",
- "Gift value": "",
+ "Gift a membership": "Tặng gói thành viên",
+ "Gift could not be redeemed": "Không thể đổi quà",
+ "Gift details": "Chi tiết quà tặng",
+ "Gift redeemed! You're all set.": "Đã đổi quà! Mọi thứ sẵn sàng rồi.",
+ "Gift subscription": "Tặng gói thành viên",
+ "Gift subscriptions are not available right now.": "Tặng gói thành viên hiện không khả dụng.",
+ "Gift value": "Giá trị quà tặng",
"Give feedback on this post": "Phản hồi bài viết này",
"Help! I'm not receiving emails": "Trợ giúp! Tôi không nhận được email",
"Here are a few other sites you may enjoy.": "Đây là vài trang khác mà bạn có thể thích.",
- "Hide details": "",
+ "Hide details": "Ẩn chi tiết",
"If a newsletter is flagged as spam, emails are automatically disabled for that address to make sure you no longer receive any unwanted messages.": "Nếu một bản tin email bị gắn nhãn thư rác, email sẽ tự động bị vô hiệu hóa đối với địa chỉ đó để đảm bảo bạn không còn nhận được bất kỳ email không mong muốn nào nữa.",
"If the spam complaint was accidental, or you would like to begin receiving emails again, you can resubscribe to emails by clicking the button on the previous screen.": "Nếu khiếu nại về thư rác là vô tình hoặc bạn muốn bắt đầu nhận lại bản tin email, bạn có thể hoàn tác bằng cách nhấn vào nút trên màn hình trước đó.",
"If you cancel your subscription now, you will continue to have access until {periodEnd}.": "Nếu bạn hủy gói lúc này, bạn sẽ có quyền truy cập tiếp tục cho đến {periodEnd}.",
@@ -144,7 +144,7 @@
"Make sure emails aren't accidentally ending up in the Spam or Promotions folders of your inbox. If they are, click on \"Mark as not spam\" and/or \"Move to inbox\".": "Hãy chắc rằng email không đang trong thư mục Spam hoặc Quảng cáo. Nếu đang vậy, chọn \"Đánh dấu không phải spam\" hoặc \"Chuyển tới Hộp thư đến\".",
"Manage": "Quản lý",
"Maybe later": "Để sau",
- "Membership details": "",
+ "Membership details": "Chi tiết gói thành viên",
"Memberships from this email domain are currently restricted.": "Thành viên từ dịch vụ email này đang bị hạn chế.",
"Memberships unavailable, contact the owner for access.": "Chưa phải là thành viên, liên hệ với chủ sở hữu để truy cập.",
"month": "tháng",
@@ -156,7 +156,7 @@
"Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce).": "Tài khoản của bạn có thể không nhận được bản tin email bởi hai lý do: Email trước đó đã bị đánh dấu là thư rác hoặc lỗi thất bại vĩnh viễn (thư bị trả lại).",
"No member exists with this e-mail address.": "Chưa có thành viên nào với email này",
"No thanks, I want to cancel": "Cảm ơn, tôi vẫn muốn hủy",
- "Not ready to share? We've also emailed a copy to your inbox.": "",
+ "Not ready to share? We've also emailed a copy to your inbox.": "Chưa sẵn sàng chia sẻ? Chúng tôi cũng đã gửi email một bản sao cho bạn.",
"Not receiving emails?": "Bạn không nhận được email?",
"Now check your email!": "Kiểm tra hộp thư ngay!",
"Once resubscribed, if you still don't see emails in your inbox, check your spam folder. Some inbox providers keep a record of previous spam complaints and will continue to flag emails. If this happens, mark the latest newsletter as 'Not spam' to move it back to your primary inbox.": "Sau khi chọn nhận lại, nếu bạn vẫn không thấy email trong hộp thư đến của mình, hãy kiểm tra thư mục Spam. Một số nhà cung cấp email lưu giữ hồ sơ về các khiếu nại thư rác trước đây và sẽ tiếp tục phân loại email. Nếu điều này xảy ra, hãy đánh dấu bản tin email mới nhất là 'Không phải Spam' để chuyển nó trở lại hộp thư đến của bạn.",
@@ -176,14 +176,14 @@
"Plan checkout was cancelled.": "Đã hủy thanh toán gói.",
"Plan upgrade was cancelled.": "Đã hủy nâng cấp gói.",
"Please contact {supportAddress} to adjust your complimentary subscription.": "Vui lòng liên hệ {supportAddress} để điều chỉnh gói thành viên của bạn.",
- "Please enter {fieldName}": "Hãy nhập {fieldName}",
+ "Please enter {fieldName}": "Xin nhập {fieldName}",
"Please fill in required fields": "Vui lòng điền các mục bắt buộc",
"Podcasts": "Podcast",
"Price": "Giá gói",
"Re-enable emails": "Kích hoạt lại email",
"Recommendations": "Đề xuất",
- "Redeem your membership": "",
- "Redeeming...": "",
+ "Redeem your membership": "Đổi gói thành viên của bạn",
+ "Redeeming...": "Đang đổi...",
"Renews at {price}.": "Phí gia hạn {price}.",
"Resume subscription": "Tiếp tục gói",
"Retry": "Thử lại",
@@ -192,11 +192,11 @@
"Save {amountOff} on your next billing cycle. Then {currency}{originalPrice}/{cadence}.": "Tiết kiệm {amountOff} cho kỳ thanh toán tiếp theo của bạn. Sau đó là {currency}{originalPrice}/{cadence}.",
"Send an email and say hi!": "Gửi một email và nói xin chào!",
"Send an email to {senderEmail} and say hello. This can also help signal to your mail provider that emails to and from this address should be trusted.": "Gửi email tới {senderEmail} và gửi lời chào. Điều này cũng có thể giúp báo hiệu cho nhà cung cấp dịch vụ email của bạn rằng các email đến và đi từ địa chỉ này là đáng tin cậy.",
- "Send the link below to share it with whoever you'd like.": "",
+ "Send the link below to share it with whoever you'd like.": "Gửi liên kết bên dưới để chia sẻ nó với bất cứ ai mà bạn thích.",
"Sending login link...": "Đang gửi liên kết đăng nhập...",
"Sending...": "Đang gửi...",
"Share": "Chia sẻ",
- "Share a full membership to {siteTitle} with a friend or colleague": "",
+ "Share a full membership to {siteTitle} with a friend or colleague": "Chia sẻ gói thành viên {siteTitle} với một người bạn hoặc đồng nghiệp",
"Show all": "Hiện toàn bộ",
"Sign in": "Đăng nhập",
"Sign out": "Đăng xuất",
@@ -211,8 +211,8 @@
"Starting {startDate}": "Bắt đầu {startDate}",
"Starting today": "Bắt đầu hôm nay",
"Submit feedback": "Gửi phản hồi",
- "Subscribe": "Đăng ký gói",
- "Subscribed": "Đã đăng ký gói",
+ "Subscribe": "Đăng ký",
+ "Subscribed": "Đã đăng ký",
"Subscription plan updated successfully": "Đã cập nhật gói thành viên thành công",
"Success": "Thành công",
"Success! Check your email for magic link to sign-in.": "Xong! Kiểm tra hộp thư để nhận liên kết đăng nhập.",
@@ -230,16 +230,16 @@
"There was an error continuing your subscription, please try again.": "Xảy ra lỗi khi tiếp tục gói thành viên, vui lòng thử lại",
"There was an error processing your payment. Please try again.": "Xảy ra lỗi khi tiến hành thanh toán. Hãy thử lại sau.",
"There was an error sending the email, please try again": "Xảy ra lỗi khi gửi email, vui lòng thử lại",
- "This gift has already been consumed.": "",
- "This gift has already been redeemed.": "",
- "This gift has been refunded.": "",
- "This gift has expired.": "",
+ "This gift has already been consumed.": "Món quà này đã được sử dụng hết.",
+ "This gift has already been redeemed.": "Món quà này đã được đổi.",
+ "This gift has been refunded.": "Món quà này đã được hoàn tiền.",
+ "This gift has expired.": "Món quà này đã hết hạn.",
"This site is invite-only, contact the owner for access.": "Trang web này chỉ dành cho những người được mời, hãy liên hệ với chủ sở hữu để cấp quyền truy cập.",
"This site is not accepting donations at the moment.": "Trang web này hiện chưa nhận quyên góp.",
"This site is not accepting payments at the moment.": "Trang web này hiện chưa chấp nhận thanh toán.",
"This site only accepts paid members.": "Trang web này chỉ dành cho thành viên trả phí.",
"Threads": "Threads",
- "Tier": "",
+ "Tier": "Gói",
"To complete signup, click the confirmation link in your inbox. If it doesn't arrive within 3 minutes, check your spam folder!": "Để hoàn tất đăng ký, nhấn vào liên kết xác nhận được gửi tới email của bạn. Sau 3 phút mà không thấy, hãy kiểm tra thư mục Spam!",
"To continue to stay up to date, subscribe to {publication} below.": "Để tiếp tục được cập nhật, hãy đăng ký {publication} bên dưới.",
"Too many attempts try again in {number} days.": "Thử quá nhiều, hãy thử lại sau {number} ngày.",
@@ -272,22 +272,22 @@
"X (Twitter)": "X (Twitter)",
"year": "năm",
"Yearly": "Hàng năm",
- "You already have an active subscription.": "",
+ "You already have an active subscription.": "Bạn đã có gói thành viên đang còn hiệu lực.",
"You currently have a free membership, upgrade to a paid subscription for full access.": "Bạn đang là thành viên thường, hãy nâng cấp gói thành viên trả phí để có thể truy cập đầy đủ.",
"You have been successfully resubscribed": "Bạn đã gia hạn gói thành công",
- "You now have access to {tierName} until {expiryDate}. Enjoy!": "",
+ "You now have access to {tierName} until {expiryDate}. Enjoy!": "Bạn đã có quyền lợi {tierName} cho đến {expiryDate}. Tận hưởng thôi!",
"You're currently not receiving emails": "Hiện tại bạn không nhận email",
"You're not receiving emails": "Bạn không nhận được bản tin email",
"You're not receiving emails because you either marked a recent message as spam, or because messages could not be delivered to your provided email address.": "Bạn không nhận được bản tin email vì bạn đã đánh dấu một email gần đây là thư rác, hoặc vì địa chỉ email bạn cung cấp không thể gửi được.",
- "You've been gifted a membership": "",
- "You've been gifted a membership to {siteTitle}": "",
+ "You've been gifted a membership": "Bạn vừa được tặng một gói thành viên",
+ "You've been gifted a membership to {siteTitle}": "Bạn vừa được tặng một gói thành viên trên {siteTitle}",
"You've successfully signed in.": "Bạn đã đăng nhập thành công.",
- "You've successfully subscribed to {siteTitle}": "Bạn đã đăng ký gói thành công {siteTitle}",
+ "You've successfully subscribed to {siteTitle}": "Bạn đã đăng ký thành công {siteTitle}",
"Your account": "Tài khoản của bạn",
"Your email": "Email của bạn",
"Your email has failed to resubscribe, please try again": "Không thể gia hạn với email của bạn, vui lòng thử lại",
- "Your gift is ready": "",
- "Your gift subscription will expire on {expiryDate}": "",
+ "Your gift is ready": "Món quà của bạn đã sẵn sàng",
+ "Your gift subscription will expire on {expiryDate}": "Quà tặng gói thành viên sẽ hết hạn vào {expiryDate}",
"your inbox": "hộp thư đến của bạn",
"Your input helps shape what gets published.": "Thông tin bạn chọn giúp định hình nội dung được xuất bản.",
"Your name": "Tên của bạn",
From b35426f1ed972c9948874269ad8f7dea1d9f1804 Mon Sep 17 00:00:00 2001
From: Duy <104808921+honhatduy@users.noreply.github.com>
Date: Wed, 27 May 2026 08:39:22 +0700
Subject: [PATCH 04/10] Update search.json
---
ghost/i18n/locales/vi/search.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ghost/i18n/locales/vi/search.json b/ghost/i18n/locales/vi/search.json
index 5b088ebc9f9..73f1ea91485 100644
--- a/ghost/i18n/locales/vi/search.json
+++ b/ghost/i18n/locales/vi/search.json
@@ -3,7 +3,7 @@
"Cancel": "Hủy",
"No matches found": "Không tìm thấy",
"Posts": "Bài viết",
- "Search posts, tags and authors": "Tìm bài viết, thẻ & tác giả",
+ "Search posts, tags and authors": "Tìm bài viết, thẻ và tác giả",
"Show more results": "Xem thêm kết quả",
"Tags": "Thẻ"
}
From 3d7834f0cac48dc31677fabb1c83a016be394aec Mon Sep 17 00:00:00 2001
From: Duy <104808921+honhatduy@users.noreply.github.com>
Date: Wed, 27 May 2026 08:55:05 +0700
Subject: [PATCH 05/10] Update ghost.json
---
ghost/i18n/locales/vi/ghost.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ghost/i18n/locales/vi/ghost.json b/ghost/i18n/locales/vi/ghost.json
index b52166e9432..32087f61b92 100644
--- a/ghost/i18n/locales/vi/ghost.json
+++ b/ghost/i18n/locales/vi/ghost.json
@@ -39,8 +39,8 @@
"Name": "Tên",
"New comment on {postTitle}": "Bài viết {postTitle} có bình luận mới",
"New reply to your comment on {siteTitle}": "Bình luận của bạn trên {siteTitle} có phản hồi mới",
- "one-month": "một-tháng",
- "one-year": "một-năm",
+ "one-month": "một tháng",
+ "one-year": "một năm",
"Open this link to redeem your gift.": "Mở liên kết này để mở quà của bạn.",
"Or use this link to securely sign in": "Hoặc dùng liên kết này để đăng nhập an toàn",
"Or, skip the code and sign in directly": "Hoặc, bỏ qua mã và đăng nhập trực tiếp",
From a32ea219f0ce4d629b3d87cd636f97ee1602d8fe Mon Sep 17 00:00:00 2001
From: Duy <104808921+honhatduy@users.noreply.github.com>
Date: Thu, 28 May 2026 09:34:50 +0700
Subject: [PATCH 06/10] Update ghost.json
---
ghost/i18n/locales/vi/ghost.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ghost/i18n/locales/vi/ghost.json b/ghost/i18n/locales/vi/ghost.json
index 32087f61b92..8935511d440 100644
--- a/ghost/i18n/locales/vi/ghost.json
+++ b/ghost/i18n/locales/vi/ghost.json
@@ -1,6 +1,6 @@
{
- "{count} month_other": "{count} month_other",
- "{count} year_other": "{count} year_other",
+ "{count} month_other": "{count} tháng",
+ "{count} year_other": "{count} năm",
"{date}": "{date}",
"{tierName} membership": "Thành viên {tierName}",
"All the best!": "Chúc bạn mọi điều tốt đẹp nhất!",
From 81994d2c364e72fe8b2ced4ea9eeab1683d57449 Mon Sep 17 00:00:00 2001
From: Duy <104808921+honhatduy@users.noreply.github.com>
Date: Thu, 28 May 2026 15:25:06 +0700
Subject: [PATCH 07/10] Adjust the context for sharing the post.
Adjust the context for sharing the post.
---
ghost/i18n/locales/vi/portal.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ghost/i18n/locales/vi/portal.json b/ghost/i18n/locales/vi/portal.json
index 0e0402f8d94..bce68abbbd8 100644
--- a/ghost/i18n/locales/vi/portal.json
+++ b/ghost/i18n/locales/vi/portal.json
@@ -150,7 +150,7 @@
"month": "tháng",
"Monthly": "Hàng tháng",
"More like this": "Gửi nhiều hơn",
- "More options": "Thêm tùy chọn",
+ "More options": "Lựa chọn khác",
"Name": "Tên",
"Need more help? Contact support": "Cần giúp đỡ? Liên hệ hỗ trợ",
"Newsletters can be disabled on your account for two reasons: A previous email was marked as spam, or attempting to send an email resulted in a permanent failure (bounce).": "Tài khoản của bạn có thể không nhận được bản tin email bởi hai lý do: Email trước đó đã bị đánh dấu là thư rác hoặc lỗi thất bại vĩnh viễn (thư bị trả lại).",
From 68a429d0837dc23ccb78b6f9736ea84d75dae790 Mon Sep 17 00:00:00 2001
From: Duy <104808921+honhatduy@users.noreply.github.com>
Date: Sat, 20 Jun 2026 08:40:30 +0700
Subject: [PATCH 08/10] Update comments.json
---
ghost/i18n/locales/vi/comments.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/ghost/i18n/locales/vi/comments.json b/ghost/i18n/locales/vi/comments.json
index 42f24d1286c..10b9a7162d3 100644
--- a/ghost/i18n/locales/vi/comments.json
+++ b/ghost/i18n/locales/vi/comments.json
@@ -52,7 +52,7 @@
"One min ago": "Một phút trước",
"Pin comment": "Ghim bình luận",
"Pinned": "Đã ghim",
- "Read more replies": "Đọc thêm câu trả lời",
+ "Read more replies": "Đọc thêm trả lời",
"Remove dislike": "Bỏ không thích",
"Remove like": "Bỏ thích",
"removed": "đã xóa",
@@ -64,7 +64,7 @@
"Report comment": "Báo cáo bình luận",
"Report this comment?": "Báo cáo bình luận này?",
"Save": "Lưu",
- "See full discussion": "Xem toàn bộ cuộc thảo luận",
+ "See full discussion": "Xem tất cả thảo luận",
"Sending": "Đang gửi",
"Sent": "Đã gửi",
"Show {amount} more replies": "Xem thêm {amount} trả lời khác",
@@ -80,7 +80,7 @@
"Unpin": "Bỏ ghim",
"Unpin comment": "Bỏ ghim bình luận",
"Upgrade now": "Nâng cấp",
- "View in admin": "Xem trong bảng quản trị",
+ "View in admin": "Xem trong dashboard",
"Yesterday": "Hôm qua",
"You can't post comments in this publication.": "Bạn không thể bình luận trên trang web này.",
"You can't post comments in this publication. Contact support for more information.": "Bạn không thể bình luận trên trang web này. Liên hệ hỗ trợ để biết thêm chi tiết.",
From 78bd165e4eb53633064a7a5c08fe50d4e7111a69 Mon Sep 17 00:00:00 2001
From: Duy <104808921+honhatduy@users.noreply.github.com>
Date: Sat, 20 Jun 2026 08:42:56 +0700
Subject: [PATCH 09/10] Update ghost.json
---
ghost/i18n/locales/vi/ghost.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ghost/i18n/locales/vi/ghost.json b/ghost/i18n/locales/vi/ghost.json
index de41a371b9b..2676955240a 100644
--- a/ghost/i18n/locales/vi/ghost.json
+++ b/ghost/i18n/locales/vi/ghost.json
@@ -59,7 +59,7 @@
"Someone just replied to your comment": "Ai đó vừa phản hồi bình luận của bạn",
"Someone just replied to your comment on {postTitle}.": "Ai đó vừa phản hồi bình luận của bạn trên {postTitle}.",
"Subscription details": "Chi tiết gói thành viên",
- "Support {siteTitle}": "",
+ "Support {siteTitle}": "Ủng hộ {siteTitle}",
"Tap the link below to complete the signup process for {siteTitle}, and be automatically signed in:": "Nhấn vào liên kết bên dưới để hoàn tất quy trình đăng ký {siteTitle} và tự động đăng nhập:",
"Thank you for signing up to {siteTitle}!": "Cám ơn bạn đã trở thành thành viên {siteTitle}!",
"Thank you for subscribing to {siteTitle}!": "Cám ơn bạn đã đăng ký thành viên {siteTitle}!",
From dad6b24eb514c4faafaf977db1f4ca977d377027 Mon Sep 17 00:00:00 2001
From: Duy <104808921+honhatduy@users.noreply.github.com>
Date: Sat, 20 Jun 2026 08:47:23 +0700
Subject: [PATCH 10/10] Update portal.json
---
ghost/i18n/locales/vi/portal.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/ghost/i18n/locales/vi/portal.json b/ghost/i18n/locales/vi/portal.json
index 99d4f038a90..df2dcc6b95b 100644
--- a/ghost/i18n/locales/vi/portal.json
+++ b/ghost/i18n/locales/vi/portal.json
@@ -9,7 +9,7 @@
"{memberEmail} will no longer receive {newsletterName} newsletter.": "{memberEmail} sẽ không còn được nhận bản tin {newsletterName}.",
"{memberEmail} will no longer receive emails when someone replies to your comments.": "{memberEmail} sẽ không còn được nhận email khi ai đó trả lời bình luận.",
"{memberEmail} will no longer receive this newsletter.": "{memberEmail} sẽ không còn được nhận bản tin này.",
- "{memberEmail} will no longer receive updates & announcements.": "",
+ "{memberEmail} will no longer receive updates & announcements.": "{memberEmail} sẽ không còn được nhận cập nhật & thông báo.",
"{months} months": "{months} tháng",
"{months} months free": "Miễn phí {months} tháng",
"{tierName} membership": "Thành viên {tierName}",
@@ -160,7 +160,7 @@
"Not ready to share? We've also emailed a copy to your inbox.": "Chưa sẵn sàng chia sẻ? Chúng tôi cũng đã gửi email một bản sao cho bạn.",
"Not receiving emails?": "Bạn không nhận được email?",
"Now check your email!": "Kiểm tra hộp thư ngay!",
- "Occasional updates from {siteTitle}": "",
+ "Occasional updates from {siteTitle}": "Thông tin cập nhật định kỳ từ {siteTitle}",
"Once resubscribed, if you still don't see emails in your inbox, check your spam folder. Some inbox providers keep a record of previous spam complaints and will continue to flag emails. If this happens, mark the latest newsletter as 'Not spam' to move it back to your primary inbox.": "Sau khi chọn nhận lại, nếu bạn vẫn không thấy email trong hộp thư đến của mình, hãy kiểm tra thư mục Spam. Một số nhà cung cấp email lưu giữ hồ sơ về các khiếu nại thư rác trước đây và sẽ tiếp tục phân loại email. Nếu điều này xảy ra, hãy đánh dấu bản tin email mới nhất là 'Không phải Spam' để chuyển nó trở lại hộp thư đến của bạn.",
"Open AOL Mail": "Mở AOL Mail",
"Open email": "Mở email",
@@ -205,7 +205,7 @@
"Signup error: Invalid link": "Lỗi đăng ký: Liên kết không hợp lệ",
"Signups from this email domain are currently restricted.": "Tên miền email này đang bị hạn chế đăng ký.",
"Something went wrong, please try again later.": "Xảy ra lỗi, hãy thử lại sau.",
- "Sorry, no paid plans are available.": "",
+ "Sorry, no paid plans are available.": "Rất tiếc, không có gói trả phí.",
"Sorry, no recommendations are available right now.": "Rất tiếc, chưa có đề xuất nào vào lúc này.",
"Sorry, that didn’t work.": "Rất tiếc, không dùng được.",
"Spam complaints": "Than phiền",
@@ -260,7 +260,7 @@
"Unsubscribing from emails will not cancel your paid subscription to {title}": "Việc hủy nhận email sẽ không hủy gói thành viên trả phí của bạn đối với {title}",
"Update": "Cập nhật",
"Update your preferences": "Cập nhật thiết lập",
- "Updates & announcements": "",
+ "Updates & announcements": "Cập nhật & thông báo",
"Verification link sent, check your inbox": "Đã gửi liên kết xác minh, hãy kiểm tra email",
"Verify your email address is correct": "Xác minh địa chỉ email của bạn là đúng",
"Verifying...": "Đang xác minh...",