This commit is contained in:
2026-03-11 02:43:33 +00:00
parent edc1a33547
commit dc06412f79
61 changed files with 7408 additions and 1606 deletions

View File

@@ -10,7 +10,7 @@
"actions": "Actions",
"status": "Status",
"videos": "Videos",
"selected": "{count} selected",
"selected": "{{count}} selected",
"copy": "Copy"
},
"app": {
@@ -211,6 +211,10 @@
"chromecast": {
"title": "Chromecast",
"description": "Allow casting to Chromecast devices"
},
"encrytion_m3u8": {
"title": "HLS Encryption (m3u8)",
"description": "Enable encryption for HLS streams (Anti-download, VIP only)"
}
}
},
@@ -240,10 +244,12 @@
"clearDataReject": "Cancel"
},
"toast": {
"deleteAccountSummary": "Account deletion requested",
"deleteAccountDetail": "Your account deletion request has been submitted.",
"deleteAccountSummary": "Account deleted",
"deleteAccountDetail": "Your account and associated data have been permanently deleted.",
"clearDataSummary": "Data cleared",
"clearDataDetail": "All your data has been permanently deleted."
"clearDataDetail": "All your data has been permanently deleted.",
"failedSummary": "Action failed",
"failedDetail": "Failed to complete the requested action."
}
},
"domainsDns": {
@@ -282,13 +288,18 @@
"removedSummary": "Domain Removed",
"removedDetail": "{domain} has been removed from your whitelist.",
"copiedSummary": "Copied",
"copiedDetail": "Embed code copied to clipboard."
"copiedDetail": "Embed code copied to clipboard.",
"failedSummary": "Action failed",
"failedDetail": "Failed to load or update domains."
}
},
"adsVast": {
"createTemplate": "Create Template",
"infoBanner": "VAST (Video Ad Serving Template) is an XML schema for serving ad tags to video players.",
"createdOn": "Created {date}",
"readOnlyTitle": "Upgrade required",
"readOnlyMessage": "Ads & VAST is read-only on the free plan. Upgrade your plan to create, edit, delete, enable, or set default templates.",
"defaultBadge": "Default",
"createdOn": "Created {{date}}",
"emptyTitle": "No VAST templates yet",
"emptySubtitle": "Create a template to start monetizing your videos",
"formats": {
@@ -300,6 +311,10 @@
"enabled": "enabled",
"disabled": "disabled"
},
"actions": {
"default": "Default",
"setDefault": "Set default"
},
"table": {
"template": "Template",
"format": "Format",
@@ -315,6 +330,10 @@
"adFormat": "Ad Format",
"adInterval": "Ad Interval (seconds)",
"adIntervalPlaceholder": "30",
"defaultLabel": "Default template",
"defaultCheckbox": "Use this template by default for new videos",
"defaultHint": "When enabled, newly created videos automatically use this active template.",
"defaultDisabledHint": "Enable this template before setting it as default.",
"update": "Update",
"create": "Create"
},
@@ -339,11 +358,17 @@
"createdDetail": "VAST template has been created.",
"enabledSummary": "Template Enabled",
"disabledSummary": "Template Disabled",
"defaultUpdatedSummary": "Default Updated",
"defaultUpdatedDetail": "{name} is now the default template for new videos.",
"upgradeRequiredSummary": "Upgrade required",
"upgradeRequiredDetail": "Upgrade your plan to manage Ads & VAST.",
"toggleDetail": "{name} has been {state}.",
"deletedSummary": "Template Deleted",
"deletedDetail": "VAST template has been removed.",
"copiedSummary": "Copied",
"copiedDetail": "URL copied to clipboard."
"copiedDetail": "URL copied to clipboard.",
"failedSummary": "Action failed",
"failedDetail": "Failed to load or update VAST templates."
}
},
"profile": {
@@ -353,7 +378,7 @@
"username": "Username",
"email": "Email Address",
"storageUsage": "Storage Usage",
"storageUsedOfLimit": "{used} of {limit} used",
"storageUsedOfLimit": "{{used}} of {{limit}} used",
"editProfile": "Edit Profile",
"changePassword": "Change Password"
},
@@ -373,26 +398,51 @@
},
"billing": {
"walletBalance": "Wallet Balance",
"currentBalance": "Current balance: {balance}",
"currentBalance": "Current balance: {{balance}}",
"topUp": "Top Up",
"availablePlans": "Available Plans",
"availablePlansHint": "Choose the plan that best fits your needs",
"planStorage": "{storage} Storage",
"planDuration": "{duration} Max Duration",
"planUploads": "{count} Uploads / day",
"planStorage": "{{storage}} Storage",
"planDuration": "{{duration}} Max Duration",
"planUploads": "{{count}} Uploads / day",
"currentPlan": "Current Plan",
"processing": "Processing...",
"upgrade": "Upgrade",
"storage": "Storage",
"storageUsedOfLimit": "{used} of {limit} used",
"monthlyUploads": "Monthly Uploads",
"uploadsUsedOfLimit": "{used} of {limit} uploads",
"storageUsedOfLimit": "{{used}} of {{limit}} used",
"totalVideos": "Total videos",
"totalVideosUsedOfLimit": "{{used}} of {{limit}} videos",
"paymentHistory": "Payment History",
"paymentHistorySubtitle": "Your past payments and invoices",
"noPaymentHistory": "No payment history found.",
"download": "Download",
"durationMinutes": "{minutes} mins",
"durationMinutes": "{{minutes}} mins",
"unknownPlan": "Unknown",
"walletTopup": "Wallet Top-up",
"termOption": "{{months}} month",
"termOption_other": "{{months}} months",
"paymentMethod": {
"wallet": "Wallet balance",
"topup": "Top up and pay"
},
"subscription": {
"activeTitle": "Plan active",
"activeDescription": " {{plan}} is active until {{date}}",
"expiringTitle": "Expiring soon",
"expiringDescription": " {{plan}} expires on {{date}}",
"expiredTitle": "Plan expired",
"expiredDescription": "Your last subscription ended on {{date}}",
"freeTitle": "Free access",
"freeDescription": "You are currently using the free plan."
},
"history": {
"validUntil": "Valid until {{date}}"
},
"cycle": {
"MONTHLY": "Monthly",
"QUARTERLY": "Quarterly",
"YEARLY": "Yearly"
},
"table": {
"date": "Date",
"amount": "Amount",
@@ -405,6 +455,31 @@
"failed": "Failed",
"pending": "Pending"
},
"upgradeDialog": {
"title": "Upgrade or renew plan",
"selectedPlan": "Selected plan",
"basePrice": "Base monthly price",
"perMonthBase": "Used as the monthly base for the selected term",
"termTitle": "Billing term",
"termHint": "Choose how long you want to activate or extend this plan.",
"totalLabel": "Total",
"walletBalanceLabel": "Wallet balance",
"shortfallLabel": "Shortfall",
"paymentMethodTitle": "How do you want to pay?",
"paymentMethodHint": "If your wallet is short, you can top up the difference and complete the plan purchase in one flow.",
"walletOptionDescription": "Try using your current wallet balance first.",
"topupOptionDescription": "Top up at least {{shortfall}} to complete the purchase.",
"walletCoveredHint": "Your wallet balance already covers this purchase.",
"walletInsufficientHint": "Your wallet is short by {{shortfall}}. Switch to the top-up option to complete the purchase.",
"topupAmountLabel": "Top-up amount",
"topupAmountPlaceholder": "Enter top-up amount",
"topupAmountHint": "Any amount above {{shortfall}} will stay in your wallet after the upgrade.",
"payWithWallet": "Pay with wallet",
"topupAndUpgrade": "Top up and upgrade",
"choosePlan": "Choose plan",
"selecting": "Opening...",
"footerHint": "The new term will be added from your current expiry if your subscription is still active."
},
"topupDialog": {
"title": "Top Up Wallet",
"subtitle": "Select an amount or enter a custom amount to add to your wallet.",
@@ -415,17 +490,19 @@
},
"toast": {
"subscriptionSuccessSummary": "Subscription Successful",
"subscriptionSuccessDetail": "Successfully subscribed to {plan}",
"subscriptionSuccessDetail": "Successfully activated {{plan}} for {{term}}",
"subscriptionFailedSummary": "Subscription Failed",
"subscriptionFailedDetail": "Failed to subscribe",
"topupSuccessSummary": "Top-up Successful",
"topupSuccessDetail": "{amount} has been added to your wallet.",
"topupSuccessDetail": "{{amount}} has been added to your wallet.",
"topupFailedSummary": "Top-up Failed",
"topupFailedDetail": "Failed to process top-up.",
"downloadingSummary": "Downloading",
"downloadingDetail": "Downloading invoice #{invoiceId}...",
"downloadedSummary": "Downloaded",
"downloadedDetail": "Invoice #{invoiceId} downloaded successfully"
"downloadedDetail": "Invoice #{invoiceId} downloaded successfully",
"downloadFailedSummary": "Download Failed",
"downloadFailedDetail": "Failed to download invoice."
}
},
"securityConnected": {
@@ -561,7 +638,6 @@
"totalVideos": "Total Videos",
"totalViews": "Total Views",
"storageUsed": "Storage Used",
"uploadsThisMonth": "Uploads This Month",
"trendVsLastMonth": "vs last month"
},
"quickActions": {
@@ -608,7 +684,7 @@
},
"storage": {
"title": "Storage Usage",
"usedOfLimit": "{used} of {limit} used",
"usedOfLimit": "{{used}} of {{limit}} used",
"breakdown": {
"videos": "Videos",
"thumbnails": "Thumbnails & Assets",
@@ -628,19 +704,19 @@
"uploadAction": "Upload Video",
"uploadDropTitle": "Drop to upload",
"uploadDropSubtitle": "Files will be added to the upload queue",
"deleteSelectedConfirm": "Delete {count} videos?",
"deleteSelectedConfirm": "Delete {{count}} videos?",
"deleteSingleConfirm": "Are you sure you want to delete this video?",
"retry": "Try Again",
"emptyTitle": "No videos found",
"emptyDescription": "You haven't uploaded any videos yet. Start by uploading your first video!",
"emptyAction": "Upload Video",
"duplicateSummary": "Duplicate files skipped",
"duplicateDetailOne": "{count} file is already in the queue.",
"duplicateDetailOther": "{count} files are already in the queue."
"duplicateDetailOne": "{{count}} file is already in the queue.",
"duplicateDetailOther": "{{count}} files are already in the queue."
},
"filters": {
"searchPlaceholder": "Search videos...",
"rangeOfTotal": "{first}{last} of {total}",
"rangeOfTotal": "{first}{last} of {{total}}",
"previousPageAria": "Previous page",
"nextPageAria": "Next page",
"allStatus": "All Status",
@@ -660,7 +736,7 @@
"delete": "Delete"
},
"bulk": {
"selected": "{count} selected",
"selected": "{{count}} selected",
"delete": "Delete"
},
"copyModal": {
@@ -684,10 +760,13 @@
"title": "Edit video",
"titleLabel": "Title",
"titlePlaceholder": "Enter video title",
"descriptionLabel": "Description",
"descriptionPlaceholder": "Enter video description",
"adTemplateLabel": "Ad Template",
"adTemplateNone": "No ads",
"adTemplateDefault": "Default",
"adTemplateUpgradeHint": "Upgrade your plan to customize ad templates for this video.",
"adTemplateNoAdsHint": "No ad template selected. This video will play without ads.",
"subtitlesTitle": "Subtitles",
"subtitleTracks": "{count} tracks",
"subtitleTracks": "{{count}} tracks",
"noSubtitles": "No subtitles uploaded yet",
"uploadSubtitle": "Upload Subtitle",
"subtitleFile": "Subtitle File (VTT, SRT, ASS, SSA)",
@@ -774,8 +853,8 @@
"payments": "Payments"
},
"stats": {
"total": "{count} notifications",
"unread": "{count} unread"
"total": "{{count}} notifications",
"unread": "{{count}} unread"
},
"actions": {
"markAllRead": "Mark all read",
@@ -796,9 +875,9 @@
"subtitle": "You're all caught up! Check back later."
},
"time": {
"minutesAgo": "{count} minutes ago",
"hoursAgo": "{count} hours ago",
"daysAgo": "{count} days ago"
"minutesAgo": "{{count}} minutes ago",
"hoursAgo": "{{count}} hours ago",
"daysAgo": "{{count}} days ago"
},
"mocks": {
"videoProcessed": {
@@ -830,23 +909,23 @@
"upload": {
"dialog": {
"title": "Upload Videos",
"subtitle": "Add up to {maxItems} videos per batch",
"subtitle": "Add up to {{maxItems}} videos per batch",
"mode": {
"local": "Local",
"remote": "Remote URL"
},
"queueFullTitle": "Queue is full",
"queueFullDescription": "Maximum {maxItems} videos per batch. Start or clear the current queue first.",
"slotsRemaining": "{remaining} / {maxItems} slots remaining",
"queueFullDescription": "Maximum {{maxItems}} videos per batch. Start or clear the current queue first.",
"slotsRemaining": "{{remaining}} / {{maxItems}} slots remaining",
"formatsHint": "MP4, MOV, MKV · max 10 GB per file",
"close": "Close",
"startUpload": "Start Upload ({count})",
"startUpload": "Start Upload ({{count}})",
"duplicateFilesSummary": "Duplicate files skipped",
"duplicateFilesDetailOne": "{count} file is already in the queue.",
"duplicateFilesDetailOther": "{count} files are already in the queue.",
"duplicateFilesDetailOne": "{{count}} file is already in the queue.",
"duplicateFilesDetailOther": "{{count}} files are already in the queue.",
"duplicateUrlsSummary": "Duplicate URLs skipped",
"duplicateUrlsDetailOne": "{count} URL is already in the queue.",
"duplicateUrlsDetailOther": "{count} URLs are already in the queue."
"duplicateUrlsDetailOne": "{{count}} URL is already in the queue.",
"duplicateUrlsDetailOther": "{{count}} URLs are already in the queue."
},
"dropzone": {
"releaseToAdd": "Release to add",
@@ -869,7 +948,7 @@
"status": {
"pending": "Pending",
"uploading": "Uploading...",
"uploadingThreads": "Uploading · {threads} threads",
"uploadingThreads": "Uploading · {{threads}} threads",
"processing": "Processing...",
"complete": "Done",
"error": "Failed",
@@ -882,7 +961,7 @@
},
"bulkActions": {
"title": "Quick Settings",
"applyToPending": "Apply to {count} pending files",
"applyToPending": "Apply to {{count}} pending files",
"selectCategory": "Select category...",
"category": {
"learning": "Learning",
@@ -895,15 +974,15 @@
},
"indicator": {
"allDone": "All done",
"uploading": "Uploading {count} files...",
"waiting": "{count} files waiting",
"completeProgress": "{complete} of {total} complete",
"uploading": "Uploading {{count}} files...",
"waiting": "{{count}} files waiting",
"completeProgress": "{{complete}} of {{total}} complete",
"start": "Start",
"viewVideos": "View Videos",
"addMoreFiles": "Add more files"
},
"errors": {
"chunkUploadFailed": "Failed to upload chunk {index}",
"chunkUploadFailed": "Failed to upload chunk {{index}}",
"mergeFailed": "Merge failed"
}
},

View File

@@ -10,7 +10,7 @@
"actions": "Hành động",
"status": "Trạng thái",
"videos": "Video",
"selected": "{count} mục đã chọn",
"selected": "{{count}} mục đã chọn",
"copy": "Sao chép"
},
"app": {
@@ -211,6 +211,10 @@
"chromecast": {
"title": "Chromecast",
"description": "Cho phép cast tới thiết bị Chromecast"
},
"encrytion_m3u8": {
"title": "Mã hóa HLS (m3u8)",
"description": "Bật mã hóa cho luồng HLS (Chống download trái phép, chỉ dành cho VIP)"
}
}
},
@@ -240,10 +244,12 @@
"clearDataReject": "Hủy"
},
"toast": {
"deleteAccountSummary": "Đã gửi yêu cầu xóa tài khoản",
"deleteAccountDetail": "Yêu cầu xóa tài khoản của bạn đã được gửi.",
"deleteAccountSummary": "Đã xóa tài khoản",
"deleteAccountDetail": "Tài khoản và dữ liệu liên quan của bạn đã bị xóa vĩnh viễn.",
"clearDataSummary": "Đã xóa dữ liệu",
"clearDataDetail": "Toàn bộ dữ liệu của bạn đã bị xóa vĩnh viễn."
"clearDataDetail": "Toàn bộ dữ liệu của bạn đã bị xóa vĩnh viễn.",
"failedSummary": "Thao tác thất bại",
"failedDetail": "Không thể hoàn tất thao tác đã yêu cầu."
}
},
"domainsDns": {
@@ -282,13 +288,18 @@
"removedSummary": "Đã xóa tên miền",
"removedDetail": "{domain} đã được xóa khỏi whitelist.",
"copiedSummary": "Đã sao chép",
"copiedDetail": "Đã sao chép mã nhúng vào clipboard."
"copiedDetail": "Đã sao chép mã nhúng vào clipboard.",
"failedSummary": "Thao tác thất bại",
"failedDetail": "Không thể tải hoặc cập nhật danh sách tên miền."
}
},
"adsVast": {
"createTemplate": "Tạo mẫu",
"infoBanner": "VAST (Video Ad Serving Template) là schema XML dùng để phân phối ad tags cho trình phát video.",
"createdOn": "Tạo ngày {date}",
"readOnlyTitle": "Cần nâng cấp gói",
"readOnlyMessage": "Ads & VAST ở chế độ chỉ đọc với gói free. Hãy nâng cấp gói để tạo, sửa, xóa, bật/tắt hoặc đặt mẫu mặc định.",
"defaultBadge": "Mặc định",
"createdOn": "Tạo ngày {{date}}",
"emptyTitle": "Chưa có mẫu VAST",
"emptySubtitle": "Tạo mẫu để bắt đầu kiếm tiền từ video",
"formats": {
@@ -300,6 +311,10 @@
"enabled": "bật",
"disabled": "tắt"
},
"actions": {
"default": "Mặc định",
"setDefault": "Đặt mặc định"
},
"table": {
"template": "Mẫu",
"format": "Định dạng",
@@ -315,6 +330,10 @@
"adFormat": "Định dạng quảng cáo",
"adInterval": "Khoảng cách quảng cáo (giây)",
"adIntervalPlaceholder": "30",
"defaultLabel": "Mẫu mặc định",
"defaultCheckbox": "Dùng mẫu này mặc định cho video mới",
"defaultHint": "Khi bật, video mới tạo sẽ tự động dùng mẫu đang active này.",
"defaultDisabledHint": "Hãy bật mẫu này trước khi đặt làm mặc định.",
"update": "Cập nhật",
"create": "Tạo"
},
@@ -339,11 +358,17 @@
"createdDetail": "Mẫu VAST đã được tạo.",
"enabledSummary": "Đã bật mẫu",
"disabledSummary": "Đã tắt mẫu",
"defaultUpdatedSummary": "Đã cập nhật mặc định",
"defaultUpdatedDetail": "{name} hiện là mẫu mặc định cho video mới.",
"upgradeRequiredSummary": "Cần nâng cấp gói",
"upgradeRequiredDetail": "Hãy nâng cấp gói để quản lý Ads & VAST.",
"toggleDetail": "{name} đã được {state}.",
"deletedSummary": "Đã xóa mẫu",
"deletedDetail": "Mẫu VAST đã được gỡ bỏ.",
"copiedSummary": "Đã sao chép",
"copiedDetail": "Đã sao chép URL vào clipboard."
"copiedDetail": "Đã sao chép URL vào clipboard.",
"failedSummary": "Thao tác thất bại",
"failedDetail": "Không thể tải hoặc cập nhật mẫu VAST."
}
},
"profile": {
@@ -353,7 +378,7 @@
"username": "Tên người dùng",
"email": "Địa chỉ email",
"storageUsage": "Dung lượng sử dụng",
"storageUsedOfLimit": "Đã dùng {used} trên {limit}",
"storageUsedOfLimit": "Đã dùng {{used}} trên {{limit}}",
"editProfile": "Chỉnh sửa hồ sơ",
"changePassword": "Đổi mật khẩu"
},
@@ -373,26 +398,50 @@
},
"billing": {
"walletBalance": "Số dư ví",
"currentBalance": "Số dư hiện tại: {balance}",
"currentBalance": "Số dư hiện tại: {{balance}}",
"topUp": "Nạp tiền",
"availablePlans": "Các gói khả dụng",
"availablePlansHint": "Chọn gói phù hợp nhất với nhu cầu của bạn",
"planStorage": "{storage} dung lượng",
"planDuration": "{duration} thời lượng tối đa",
"planUploads": "{count} lượt tải / ngày",
"planStorage": "{{storage}} dung lượng",
"planDuration": "{{duration}} thời lượng tối đa",
"planUploads": "{{count}} lượt tải / ngày",
"currentPlan": "Gói hiện tại",
"processing": "Đang xử lý...",
"upgrade": "Nâng cấp",
"storage": "Dung lượng",
"storageUsedOfLimit": "Đã dùng {used} trên {limit}",
"monthlyUploads": "Lượt tải tháng này",
"uploadsUsedOfLimit": "{used} trên {limit} lượt tải",
"storageUsedOfLimit": "Đã dùng {{used}} trên {{limit}}",
"totalVideos": "Tổng video",
"totalVideosUsedOfLimit": "{{used}} trên {{limit}} video",
"paymentHistory": "Lịch sử thanh toán",
"paymentHistorySubtitle": "Các khoản thanh toán và hóa đơn trước đây của bạn",
"noPaymentHistory": "Không tìm thấy lịch sử thanh toán.",
"download": "Tải xuống",
"durationMinutes": "{minutes} phút",
"durationMinutes": "{{minutes}} phút",
"unknownPlan": "Không xác định",
"walletTopup": "Nạp tiền ví",
"termOption": "{{months}} tháng",
"paymentMethod": {
"wallet": "Dùng số dư ví",
"topup": "Nạp thêm và thanh toán"
},
"subscription": {
"activeTitle": "Gói đang hoạt động",
"activeDescription": " {{plan}} có hiệu lực đến {{date}}",
"expiringTitle": "Sắp hết hạn",
"expiringDescription": " {{plan}} sẽ hết hạn vào {{date}}",
"expiredTitle": "Gói đã hết hạn",
"expiredDescription": "Gói gần nhất của bạn đã kết thúc vào {{date}}",
"freeTitle": "Gói miễn phí",
"freeDescription": "Bạn hiện đang sử dụng gói miễn phí."
},
"history": {
"validUntil": "Hiệu lực đến {{date}}"
},
"cycle": {
"MONTHLY": "Tháng",
"QUARTERLY": "Quý",
"YEARLY": "Năm"
},
"table": {
"date": "Ngày",
"amount": "Số tiền",
@@ -405,6 +454,31 @@
"failed": "Thất bại",
"pending": "Đang chờ"
},
"upgradeDialog": {
"title": "Nâng cấp hoặc gia hạn gói",
"selectedPlan": "Gói đã chọn",
"basePrice": "Giá cơ bản mỗi tháng",
"perMonthBase": "Được dùng làm giá cơ sở cho kỳ hạn bạn chọn",
"termTitle": "Kỳ hạn thanh toán",
"termHint": "Chọn thời gian bạn muốn kích hoạt hoặc gia hạn gói này.",
"totalLabel": "Tổng tiền",
"walletBalanceLabel": "Số dư ví",
"shortfallLabel": "Còn thiếu",
"paymentMethodTitle": "Bạn muốn thanh toán theo cách nào?",
"paymentMethodHint": "Nếu ví chưa đủ, bạn có thể nạp phần thiếu và hoàn tất mua gói trong cùng một flow.",
"walletOptionDescription": "Thử dùng số dư ví hiện tại trước.",
"topupOptionDescription": "Nạp ít nhất {{shortfall}} để hoàn tất giao dịch.",
"walletCoveredHint": "Số dư ví hiện tại đã đủ để thanh toán gói này.",
"walletInsufficientHint": "Ví của bạn còn thiếu {{shortfall}}. Hãy chuyển sang phương án nạp thêm để hoàn tất giao dịch.",
"topupAmountLabel": "Số tiền nạp thêm",
"topupAmountPlaceholder": "Nhập số tiền muốn nạp",
"topupAmountHint": "Phần tiền nạp vượt quá {{shortfall}} sẽ được giữ lại trong ví sau khi nâng cấp.",
"payWithWallet": "Thanh toán bằng ví",
"topupAndUpgrade": "Nạp thêm và nâng cấp",
"choosePlan": "Chọn gói này",
"selecting": "Đang mở...",
"footerHint": "Nếu gói hiện tại vẫn còn hạn, kỳ hạn mới sẽ được cộng tiếp từ ngày hết hạn hiện tại."
},
"topupDialog": {
"title": "Nạp tiền vào ví",
"subtitle": "Chọn số tiền hoặc nhập số tiền tùy chỉnh để nạp vào ví.",
@@ -415,17 +489,19 @@
},
"toast": {
"subscriptionSuccessSummary": "Đăng ký thành công",
"subscriptionSuccessDetail": ăng ký gói {plan} thành công",
"subscriptionSuccessDetail": ã kích hoạt {{plan}} trong {{term}}",
"subscriptionFailedSummary": "Đăng ký thất bại",
"subscriptionFailedDetail": "Không thể đăng ký gói",
"topupSuccessSummary": "Nạp tiền thành công",
"topupSuccessDetail": "{amount} đã được cộng vào ví của bạn.",
"topupSuccessDetail": "{{amount}} đã được cộng vào ví của bạn.",
"topupFailedSummary": "Nạp tiền thất bại",
"topupFailedDetail": "Không thể xử lý nạp tiền.",
"downloadingSummary": "Đang tải",
"downloadingDetail": "Đang tải hóa đơn #{invoiceId}...",
"downloadedSummary": "Đã tải xong",
"downloadedDetail": "Hóa đơn #{invoiceId} đã được tải thành công"
"downloadedDetail": "Hóa đơn #{invoiceId} đã được tải thành công",
"downloadFailedSummary": "Tải xuống thất bại",
"downloadFailedDetail": "Không thể tải hóa đơn."
}
},
"securityConnected": {
@@ -561,7 +637,6 @@
"totalVideos": "Tổng số video",
"totalViews": "Tổng lượt xem",
"storageUsed": "Dung lượng đã dùng",
"uploadsThisMonth": "Lượt tải lên tháng này",
"trendVsLastMonth": "so với tháng trước"
},
"quickActions": {
@@ -608,7 +683,7 @@
},
"storage": {
"title": "Sử dụng dung lượng",
"usedOfLimit": "Đã dùng {used} trên {limit}",
"usedOfLimit": "Đã dùng {{used}} trên {{limit}}",
"breakdown": {
"videos": "Video",
"thumbnails": "Thumbnail & tài nguyên",
@@ -628,15 +703,15 @@
"uploadAction": "Tải video lên",
"uploadDropTitle": "Thả để tải lên",
"uploadDropSubtitle": "Tệp sẽ được thêm vào hàng đợi tải lên",
"deleteSelectedConfirm": "Xóa {count} video?",
"deleteSelectedConfirm": "Xóa {{count}} video?",
"deleteSingleConfirm": "Bạn có chắc muốn xóa video này?",
"retry": "Thử lại",
"emptyTitle": "Không có video",
"emptyDescription": "Bạn chưa tải video nào. Hãy bắt đầu với video đầu tiên!",
"emptyAction": "Tải video lên",
"duplicateSummary": "Đã bỏ qua tệp trùng lặp",
"duplicateDetailOne": "{count} tệp đã có trong hàng đợi.",
"duplicateDetailOther": "{count} tệp đã có trong hàng đợi."
"duplicateDetailOne": "{{count}} tệp đã có trong hàng đợi.",
"duplicateDetailOther": "{{count}} tệp đã có trong hàng đợi."
},
"filters": {
"searchPlaceholder": "Tìm kiếm video...",
@@ -660,7 +735,7 @@
"delete": "Xóa"
},
"bulk": {
"selected": "{count} mục đã chọn",
"selected": "{{count}} mục đã chọn",
"delete": "Xóa"
},
"copyModal": {
@@ -684,10 +759,13 @@
"title": "Chỉnh sửa video",
"titleLabel": "Tiêu đề",
"titlePlaceholder": "Nhập tiêu đề video",
"descriptionLabel": "Mô tả",
"descriptionPlaceholder": "Nhập mô tả video",
"adTemplateLabel": "Mẫu quảng cáo",
"adTemplateNone": "Không có quảng cáo",
"adTemplateDefault": "Mặc định",
"adTemplateUpgradeHint": "Nâng cấp gói để tùy chỉnh mẫu quảng cáo cho video này.",
"adTemplateNoAdsHint": "Chưa chọn mẫu quảng cáo. Video này sẽ phát không có quảng cáo.",
"subtitlesTitle": "Phụ đề",
"subtitleTracks": "{count} track",
"subtitleTracks": "{{count}} track",
"noSubtitles": "Chưa có phụ đề",
"uploadSubtitle": "Tải phụ đề",
"subtitleFile": "Tệp phụ đề (VTT, SRT, ASS, SSA)",
@@ -774,8 +852,8 @@
"payments": "Thanh toán"
},
"stats": {
"total": "{count} thông báo",
"unread": "{count} chưa đọc"
"total": "{{count}} thông báo",
"unread": "{{count}} chưa đọc"
},
"actions": {
"markAllRead": "Đánh dấu đã đọc tất cả",
@@ -796,9 +874,9 @@
"subtitle": "Bạn đã xem hết! Hãy quay lại sau."
},
"time": {
"minutesAgo": "{count} phút trước",
"hoursAgo": "{count} giờ trước",
"daysAgo": "{count} ngày trước"
"minutesAgo": "{{count}} phút trước",
"hoursAgo": "{{count}} giờ trước",
"daysAgo": "{{count}} ngày trước"
},
"mocks": {
"videoProcessed": {
@@ -830,23 +908,23 @@
"upload": {
"dialog": {
"title": "Tải video lên",
"subtitle": "Thêm tối đa {maxItems} video mỗi đợt",
"subtitle": "Thêm tối đa {{maxItems}} video mỗi đợt",
"mode": {
"local": "Tệp cục bộ",
"remote": "URL từ xa"
},
"queueFullTitle": "Hàng đợi đã đầy",
"queueFullDescription": "Tối đa {maxItems} video mỗi đợt. Hãy bắt đầu hoặc xóa hàng đợi hiện tại trước.",
"slotsRemaining": "Còn {remaining} / {maxItems} vị trí",
"queueFullDescription": "Tối đa {{maxItems}} video mỗi đợt. Hãy bắt đầu hoặc xóa hàng đợi hiện tại trước.",
"slotsRemaining": "Còn {{remaining}} / {{maxItems}} vị trí",
"formatsHint": "MP4, MOV, MKV · tối đa 10 GB mỗi tệp",
"close": "Đóng",
"startUpload": "Bắt đầu tải ({count})",
"startUpload": "Bắt đầu tải ({{count}})",
"duplicateFilesSummary": "Đã bỏ qua tệp trùng lặp",
"duplicateFilesDetailOne": "{count} tệp đã có trong hàng đợi.",
"duplicateFilesDetailOther": "{count} tệp đã có trong hàng đợi.",
"duplicateFilesDetailOne": "{{count}} tệp đã có trong hàng đợi.",
"duplicateFilesDetailOther": "{{count}} tệp đã có trong hàng đợi.",
"duplicateUrlsSummary": "Đã bỏ qua URL trùng lặp",
"duplicateUrlsDetailOne": "{count} URL đã có trong hàng đợi.",
"duplicateUrlsDetailOther": "{count} URL đã có trong hàng đợi."
"duplicateUrlsDetailOne": "{{count}} URL đã có trong hàng đợi.",
"duplicateUrlsDetailOther": "{{count}} URL đã có trong hàng đợi."
},
"dropzone": {
"releaseToAdd": "Thả để thêm",
@@ -869,7 +947,7 @@
"status": {
"pending": "Chờ tải",
"uploading": "Đang tải lên...",
"uploadingThreads": "Đang tải · {threads} luồng",
"uploadingThreads": "Đang tải · {{threads}} luồng",
"processing": "Đang xử lý...",
"complete": "Hoàn tất",
"error": "Thất bại",
@@ -882,7 +960,7 @@
},
"bulkActions": {
"title": "Thiết lập nhanh",
"applyToPending": "Áp dụng cho {count} tệp đang chờ",
"applyToPending": "Áp dụng cho {{count}} tệp đang chờ",
"selectCategory": "Chọn danh mục...",
"category": {
"learning": "Học tập",
@@ -895,15 +973,15 @@
},
"indicator": {
"allDone": "Hoàn tất",
"uploading": "Đang tải lên {count} tệp...",
"waiting": "{count} tệp đang chờ",
"completeProgress": "Hoàn tất {complete} / {total}",
"uploading": "Đang tải lên {{count}} tệp...",
"waiting": "{{count}} tệp đang chờ",
"completeProgress": "Hoàn tất {{complete}} / {{total}}",
"start": "Bắt đầu",
"viewVideos": "Xem video",
"addMoreFiles": "Thêm tệp"
},
"errors": {
"chunkUploadFailed": "Không thể tải phần {index}",
"chunkUploadFailed": "Không thể tải phần {{index}}",
"mergeFailed": "Gộp tệp thất bại"
}
},