972 lines
32 KiB
Text
972 lines
32 KiB
Text
#
|
||
msgid ""
|
||
msgstr ""
|
||
"Project-Id-Version: SCHON 2026.1\n"
|
||
"Report-Msgid-Bugs-To: \n"
|
||
"POT-Creation-Date: 2026-01-26 03:06+0300\n"
|
||
"PO-Revision-Date: 2025-01-30 03:27+0000\n"
|
||
"Last-Translator: EGOR GORBUNOV <CONTACT@FUREUNOIR.COM>\n"
|
||
"Language-Team: BRITISH ENGLISH <CONTACT@FUREUNOIR.COM>\n"
|
||
"Language: vi-vn\n"
|
||
"MIME-Version: 1.0\n"
|
||
"Content-Type: text/plain; charset=UTF-8\n"
|
||
"Content-Transfer-Encoding: 8bit\n"
|
||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||
|
||
#: engine/vibes_auth/admin.py:65 engine/vibes_auth/admin.py:66
|
||
#: engine/vibes_auth/graphene/object_types.py:54
|
||
msgid "balance"
|
||
msgstr "Cân bằng"
|
||
|
||
#: engine/vibes_auth/admin.py:74
|
||
msgid "order"
|
||
msgstr "Đặt hàng"
|
||
|
||
#: engine/vibes_auth/admin.py:75 engine/vibes_auth/graphene/object_types.py:51
|
||
msgid "orders"
|
||
msgstr "Đơn hàng"
|
||
|
||
#: engine/vibes_auth/admin.py:85
|
||
msgid "personal info"
|
||
msgstr "Thông tin cá nhân"
|
||
|
||
#: engine/vibes_auth/admin.py:89 engine/vibes_auth/graphene/object_types.py:50
|
||
msgid "permissions"
|
||
msgstr "Quyền"
|
||
|
||
#: engine/vibes_auth/admin.py:102
|
||
msgid "important dates"
|
||
msgstr "Các ngày quan trọng"
|
||
|
||
#: engine/vibes_auth/admin.py:103
|
||
msgid "additional info"
|
||
msgstr "Thông tin bổ sung"
|
||
|
||
#: engine/vibes_auth/admin.py:149
|
||
msgid "You cannot jump over your head!"
|
||
msgstr "Bạn không thể nhảy qua đầu mình!"
|
||
|
||
#: engine/vibes_auth/admin.py:181
|
||
msgid "Close selected threads"
|
||
msgstr "Đóng các chủ đề đã chọn"
|
||
|
||
#: engine/vibes_auth/admin.py:185
|
||
msgid "Open selected threads"
|
||
msgstr "Mở các chủ đề đã chọn"
|
||
|
||
#: engine/vibes_auth/admin.py:208
|
||
msgid "Preview"
|
||
msgstr "Xem trước"
|
||
|
||
#: engine/vibes_auth/admin.py:209 engine/vibes_auth/admin.py:249
|
||
#: engine/vibes_auth/admin.py:326
|
||
msgid "Metadata"
|
||
msgstr "Siêu dữ liệu"
|
||
|
||
#: engine/vibes_auth/admin.py:212
|
||
msgid "preview"
|
||
msgstr "Xem trước"
|
||
|
||
#: engine/vibes_auth/admin.py:221
|
||
msgid "image preview"
|
||
msgstr "Xem trước hình ảnh"
|
||
|
||
#: engine/vibes_auth/admin.py:241
|
||
msgid "Content"
|
||
msgstr "Nội dung"
|
||
|
||
#: engine/vibes_auth/admin.py:243
|
||
msgid "Documentation"
|
||
msgstr "Tài liệu"
|
||
|
||
#: engine/vibes_auth/admin.py:313
|
||
msgid "Scheduling"
|
||
msgstr "Lập lịch"
|
||
|
||
#: engine/vibes_auth/admin.py:315
|
||
msgid "Statistics"
|
||
msgstr "Thống kê"
|
||
|
||
#: engine/vibes_auth/admin.py:329
|
||
msgid "stats"
|
||
msgstr "nhà nước"
|
||
|
||
#: engine/vibes_auth/admin.py:335
|
||
msgid "Prepare recipients (subscribed users)"
|
||
msgstr "Chuẩn bị danh sách người nhận (người dùng đã đăng ký)"
|
||
|
||
#: engine/vibes_auth/admin.py:343
|
||
msgid "Campaign '{}' is not in draft status."
|
||
msgstr "Chiến dịch '{}' không ở trạng thái bản nháp."
|
||
|
||
#: engine/vibes_auth/admin.py:350
|
||
msgid "Preparing recipients for campaign '{}'."
|
||
msgstr "Chuẩn bị cho người nhận tham gia chiến dịch '{}'."
|
||
|
||
#: engine/vibes_auth/admin.py:354
|
||
msgid "Send campaign now"
|
||
msgstr "Gửi chiến dịch ngay bây giờ"
|
||
|
||
#: engine/vibes_auth/admin.py:362
|
||
msgid "Campaign '{}' cannot be sent (status: {})."
|
||
msgstr "Chiến dịch '{}' không thể được gửi (trạng thái: {})."
|
||
|
||
#: engine/vibes_auth/admin.py:372
|
||
msgid "Campaign '{}' has no recipients. Prepare recipients first."
|
||
msgstr ""
|
||
"Chiến dịch '{}' không có người nhận. Vui lòng chuẩn bị danh sách người nhận "
|
||
"trước."
|
||
|
||
#: engine/vibes_auth/admin.py:383
|
||
msgid "Started sending campaign '{}'."
|
||
msgstr "Đã bắt đầu gửi chiến dịch '{}'."
|
||
|
||
#: engine/vibes_auth/admin.py:387
|
||
msgid "Cancel campaign"
|
||
msgstr "Hủy chiến dịch"
|
||
|
||
#: engine/vibes_auth/admin.py:396
|
||
msgid "{} campaign(s) cancelled."
|
||
msgstr "{} chiến dịch đã bị hủy."
|
||
|
||
#: engine/vibes_auth/apps.py:8
|
||
msgid "Accounting"
|
||
msgstr "Kế toán"
|
||
|
||
#: engine/vibes_auth/choices.py:6
|
||
msgid "Open"
|
||
msgstr "Mở"
|
||
|
||
#: engine/vibes_auth/choices.py:7
|
||
msgid "Closed"
|
||
msgstr "Đóng"
|
||
|
||
#: engine/vibes_auth/choices.py:11
|
||
msgid "User"
|
||
msgstr "Người dùng"
|
||
|
||
#: engine/vibes_auth/choices.py:12
|
||
msgid "Staff"
|
||
msgstr "Nhân viên"
|
||
|
||
#: engine/vibes_auth/choices.py:13
|
||
msgid "System"
|
||
msgstr "Hệ thống"
|
||
|
||
#: engine/vibes_auth/docs/drf/messaging.py:17
|
||
msgid "User messages entrypoint"
|
||
msgstr "Điểm nhập tin nhắn của người dùng"
|
||
|
||
#: engine/vibes_auth/docs/drf/messaging.py:19
|
||
msgid ""
|
||
"Anonymous or authenticated non-staff users send messages. Also supports "
|
||
"action=ping."
|
||
msgstr ""
|
||
"Người dùng ẩn danh hoặc đã xác thực nhưng không phải nhân viên có thể gửi "
|
||
"tin nhắn. Cũng hỗ trợ tham số action=ping."
|
||
|
||
#: engine/vibes_auth/docs/drf/messaging.py:30
|
||
msgid "Staff inbox control"
|
||
msgstr "Quản lý hộp thư đến của nhân viên"
|
||
|
||
#: engine/vibes_auth/docs/drf/messaging.py:32
|
||
msgid ""
|
||
"Staff-only actions: list_open, assign, reply, close, ping. Unified event "
|
||
"payloads are emitted."
|
||
msgstr ""
|
||
"Các hành động dành riêng cho nhân viên: list_open, assign, reply, close, "
|
||
"ping. Các gói sự kiện thống nhất được phát ra."
|
||
|
||
#: engine/vibes_auth/docs/drf/messaging.py:43
|
||
msgid "Per-thread staff channel"
|
||
msgstr "Kênh nhân viên theo từng luồng"
|
||
|
||
#: engine/vibes_auth/docs/drf/messaging.py:44
|
||
msgid "Reply, close, and ping within a specific thread."
|
||
msgstr "Trả lời, đóng và nhắc nhở trong một chủ đề cụ thể."
|
||
|
||
#: engine/vibes_auth/docs/drf/views.py:18
|
||
msgid "obtain a token pair"
|
||
msgstr "Nhận cặp token"
|
||
|
||
#: engine/vibes_auth/docs/drf/views.py:19
|
||
msgid "obtain a token pair (refresh and access) for authentication."
|
||
msgstr "Nhận cặp token (refresh và access) để xác thực."
|
||
|
||
#: engine/vibes_auth/docs/drf/views.py:41
|
||
msgid "refresh a token pair"
|
||
msgstr "Cập nhật cặp token"
|
||
|
||
#: engine/vibes_auth/docs/drf/views.py:42
|
||
msgid "refresh a token pair (refresh and access)."
|
||
msgstr "Cập nhật cặp token (cập nhật và truy cập)."
|
||
|
||
#: engine/vibes_auth/docs/drf/views.py:64
|
||
msgid "verify a token"
|
||
msgstr "Xác minh token"
|
||
|
||
#: engine/vibes_auth/docs/drf/views.py:65
|
||
msgid "Verify a token (refresh or access)."
|
||
msgstr "Xác minh token (cập nhật hoặc truy cập)."
|
||
|
||
#: engine/vibes_auth/docs/drf/views.py:71 engine/vibes_auth/views.py:100
|
||
msgid "the token is valid"
|
||
msgstr "Token này hợp lệ"
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:19
|
||
msgid "create a new user"
|
||
msgstr "Tạo một người dùng mới"
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:27
|
||
msgid "retrieve a user's details"
|
||
msgstr "Lấy thông tin chi tiết của người dùng"
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:34
|
||
msgid "update a user's details"
|
||
msgstr "Cập nhật thông tin của người dùng"
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:42
|
||
msgid "partially update a user's details"
|
||
msgstr "Cập nhật một phần thông tin của người dùng"
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:50
|
||
msgid "delete a user"
|
||
msgstr "Xóa người dùng"
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:57
|
||
msgid "reset a user's password by sending a reset password email"
|
||
msgstr "Đặt lại mật khẩu của người dùng bằng cách gửi email đặt lại mật khẩu."
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:65
|
||
msgid "handle avatar upload for a user"
|
||
msgstr "Xử lý việc tải lên avatar cho người dùng"
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:83
|
||
msgid "confirm a user's password reset"
|
||
msgstr "Xác nhận việc đặt lại mật khẩu của người dùng"
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:87
|
||
#: engine/vibes_auth/graphene/mutations.py:351
|
||
#: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107
|
||
#: engine/vibes_auth/viewsets.py:94
|
||
msgid "passwords do not match"
|
||
msgstr "Mật khẩu không khớp."
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:95
|
||
msgid "activate a user's account"
|
||
msgstr "Kích hoạt tài khoản của người dùng"
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:101
|
||
msgid "activation link is invalid or account already activated"
|
||
msgstr "Liên kết kích hoạt không hợp lệ hoặc tài khoản đã được kích hoạt."
|
||
|
||
#: engine/vibes_auth/docs/drf/viewsets.py:111
|
||
msgid "merge client-stored recently viewed products"
|
||
msgstr ""
|
||
"Ghép các sản phẩm đã xem gần đây được lưu trữ trên thiết bị của khách hàng"
|
||
|
||
#: engine/vibes_auth/emailing/choices.py:6
|
||
msgid "Draft"
|
||
msgstr "Bản thảo"
|
||
|
||
#: engine/vibes_auth/emailing/choices.py:7
|
||
msgid "Scheduled"
|
||
msgstr "Được lên lịch"
|
||
|
||
#: engine/vibes_auth/emailing/choices.py:8
|
||
msgid "Sending"
|
||
msgstr "Gửi"
|
||
|
||
#: engine/vibes_auth/emailing/choices.py:9
|
||
#: engine/vibes_auth/emailing/choices.py:15
|
||
msgid "Sent"
|
||
msgstr "Gửi"
|
||
|
||
#: engine/vibes_auth/emailing/choices.py:10
|
||
msgid "Cancelled"
|
||
msgstr "Đã hủy"
|
||
|
||
#: engine/vibes_auth/emailing/choices.py:14
|
||
msgid "Pending"
|
||
msgstr "Đang chờ xử lý"
|
||
|
||
#: engine/vibes_auth/emailing/choices.py:16
|
||
msgid "Failed"
|
||
msgstr "Thất bại"
|
||
|
||
#: engine/vibes_auth/emailing/choices.py:17
|
||
msgid "Opened"
|
||
msgstr "Đã mở"
|
||
|
||
#: engine/vibes_auth/emailing/choices.py:18
|
||
msgid "Clicked"
|
||
msgstr "Đã nhấp chuột"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:35
|
||
#: engine/vibes_auth/emailing/models.py:71
|
||
#: engine/vibes_auth/emailing/models.py:121
|
||
msgid "name"
|
||
msgstr "tên"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:36
|
||
msgid "descriptive name for the image"
|
||
msgstr "Tên mô tả cho hình ảnh"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:40
|
||
msgid "image"
|
||
msgstr "hình ảnh"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:41
|
||
msgid "image file to use in email templates"
|
||
msgstr "Tệp hình ảnh để sử dụng trong mẫu email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:47
|
||
msgid "alt text"
|
||
msgstr "văn bản khác"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:48
|
||
msgid "alternative text for accessibility"
|
||
msgstr "Văn bản thay thế cho tính năng truy cập"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:52
|
||
msgid "email image"
|
||
msgstr "Hình ảnh trong email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:53
|
||
msgid "email images"
|
||
msgstr "Hình ảnh trong email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:72
|
||
msgid "internal name for the template"
|
||
msgstr "Tên nội bộ cho mẫu"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:76
|
||
msgid "slug"
|
||
msgstr "slug"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:77
|
||
msgid "unique identifier for the template"
|
||
msgstr "Mã định danh duy nhất cho mẫu"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:81
|
||
msgid "subject"
|
||
msgstr "chủ đề"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:82
|
||
msgid "email subject line - supports {{ variables }}"
|
||
msgstr "Tiêu đề email - Hỗ trợ {{ variables }}"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:85
|
||
msgid "HTML content"
|
||
msgstr "Nội dung HTML"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:87
|
||
msgid ""
|
||
"email body content - supports {{ user.first_name }}, {{ user.email }}, {{ "
|
||
"project_name }}, {{ unsubscribe_url }}"
|
||
msgstr ""
|
||
"Nội dung thân email - hỗ trợ {{ user.first_name }}, {{ user.email }}, {{ "
|
||
"project_name }}, {{ unsubscribe_url }}"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:94
|
||
msgid "plain text content"
|
||
msgstr "Nội dung văn bản thuần túy"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:95
|
||
msgid "plain text fallback (auto-generated if empty)"
|
||
msgstr "Nội dung văn bản thuần túy (được tạo tự động nếu trống)"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:100
|
||
msgid "available variables"
|
||
msgstr "Các biến có sẵn"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:101
|
||
msgid "documentation of available template variables"
|
||
msgstr "Tài liệu mô tả các biến mẫu có sẵn"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:105
|
||
msgid "email template"
|
||
msgstr "Mẫu email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:106
|
||
msgid "email templates"
|
||
msgstr "Mẫu email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:122
|
||
msgid "internal name for the campaign"
|
||
msgstr "Tên nội bộ cho chiến dịch"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:129
|
||
msgid "template"
|
||
msgstr "mẫu"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:130
|
||
msgid "email template to use for this campaign"
|
||
msgstr "Mẫu email để sử dụng cho chiến dịch này"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:136
|
||
#: engine/vibes_auth/emailing/models.py:206
|
||
msgid "status"
|
||
msgstr "tình trạng"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:141
|
||
msgid "scheduled at"
|
||
msgstr "được lên lịch vào"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:142
|
||
msgid "when to send the campaign (leave empty for manual send)"
|
||
msgstr "Thời điểm gửi chiến dịch (để trống nếu muốn gửi thủ công)"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:147
|
||
#: engine/vibes_auth/emailing/models.py:211
|
||
msgid "sent at"
|
||
msgstr "gửi"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:148
|
||
msgid "when the campaign was actually sent"
|
||
msgstr "Khi chiến dịch thực sự được gửi đi"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:153
|
||
msgid "total recipients"
|
||
msgstr "Tổng số người nhận"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:157
|
||
msgid "sent count"
|
||
msgstr "Số lượng tin nhắn đã gửi"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:161
|
||
msgid "failed count"
|
||
msgstr "Số lần đếm không thành công"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:165
|
||
msgid "opened count"
|
||
msgstr "Số lượng đã mở"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:169
|
||
msgid "clicked count"
|
||
msgstr "Số lần nhấp chuột"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:173
|
||
msgid "email campaign"
|
||
msgstr "Chiến dịch email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:174
|
||
msgid "email campaigns"
|
||
msgstr "Chiến dịch email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:194
|
||
msgid "campaign"
|
||
msgstr "chiến dịch"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:200 engine/vibes_auth/models.py:146
|
||
msgid "user"
|
||
msgstr "Người dùng"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:216
|
||
msgid "opened at"
|
||
msgstr "Được mở tại"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:221
|
||
msgid "clicked at"
|
||
msgstr "được nhấp vào"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:227
|
||
msgid "tracking ID"
|
||
msgstr "Mã theo dõi"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:228
|
||
msgid "unique ID for tracking opens and clicks"
|
||
msgstr "Mã định danh duy nhất để theo dõi số lần mở và nhấp chuột"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:233
|
||
msgid "error message"
|
||
msgstr "Thông báo lỗi"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:234
|
||
msgid "error details if sending failed"
|
||
msgstr "Chi tiết lỗi nếu việc gửi không thành công"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:238
|
||
msgid "campaign recipient"
|
||
msgstr "Người nhận chiến dịch"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:239
|
||
msgid "campaign recipients"
|
||
msgstr "Người nhận chiến dịch"
|
||
|
||
#: engine/vibes_auth/emailing/templates/campaign_base.html:136
|
||
msgid "All rights reserved"
|
||
msgstr "Tất cả các quyền được bảo lưu."
|
||
|
||
#: engine/vibes_auth/emailing/templates/campaign_base.html:138
|
||
msgid "You received this email because you subscribed to our newsletter."
|
||
msgstr "Bạn nhận được email này vì bạn đã đăng ký nhận bản tin của chúng tôi."
|
||
|
||
#: engine/vibes_auth/emailing/templates/campaign_base.html:139
|
||
msgid "Unsubscribe"
|
||
msgstr "Hủy đăng ký"
|
||
|
||
#: engine/vibes_auth/emailing/views.py:71
|
||
msgid "Unsubscribe token is required."
|
||
msgstr "Mã hủy đăng ký là bắt buộc."
|
||
|
||
#: engine/vibes_auth/emailing/views.py:79
|
||
msgid "Invalid unsubscribe token format."
|
||
msgstr "Định dạng mã hủy đăng ký không hợp lệ."
|
||
|
||
#: engine/vibes_auth/emailing/views.py:87
|
||
msgid "User not found."
|
||
msgstr "Không tìm thấy người dùng."
|
||
|
||
#: engine/vibes_auth/emailing/views.py:93
|
||
msgid "You are already unsubscribed."
|
||
msgstr "Bạn đã hủy đăng ký."
|
||
|
||
#: engine/vibes_auth/emailing/views.py:101
|
||
msgid "You have been successfully unsubscribed from our emails."
|
||
msgstr "Bạn đã hủy đăng ký nhận email của chúng tôi thành công."
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:46
|
||
msgid "the user's b64-encoded uuid who referred the new user to us."
|
||
msgstr ""
|
||
"Mã UUID được mã hóa bằng B64 của người dùng đã giới thiệu người dùng mới cho"
|
||
" chúng tôi."
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:68
|
||
msgid "password too weak"
|
||
msgstr "Mật khẩu quá yếu."
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:128
|
||
msgid "malformed email"
|
||
msgstr "Email không hợp lệ"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:140
|
||
#: engine/vibes_auth/serializers.py:117
|
||
#, python-brace-format
|
||
msgid "malformed phone number: {phone_number}"
|
||
msgstr "Số điện thoại không hợp lệ: {phone_number}!"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:165
|
||
#, python-brace-format
|
||
msgid "Invalid attribute format: {attribute_pair}"
|
||
msgstr "Định dạng thuộc tính không hợp lệ: {attribute_pair}!"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:182
|
||
#, python-brace-format
|
||
msgid "{name} does not exist: {uuid}"
|
||
msgstr "{name} không tồn tại: {uuid}!"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:304
|
||
#: engine/vibes_auth/viewsets.py:156 engine/vibes_auth/viewsets.py:180
|
||
msgid "activation link is invalid!"
|
||
msgstr "Liên kết kích hoạt không hợp lệ!"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:307
|
||
msgid "account already activated..."
|
||
msgstr "Tài khoản đã được kích hoạt..."
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:314
|
||
#: engine/vibes_auth/graphene/mutations.py:376
|
||
msgid "something went wrong: {e!s}"
|
||
msgstr "Có sự cố xảy ra: {e!s}"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:358
|
||
#: engine/vibes_auth/viewsets.py:106
|
||
msgid "token is invalid!"
|
||
msgstr "Token không hợp lệ!"
|
||
|
||
#: engine/vibes_auth/graphene/object_types.py:46
|
||
msgid ""
|
||
"the products this user has viewed most recently (max 48), in "
|
||
"reverse‐chronological order"
|
||
msgstr ""
|
||
"Các sản phẩm mà người dùng này đã xem gần đây nhất (tối đa 48), theo thứ tự "
|
||
"thời gian ngược."
|
||
|
||
#: engine/vibes_auth/graphene/object_types.py:49
|
||
#: engine/vibes_auth/models.py:214
|
||
msgid "groups"
|
||
msgstr "Nhóm"
|
||
|
||
#: engine/vibes_auth/graphene/object_types.py:52
|
||
msgid "wishlist"
|
||
msgstr "Danh sách mong muốn"
|
||
|
||
#: engine/vibes_auth/graphene/object_types.py:56
|
||
#: engine/vibes_auth/models.py:70
|
||
msgid "avatar"
|
||
msgstr "Avatar"
|
||
|
||
#: engine/vibes_auth/graphene/object_types.py:58
|
||
msgid "attributes may be used to store custom data"
|
||
msgstr "Các thuộc tính có thể được sử dụng để lưu trữ dữ liệu tùy chỉnh."
|
||
|
||
#: engine/vibes_auth/graphene/object_types.py:62
|
||
#, python-brace-format
|
||
msgid ""
|
||
"language is one of the {settings.LANGUAGES} with default "
|
||
"{settings.LANGUAGE_CODE}"
|
||
msgstr ""
|
||
"Ngôn ngữ là một trong những {settings.LANGUAGES} với mặc định "
|
||
"{settings.LANGUAGE_CODE}"
|
||
|
||
#: engine/vibes_auth/graphene/object_types.py:66
|
||
msgid "address set"
|
||
msgstr "Địa chỉ"
|
||
|
||
#: engine/vibes_auth/messaging/services.py:52
|
||
msgid "Valid email is required for anonymous chats."
|
||
msgstr "Địa chỉ email hợp lệ là bắt buộc cho các cuộc trò chuyện ẩn danh."
|
||
|
||
#: engine/vibes_auth/messaging/services.py:65
|
||
msgid "Message must be 1..1028 characters."
|
||
msgstr "Thông điệp phải có độ dài từ 1 đến 1028 ký tự."
|
||
|
||
#: engine/vibes_auth/messaging/services.py:105
|
||
msgid "We're searching for the operator to answer you already, hold by!"
|
||
msgstr ""
|
||
"Chúng tôi đang tìm kiếm nhân viên tổng đài để trả lời cho bạn, xin vui lòng "
|
||
"chờ một lát!"
|
||
|
||
#: engine/vibes_auth/messaging/services.py:152
|
||
msgid "Assignee must be a staff user."
|
||
msgstr "Người được giao nhiệm vụ phải là người dùng nhân viên."
|
||
|
||
#: engine/vibes_auth/models.py:42
|
||
msgid ""
|
||
"Represents a User entity with customized fields and methods for extended "
|
||
"functionality. This class extends the AbstractUser model and integrates "
|
||
"additional features like custom email login, validation methods, "
|
||
"subscription status, verification, and attributes storage. It also provides "
|
||
"utilities for managing recently viewed items and token-based activation for "
|
||
"verifying accounts. The User model is designed to handle specific use cases "
|
||
"for enhanced user management."
|
||
msgstr ""
|
||
"Đại diện cho thực thể Người dùng với các trường và phương thức tùy chỉnh để "
|
||
"mở rộng chức năng. Lớp này kế thừa từ mô hình AbstractUser và tích hợp các "
|
||
"tính năng bổ sung như đăng nhập bằng email tùy chỉnh, phương thức xác thực, "
|
||
"trạng thái đăng ký, xác minh và lưu trữ thuộc tính. Nó cũng cung cấp các "
|
||
"công cụ để quản lý các mục đã xem gần đây và kích hoạt dựa trên token để xác"
|
||
" minh tài khoản. Mô hình Người dùng được thiết kế để xử lý các trường hợp sử"
|
||
" dụng cụ thể nhằm nâng cao quản lý người dùng."
|
||
|
||
#: engine/vibes_auth/models.py:53
|
||
msgid "email"
|
||
msgstr "Email"
|
||
|
||
#: engine/vibes_auth/models.py:53
|
||
msgid "user email address"
|
||
msgstr "Địa chỉ email của người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:55
|
||
msgid "phone_number"
|
||
msgstr "Số điện thoại"
|
||
|
||
#: engine/vibes_auth/models.py:60
|
||
msgid "user phone number"
|
||
msgstr "Số điện thoại của người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:66
|
||
msgid "first_name"
|
||
msgstr "Họ"
|
||
|
||
#: engine/vibes_auth/models.py:67
|
||
msgid "last_name"
|
||
msgstr "Họ"
|
||
|
||
#: engine/vibes_auth/models.py:73
|
||
msgid "user profile image"
|
||
msgstr "Hình ảnh hồ sơ người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:78
|
||
msgid "is verified"
|
||
msgstr "Đã được xác minh"
|
||
|
||
#: engine/vibes_auth/models.py:79
|
||
msgid "user verification status"
|
||
msgstr "Trạng thái xác minh của người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:82
|
||
msgid "is_active"
|
||
msgstr "Đang hoạt động"
|
||
|
||
#: engine/vibes_auth/models.py:84
|
||
msgid "unselect this instead of deleting accounts"
|
||
msgstr "Hủy chọn tùy chọn này thay vì xóa tài khoản."
|
||
|
||
#: engine/vibes_auth/models.py:87
|
||
msgid "is_subscribed"
|
||
msgstr "Đã đăng ký"
|
||
|
||
#: engine/vibes_auth/models.py:88
|
||
msgid "user's newsletter subscription status"
|
||
msgstr "Tình trạng đăng ký bản tin của người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:92
|
||
msgid "activation token"
|
||
msgstr "Mã kích hoạt"
|
||
|
||
#: engine/vibes_auth/models.py:95
|
||
msgid "unsubscribe token"
|
||
msgstr "Mã hủy đăng ký"
|
||
|
||
#: engine/vibes_auth/models.py:96
|
||
msgid "token for secure one-click unsubscribe from campaigns"
|
||
msgstr ""
|
||
"Token để hủy đăng ký một cách an toàn chỉ với một cú nhấp chuột khỏi các "
|
||
"chiến dịch."
|
||
|
||
#: engine/vibes_auth/models.py:106
|
||
msgid "attributes"
|
||
msgstr "Thuộc tính"
|
||
|
||
#: engine/vibes_auth/models.py:147
|
||
msgid "users"
|
||
msgstr "Người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:154
|
||
msgid "For anonymous threads"
|
||
msgstr "Đối với các chủ đề ẩn danh"
|
||
|
||
#: engine/vibes_auth/models.py:178
|
||
msgid "Chat thread"
|
||
msgstr "Dòng trò chuyện"
|
||
|
||
#: engine/vibes_auth/models.py:179
|
||
msgid "Chat threads"
|
||
msgstr "Các chuỗi trò chuyện"
|
||
|
||
#: engine/vibes_auth/models.py:185
|
||
msgid "provide user or email for anonymous thread."
|
||
msgstr ""
|
||
"Cung cấp tên người dùng hoặc địa chỉ email cho chuỗi thảo luận ẩn danh."
|
||
|
||
#: engine/vibes_auth/models.py:188
|
||
msgid "assignee must be a staff user."
|
||
msgstr "Người được giao nhiệm vụ phải là người dùng nhân viên."
|
||
|
||
#: engine/vibes_auth/models.py:206
|
||
msgid "Chat message"
|
||
msgstr "Tin nhắn trò chuyện"
|
||
|
||
#: engine/vibes_auth/models.py:207
|
||
msgid "Chat messages"
|
||
msgstr "Tin nhắn trò chuyện"
|
||
|
||
#: engine/vibes_auth/models.py:213
|
||
msgid "group"
|
||
msgstr "Nhóm"
|
||
|
||
#: engine/vibes_auth/models.py:220
|
||
msgid "outstanding token"
|
||
msgstr "Token xuất sắc"
|
||
|
||
#: engine/vibes_auth/models.py:221
|
||
msgid "outstanding tokens"
|
||
msgstr "Token xuất sắc"
|
||
|
||
#: engine/vibes_auth/models.py:227
|
||
msgid "blacklisted token"
|
||
msgstr "Token bị đưa vào danh sách đen"
|
||
|
||
#: engine/vibes_auth/models.py:228
|
||
msgid "blacklisted tokens"
|
||
msgstr "Các token bị đưa vào danh sách đen"
|
||
|
||
#: engine/vibes_auth/serializers.py:91
|
||
msgid "attributes must be a dictionary"
|
||
msgstr "`attributes` phải là một từ điển."
|
||
|
||
#: engine/vibes_auth/serializers.py:97
|
||
msgid "business identificator is required when registering as a business"
|
||
msgstr "Mã định danh doanh nghiệp là bắt buộc khi đăng ký kinh doanh."
|
||
|
||
#: engine/vibes_auth/serializers.py:127
|
||
#, python-brace-format
|
||
msgid "malformed email: {email}"
|
||
msgstr "Email không hợp lệ: {email}"
|
||
|
||
#: engine/vibes_auth/serializers.py:150 engine/vibes_auth/serializers.py:175
|
||
#: engine/vibes_auth/serializers.py:198 engine/vibes_auth/serializers.py:210
|
||
msgid "no active account"
|
||
msgstr "Không tìm thấy tài khoản hoạt động."
|
||
|
||
#: engine/vibes_auth/serializers.py:185
|
||
msgid "must set token_class attribute on class."
|
||
msgstr "Phải đặt thuộc tính token_class cho lớp!"
|
||
|
||
#: engine/vibes_auth/serializers.py:271
|
||
msgid "token_blacklisted"
|
||
msgstr "Token bị đưa vào danh sách đen"
|
||
|
||
#: engine/vibes_auth/serializers.py:276
|
||
msgid "invalid token"
|
||
msgstr "Token không hợp lệ"
|
||
|
||
#: engine/vibes_auth/serializers.py:286
|
||
msgid "no user uuid claim present in token"
|
||
msgstr "Không có yêu cầu UUID của người dùng trong token."
|
||
|
||
#: engine/vibes_auth/serializers.py:288
|
||
msgid "user does not exist"
|
||
msgstr "Người dùng không tồn tại"
|
||
|
||
#: engine/vibes_auth/templates/user_reset_password_email.html:7
|
||
msgid "reset your password"
|
||
msgstr "Đặt lại mật khẩu của bạn"
|
||
|
||
#: engine/vibes_auth/templates/user_reset_password_email.html:85
|
||
#: engine/vibes_auth/templates/user_verification_email.html:85
|
||
msgid "logo"
|
||
msgstr "Biểu trưng"
|
||
|
||
#: engine/vibes_auth/templates/user_reset_password_email.html:90
|
||
msgid "password reset confirmation"
|
||
msgstr "Xác nhận đặt lại mật khẩu"
|
||
|
||
#: engine/vibes_auth/templates/user_reset_password_email.html:91
|
||
#: engine/vibes_auth/templates/user_verification_email.html:91
|
||
#, python-format
|
||
msgid "hello %(user_first_name)s,"
|
||
msgstr "Xin chào %(user_first_name)s,"
|
||
|
||
#: engine/vibes_auth/templates/user_reset_password_email.html:92
|
||
msgid ""
|
||
"we have received a request to reset your password. please reset your password\n"
|
||
" by clicking the button below:"
|
||
msgstr ""
|
||
"Chúng tôi đã nhận được yêu cầu đặt lại mật khẩu của bạn. Vui lòng đặt lại "
|
||
"mật khẩu bằng cách nhấp vào nút bên dưới:"
|
||
|
||
#: engine/vibes_auth/templates/user_reset_password_email.html:95
|
||
msgid "reset password"
|
||
msgstr "Đặt lại mật khẩu"
|
||
|
||
#: engine/vibes_auth/templates/user_reset_password_email.html:97
|
||
#: engine/vibes_auth/templates/user_verification_email.html:99
|
||
msgid ""
|
||
"if the button above does not work, please copy and paste the following URL\n"
|
||
" into your web browser:"
|
||
msgstr ""
|
||
"Nếu nút ở trên không hoạt động, vui lòng sao chép và dán URL sau vào trình "
|
||
"duyệt web của bạn:"
|
||
|
||
#: engine/vibes_auth/templates/user_reset_password_email.html:100
|
||
msgid ""
|
||
"if you did not send this request, please ignore this\n"
|
||
" email."
|
||
msgstr "Nếu bạn không gửi yêu cầu này, vui lòng bỏ qua email này."
|
||
|
||
#: engine/vibes_auth/templates/user_reset_password_email.html:102
|
||
#, python-format
|
||
msgid "best regards,<br>The %(project_name)s team"
|
||
msgstr "Trân trọng,<br>Đội ngũ %(project_name)s"
|
||
|
||
#: engine/vibes_auth/templates/user_reset_password_email.html:108
|
||
#: engine/vibes_auth/templates/user_verification_email.html:108
|
||
msgid "all rights reserved"
|
||
msgstr "Tất cả các quyền được bảo lưu."
|
||
|
||
#: engine/vibes_auth/templates/user_verification_email.html:7
|
||
#: engine/vibes_auth/templates/user_verification_email.html:90
|
||
msgid "activate your account"
|
||
msgstr "Kích hoạt tài khoản của bạn"
|
||
|
||
#: engine/vibes_auth/templates/user_verification_email.html:92
|
||
#, python-format
|
||
msgid ""
|
||
"thank you for signing up for %(project_name)s. please activate your account\n"
|
||
" by clicking the button below:"
|
||
msgstr ""
|
||
"Cảm ơn bạn đã đăng ký cho %(project_name)s. Vui lòng kích hoạt tài khoản của"
|
||
" bạn bằng cách nhấp vào nút bên dưới:"
|
||
|
||
#: engine/vibes_auth/templates/user_verification_email.html:96
|
||
msgid ""
|
||
"activate\n"
|
||
" account"
|
||
msgstr "Kích hoạt tài khoản"
|
||
|
||
#: engine/vibes_auth/templates/user_verification_email.html:102
|
||
#, python-format
|
||
msgid "best regards,<br>the %(project_name)s team"
|
||
msgstr "Trân trọng,<br>Đội ngũ %(project_name)s"
|
||
|
||
#: engine/vibes_auth/utils/emailing.py:24
|
||
#, python-brace-format
|
||
msgid "{settings.PROJECT_NAME} | Activate Account"
|
||
msgstr "{settings.PROJECT_NAME} | Kích hoạt tài khoản"
|
||
|
||
#: engine/vibes_auth/utils/emailing.py:63
|
||
#, python-brace-format
|
||
msgid "{settings.PROJECT_NAME} | Reset Password"
|
||
msgstr "{settings.PROJECT_NAME} | Đặt lại mật khẩu"
|
||
|
||
#: engine/vibes_auth/validators.py:15
|
||
msgid ""
|
||
"invalid phone number format. the number must be entered in the format: "
|
||
"\"+999999999\". up to 15 digits allowed."
|
||
msgstr ""
|
||
"Định dạng số điện thoại không hợp lệ. Số điện thoại phải được nhập theo định"
|
||
" dạng: \"+999999999\". Cho phép tối đa 15 chữ số."
|
||
|
||
#: engine/vibes_auth/views.py:34
|
||
msgid ""
|
||
"Represents a view for getting a pair of access and refresh tokens and user's"
|
||
" data. This view manages the process of handling token-based authentication "
|
||
"where clients can get a pair of JWT tokens (access and refresh) using "
|
||
"provided credentials. It is built on top of a base token view and ensures "
|
||
"proper rate limiting to protect against brute force attacks."
|
||
msgstr ""
|
||
"Đại diện cho một giao diện để lấy cặp token truy cập và token làm mới cùng "
|
||
"với dữ liệu người dùng. Giao diện này quản lý quá trình xác thực dựa trên "
|
||
"token, cho phép các client lấy cặp token JWT (truy cập và làm mới) bằng cách"
|
||
" sử dụng thông tin đăng nhập được cung cấp. Nó được xây dựng dựa trên một "
|
||
"giao diện token cơ sở và đảm bảo giới hạn tốc độ thích hợp để bảo vệ khỏi "
|
||
"các cuộc tấn công dò mật khẩu."
|
||
|
||
#: engine/vibes_auth/views.py:58
|
||
msgid ""
|
||
"Handles refreshing of tokens for authentication purposes. This class is used"
|
||
" to provide functionality for token refresh operations as part of an "
|
||
"authentication system. It ensures that clients can request a refreshed token"
|
||
" within defined rate limits. The view relies on the associated serializer to"
|
||
" validate token refresh inputs and produce appropriate outputs."
|
||
msgstr ""
|
||
"Xử lý việc làm mới token cho mục đích xác thực. Lớp này được sử dụng để cung"
|
||
" cấp chức năng cho các hoạt động làm mới token như một phần của hệ thống xác"
|
||
" thực. Nó đảm bảo rằng các client có thể yêu cầu token đã được làm mới trong"
|
||
" giới hạn tỷ lệ được định nghĩa. Giao diện người dùng dựa vào trình "
|
||
"serializer liên quan để xác thực các đầu vào làm mới token và tạo ra các đầu"
|
||
" ra phù hợp."
|
||
|
||
#: engine/vibes_auth/views.py:83
|
||
msgid ""
|
||
"Represents a view for verifying JSON Web Tokens (JWT) using specific "
|
||
"serialization and validation logic. "
|
||
msgstr ""
|
||
"Đại diện cho một giao diện dùng để xác minh JSON Web Tokens (JWT) bằng cách "
|
||
"sử dụng logic serialization và xác thực cụ thể."
|
||
|
||
#: engine/vibes_auth/views.py:103
|
||
msgid "the token is invalid"
|
||
msgstr "Token không hợp lệ"
|
||
|
||
#: engine/vibes_auth/viewsets.py:44
|
||
msgid ""
|
||
"User view set implementation.\n"
|
||
"Provides a set of actions that manage user-related data such as creation, retrieval, updates, deletion, and custom actions including password reset, avatar upload, account activation, and recently viewed items merging. This class extends the mixins and GenericViewSet for robust API handling."
|
||
msgstr ""
|
||
"Thực hiện bộ xem người dùng. Cung cấp một tập hợp các hành động quản lý dữ "
|
||
"liệu liên quan đến người dùng như tạo, truy xuất, cập nhật, xóa và các hành "
|
||
"động tùy chỉnh bao gồm đặt lại mật khẩu, tải lên avatar, kích hoạt tài khoản"
|
||
" và hợp nhất các mục đã xem gần đây. Lớp này mở rộng các mixin và "
|
||
"GenericViewSet để xử lý API một cách mạnh mẽ."
|
||
|
||
#: engine/vibes_auth/viewsets.py:113
|
||
msgid "password reset successfully"
|
||
msgstr "Mật khẩu đã được đặt lại thành công!"
|
||
|
||
#: engine/vibes_auth/viewsets.py:161
|
||
msgid "account already activated!"
|
||
msgstr "Bạn đã kích hoạt tài khoản..."
|