Updated DeepL API requests to include the `Authorization` header with the auth key instead of passing it as a form parameter. This aligns with updated API requirements and ensures compatibility. + I18N
1109 lines
40 KiB
Text
1109 lines
40 KiB
Text
#
|
||
msgid ""
|
||
msgstr ""
|
||
"Project-Id-Version: SCHON 2026.1\n"
|
||
"Report-Msgid-Bugs-To: \n"
|
||
"POT-Creation-Date: 2026-03-05 16:31+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:64 engine/vibes_auth/admin.py:65
|
||
#: engine/vibes_auth/graphene/object_types.py:54
|
||
msgid "balance"
|
||
msgstr "Cân bằng"
|
||
|
||
#: engine/vibes_auth/admin.py:73
|
||
msgid "order"
|
||
msgstr "Đặt hàng"
|
||
|
||
#: engine/vibes_auth/admin.py:74 engine/vibes_auth/graphene/object_types.py:51
|
||
msgid "orders"
|
||
msgstr "Đơn hàng"
|
||
|
||
#: engine/vibes_auth/admin.py:84
|
||
msgid "personal info"
|
||
msgstr "Thông tin cá nhân"
|
||
|
||
#: engine/vibes_auth/admin.py:88 engine/vibes_auth/graphene/object_types.py:50
|
||
msgid "permissions"
|
||
msgstr "Quyền"
|
||
|
||
#: engine/vibes_auth/admin.py:101
|
||
msgid "important dates"
|
||
msgstr "Các ngày quan trọng"
|
||
|
||
#: engine/vibes_auth/admin.py:102
|
||
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:209
|
||
msgid "Content"
|
||
msgstr "Nội dung"
|
||
|
||
#: engine/vibes_auth/admin.py:211
|
||
msgid "Documentation"
|
||
msgstr "Tài liệu"
|
||
|
||
#: engine/vibes_auth/admin.py:217 engine/vibes_auth/admin.py:294
|
||
msgid "Metadata"
|
||
msgstr "Siêu dữ liệu"
|
||
|
||
#: engine/vibes_auth/admin.py:281
|
||
msgid "Scheduling"
|
||
msgstr "Lập lịch"
|
||
|
||
#: engine/vibes_auth/admin.py:283
|
||
msgid "Statistics"
|
||
msgstr "Thống kê"
|
||
|
||
#: engine/vibes_auth/admin.py:297
|
||
msgid "stats"
|
||
msgstr "nhà nước"
|
||
|
||
#: engine/vibes_auth/admin.py:303
|
||
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:311
|
||
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:318
|
||
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:322
|
||
msgid "Send campaign now"
|
||
msgstr "Gửi chiến dịch ngay bây giờ"
|
||
|
||
#: engine/vibes_auth/admin.py:330
|
||
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:340
|
||
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:351
|
||
msgid "Started sending campaign '{}'."
|
||
msgstr "Đã bắt đầu gửi chiến dịch '{}'."
|
||
|
||
#: engine/vibes_auth/admin.py:355
|
||
msgid "Cancel campaign"
|
||
msgstr "Hủy chiến dịch"
|
||
|
||
#: engine/vibes_auth/admin.py:364
|
||
msgid "{} campaign(s) cancelled."
|
||
msgstr "{} chiến dịch đã bị hủy."
|
||
|
||
#: engine/vibes_auth/admin_site.py:24
|
||
msgid "Verification code"
|
||
msgstr "Mã xác minh"
|
||
|
||
#: engine/vibes_auth/admin_site.py:62
|
||
msgid "A verification code has been sent to your email."
|
||
msgstr "Một mã xác minh đã được gửi đến email của bạn."
|
||
|
||
#: engine/vibes_auth/admin_site.py:118
|
||
msgid "Invalid or expired code. Please try again."
|
||
msgstr "Mã không hợp lệ hoặc đã hết hạn. Vui lòng thử lại."
|
||
|
||
#: engine/vibes_auth/admin_site.py:124
|
||
#: engine/vibes_auth/templates/admin/verify_otp.html:10
|
||
msgid "Two-factor authentication"
|
||
msgstr "Xác thực hai yếu tố"
|
||
|
||
#: 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/emailing.py:18
|
||
msgid ""
|
||
"UUID token for unsubscribing. This token is unique per user and is included "
|
||
"in the unsubscribe link of every campaign email. The token remains constant "
|
||
"for each user unless regenerated."
|
||
msgstr ""
|
||
"Token UUID để hủy đăng ký. Token này là duy nhất cho mỗi người dùng và được "
|
||
"bao gồm trong liên kết hủy đăng ký của mỗi email chiến dịch. Token này sẽ "
|
||
"không thay đổi cho mỗi người dùng trừ khi được tạo lại."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:37
|
||
#: engine/vibes_auth/emailing/views.py:69
|
||
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/docs/drf/emailing.py:45
|
||
#: engine/vibes_auth/emailing/views.py:61
|
||
msgid "You are already unsubscribed."
|
||
msgstr "Bạn đã hủy đăng ký."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:52
|
||
msgid "Unsubscribe from email campaigns"
|
||
msgstr "Hủy đăng ký khỏi các chiến dịch email"
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:54
|
||
msgid ""
|
||
"Unsubscribe a user from all marketing email campaigns using their unique unsubscribe token.\n"
|
||
"\n"
|
||
"This endpoint is designed for email client compatibility where clicking a link triggers a GET request. The user will no longer receive promotional emails after successful unsubscription.\n"
|
||
"\n"
|
||
"**Note:** Transactional emails (order confirmations, password resets, etc.) are not affected by this setting."
|
||
msgstr ""
|
||
"Hủy đăng ký người dùng khỏi tất cả các chiến dịch email tiếp thị bằng mã hủy"
|
||
" đăng ký duy nhất của họ. Điểm cuối này được thiết kế để tương thích với các"
|
||
" ứng dụng email, nơi việc nhấp vào liên kết sẽ kích hoạt yêu cầu GET. Người "
|
||
"dùng sẽ không còn nhận được email quảng cáo sau khi hủy đăng ký thành công. "
|
||
"**Lưu ý:** Email giao dịch (xác nhận đơn hàng, đặt lại mật khẩu, v.v.) không"
|
||
" bị ảnh hưởng bởi cài đặt này."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:66
|
||
#: engine/vibes_auth/docs/drf/emailing.py:146
|
||
msgid "Successfully unsubscribed from email campaigns."
|
||
msgstr "Đã hủy đăng ký thành công khỏi các chiến dịch email."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:82
|
||
#: engine/vibes_auth/docs/drf/emailing.py:162
|
||
msgid "Invalid or missing unsubscribe token."
|
||
msgstr "Mã hủy đăng ký không hợp lệ hoặc thiếu."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:96
|
||
#: engine/vibes_auth/docs/drf/emailing.py:176
|
||
msgid "User associated with the token was not found."
|
||
msgstr "Người dùng liên kết với token không được tìm thấy."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:118
|
||
msgid "One-Click Unsubscribe (RFC 8058)"
|
||
msgstr "Hủy đăng ký chỉ với một cú nhấp chuột (RFC 8058)"
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:120
|
||
msgid ""
|
||
"RFC 8058 compliant one-click unsubscribe endpoint for email campaigns.\n"
|
||
"\n"
|
||
"This endpoint supports the List-Unsubscribe-Post header mechanism defined in RFC 8058, which allows email clients to unsubscribe users with a single click without leaving the email application.\n"
|
||
"\n"
|
||
"The token can be provided either as a query parameter or in the request body.\n"
|
||
"\n"
|
||
"**Standards Compliance:**\n"
|
||
"- RFC 8058: Signaling One-Click Functionality for List Email Headers\n"
|
||
"- RFC 2369: The Use of URLs as Meta-Syntax for Core Mail List Commands\n"
|
||
"\n"
|
||
"**Note:** Transactional emails are not affected by this setting."
|
||
msgstr ""
|
||
"Điểm cuối hủy đăng ký một cú nhấp chuột tuân thủ RFC 8058 cho các chiến dịch email. Điểm cuối này hỗ trợ cơ chế tiêu đề List-Unsubscribe-Post được định nghĩa trong RFC 8058, cho phép các ứng dụng email hủy đăng ký người dùng chỉ với một cú nhấp chuột mà không cần rời khỏi ứng dụng email. Token có thể được cung cấp dưới dạng tham số truy vấn hoặc trong phần thân yêu cầu.\n"
|
||
"\n"
|
||
"**Tuân thủ tiêu chuẩn:** - RFC 8058: Tín hiệu chức năng một cú nhấp chuột cho tiêu đề danh sách email - RFC 2369: Sử dụng URL làm cú pháp meta cho các lệnh danh sách email cơ bản **Lưu ý:** Email giao dịch không bị ảnh hưởng bởi cài đặt này."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:137
|
||
msgid ""
|
||
"Unsubscribe token (alternative to query parameter). Can be omitted if token "
|
||
"is provided in URL."
|
||
msgstr ""
|
||
"Token hủy đăng ký (thay thế cho tham số truy vấn). Có thể bỏ qua nếu token "
|
||
"đã được cung cấp trong URL."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:200
|
||
msgid "Track email open event"
|
||
msgstr "Theo dõi sự kiện mở email"
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:202
|
||
msgid ""
|
||
"Records when a campaign email is opened by the recipient.\n"
|
||
"\n"
|
||
"This endpoint is called automatically when the tracking pixel (1x1 transparent GIF) embedded in the email is loaded by the recipient's email client.\n"
|
||
"\n"
|
||
"**How it works:**\n"
|
||
"1. Each campaign email contains a unique tracking pixel URL with a `tid` parameter\n"
|
||
"2. When the email is opened and images are loaded, this endpoint is called\n"
|
||
"3. The recipient's status is updated to 'opened' and the timestamp is recorded\n"
|
||
"4. The campaign's aggregate opened count is updated\n"
|
||
"\n"
|
||
"**Privacy considerations:**\n"
|
||
"- Only the first open is recorded (subsequent opens are ignored)\n"
|
||
"- No personal information beyond the tracking ID is logged\n"
|
||
"- Users who disable image loading will not trigger this event\n"
|
||
"\n"
|
||
"**Response:**\n"
|
||
"Returns a 1x1 transparent GIF image regardless of whether tracking succeeded, to ensure consistent behavior and prevent information leakage."
|
||
msgstr ""
|
||
"Ghi lại thời điểm email chiến dịch được người nhận mở. Điểm cuối này được gọi tự động khi pixel theo dõi (GIF trong suốt 1x1) được nhúng trong email được trình duyệt email của người nhận tải xuống.\n"
|
||
"\n"
|
||
"**Cách hoạt động:** 1. Mỗi email chiến dịch chứa một URL pixel theo dõi duy nhất với tham số `tid` 2. Khi email được mở và hình ảnh được tải, điểm cuối này được gọi 3. Trạng thái của người nhận được cập nhật thành 'đã mở' và thời gian ghi lại 4. Số lần mở tổng hợp của chiến dịch được cập nhật **Xem xét về quyền riêng tư:**\n"
|
||
"- Chỉ lần mở đầu tiên được ghi lại (các lần mở sau đó bị bỏ qua) - Không ghi lại thông tin cá nhân ngoài ID theo dõi - Người dùng tắt tính năng tải hình ảnh sẽ không kích hoạt sự kiện này **Phản hồi:** Trả về hình ảnh GIF trong suốt 1x1 bất kể việc theo dõi thành công hay không, để đảm bảo hành vi nhất quán và ngăn chặn rò rỉ thông tin."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:223
|
||
msgid ""
|
||
"Tracking ID (UUID) unique to each campaign-recipient combination. This ID "
|
||
"links the open event to a specific recipient and campaign."
|
||
msgstr ""
|
||
"Mã theo dõi (UUID) duy nhất cho mỗi cặp chiến dịch-người nhận. Mã này liên "
|
||
"kết sự kiện mở với một người nhận cụ thể và chiến dịch."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:241
|
||
msgid ""
|
||
"1x1 transparent GIF image. Always returned regardless of tracking status to "
|
||
"maintain consistent behavior."
|
||
msgstr ""
|
||
"Hình ảnh GIF trong suốt 1x1. Luôn được trả về bất kể trạng thái theo dõi để "
|
||
"duy trì hành vi nhất quán."
|
||
|
||
#: engine/vibes_auth/docs/drf/emailing.py:247
|
||
msgid ""
|
||
"Returned when no tracking ID is provided. Note: Invalid tracking IDs still "
|
||
"return 200 with the GIF to prevent enumeration attacks."
|
||
msgstr ""
|
||
"Trả về khi không có mã theo dõi được cung cấp. Lưu ý: Các mã theo dõi không "
|
||
"hợp lệ vẫn trả về mã trạng thái 200 kèm theo GIF để ngăn chặn các cuộc tấn "
|
||
"công liệt kê."
|
||
|
||
#: 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:358
|
||
#: engine/vibes_auth/serializers.py:103 engine/vibes_auth/serializers.py:107
|
||
#: engine/vibes_auth/viewsets.py:97
|
||
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:38
|
||
#: engine/vibes_auth/emailing/models.py:88
|
||
msgid "name"
|
||
msgstr "tên"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:39
|
||
msgid "internal name for the template"
|
||
msgstr "Tên nội bộ cho mẫu"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:43
|
||
msgid "slug"
|
||
msgstr "slug"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:44
|
||
msgid "unique identifier for the template"
|
||
msgstr "Mã định danh duy nhất cho mẫu"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:48
|
||
msgid "subject"
|
||
msgstr "chủ đề"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:49
|
||
msgid "email subject line - supports {{ variables }}"
|
||
msgstr "Tiêu đề email - Hỗ trợ {{ variables }}"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:52
|
||
msgid "content"
|
||
msgstr "nội dung"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:54
|
||
msgid ""
|
||
"email body in markdown - 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:61
|
||
msgid "plain text content"
|
||
msgstr "Nội dung văn bản thuần túy"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:62
|
||
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:67
|
||
msgid "available variables"
|
||
msgstr "Các biến có sẵn"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:68
|
||
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:72
|
||
msgid "email template"
|
||
msgstr "Mẫu email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:73
|
||
msgid "email templates"
|
||
msgstr "Mẫu email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:89
|
||
msgid "internal name for the campaign"
|
||
msgstr "Tên nội bộ cho chiến dịch"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:96
|
||
msgid "template"
|
||
msgstr "mẫu"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:97
|
||
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:103
|
||
#: engine/vibes_auth/emailing/models.py:173
|
||
msgid "status"
|
||
msgstr "tình trạng"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:108
|
||
msgid "scheduled at"
|
||
msgstr "được lên lịch vào"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:109
|
||
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:114
|
||
#: engine/vibes_auth/emailing/models.py:178
|
||
msgid "sent at"
|
||
msgstr "gửi"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:115
|
||
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:120
|
||
msgid "total recipients"
|
||
msgstr "Tổng số người nhận"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:124
|
||
msgid "sent count"
|
||
msgstr "Số lượng tin nhắn đã gửi"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:128
|
||
msgid "failed count"
|
||
msgstr "Số lần đếm không thành công"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:132
|
||
msgid "opened count"
|
||
msgstr "Số lượng đã mở"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:136
|
||
msgid "clicked count"
|
||
msgstr "Số lần nhấp chuột"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:140
|
||
msgid "email campaign"
|
||
msgstr "Chiến dịch email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:141
|
||
msgid "email campaigns"
|
||
msgstr "Chiến dịch email"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:161
|
||
msgid "campaign"
|
||
msgstr "chiến dịch"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:167 engine/vibes_auth/models.py:183
|
||
msgid "user"
|
||
msgstr "Người dùng"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:183
|
||
msgid "opened at"
|
||
msgstr "Được mở tại"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:188
|
||
msgid "clicked at"
|
||
msgstr "được nhấp vào"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:194
|
||
msgid "tracking ID"
|
||
msgstr "Mã theo dõi"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:195
|
||
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:200
|
||
msgid "error message"
|
||
msgstr "Thông báo lỗi"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:201
|
||
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:205
|
||
msgid "campaign recipient"
|
||
msgstr "Người nhận chiến dịch"
|
||
|
||
#: engine/vibes_auth/emailing/models.py:206
|
||
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:39
|
||
msgid "Unsubscribe token is required."
|
||
msgstr "Mã hủy đăng ký là bắt buộc."
|
||
|
||
#: engine/vibes_auth/emailing/views.py:47
|
||
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:55
|
||
msgid "User not found."
|
||
msgstr "Không tìm thấy người dùng."
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:47
|
||
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:70
|
||
msgid "password too weak"
|
||
msgstr "Mật khẩu quá yếu."
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:130
|
||
msgid "malformed email"
|
||
msgstr "Email không hợp lệ"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:142
|
||
#: 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:167
|
||
#, 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:184
|
||
#, python-brace-format
|
||
msgid "{name} does not exist: {uuid}"
|
||
msgstr "{name} không tồn tại: {uuid}!"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:309
|
||
#: engine/vibes_auth/viewsets.py:174 engine/vibes_auth/viewsets.py:198
|
||
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:312
|
||
msgid "account already activated..."
|
||
msgstr "Tài khoản đã được kích hoạt..."
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:319
|
||
#: engine/vibes_auth/graphene/mutations.py:383
|
||
msgid "something went wrong: {e!s}"
|
||
msgstr "Có sự cố xảy ra: {e!s}"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:365
|
||
#: engine/vibes_auth/viewsets.py:109
|
||
msgid "token is invalid!"
|
||
msgstr "Token không hợp lệ!"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:403
|
||
msgid "only image files are allowed (jpg, png, gif, webp)"
|
||
msgstr "Chỉ cho phép các tệp hình ảnh (jpg, png, gif, webp)"
|
||
|
||
#: engine/vibes_auth/graphene/mutations.py:406
|
||
msgid "file size must not exceed 5 MB"
|
||
msgstr "Kích thước tệp không được vượt quá 5 MB."
|
||
|
||
#: 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:270
|
||
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:75
|
||
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:44
|
||
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:55
|
||
msgid "email"
|
||
msgstr "Email"
|
||
|
||
#: engine/vibes_auth/models.py:55
|
||
msgid "user email address"
|
||
msgstr "Địa chỉ email của người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:57
|
||
msgid "phone_number"
|
||
msgstr "Số điện thoại"
|
||
|
||
#: engine/vibes_auth/models.py:61
|
||
msgid "user phone number"
|
||
msgstr "Số điện thoại của người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:68
|
||
msgid "first_name"
|
||
msgstr "Họ"
|
||
|
||
#: engine/vibes_auth/models.py:71
|
||
msgid "last_name"
|
||
msgstr "Họ"
|
||
|
||
#: engine/vibes_auth/models.py:78
|
||
msgid "user profile image"
|
||
msgstr "Hình ảnh hồ sơ người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:83
|
||
msgid "is verified"
|
||
msgstr "Đã được xác minh"
|
||
|
||
#: engine/vibes_auth/models.py:84
|
||
msgid "user verification status"
|
||
msgstr "Trạng thái xác minh của người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:87
|
||
msgid "is_active"
|
||
msgstr "Đang hoạt động"
|
||
|
||
#: engine/vibes_auth/models.py:89
|
||
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:92
|
||
msgid "is_subscribed"
|
||
msgstr "Đã đăng ký"
|
||
|
||
#: engine/vibes_auth/models.py:93
|
||
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:98
|
||
msgid "activation token"
|
||
msgstr "Mã kích hoạt"
|
||
|
||
#: engine/vibes_auth/models.py:103
|
||
msgid "activation token created"
|
||
msgstr "Token kích hoạt đã được tạo"
|
||
|
||
#: engine/vibes_auth/models.py:107
|
||
msgid "unsubscribe token"
|
||
msgstr "Mã hủy đăng ký"
|
||
|
||
#: engine/vibes_auth/models.py:108
|
||
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:118
|
||
msgid "attributes"
|
||
msgstr "Thuộc tính"
|
||
|
||
#: engine/vibes_auth/models.py:184
|
||
msgid "users"
|
||
msgstr "Người dùng"
|
||
|
||
#: engine/vibes_auth/models.py:202
|
||
msgid "admin OTP code"
|
||
msgstr "Mã OTP của quản trị viên"
|
||
|
||
#: engine/vibes_auth/models.py:203
|
||
msgid "admin OTP codes"
|
||
msgstr "Mã OTP của quản trị viên"
|
||
|
||
#: engine/vibes_auth/models.py:210
|
||
msgid "For anonymous threads"
|
||
msgstr "Đối với các chủ đề ẩn danh"
|
||
|
||
#: engine/vibes_auth/models.py:234
|
||
msgid "Chat thread"
|
||
msgstr "Dòng trò chuyện"
|
||
|
||
#: engine/vibes_auth/models.py:235
|
||
msgid "Chat threads"
|
||
msgstr "Các chuỗi trò chuyện"
|
||
|
||
#: engine/vibes_auth/models.py:241
|
||
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:244
|
||
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:262
|
||
msgid "Chat message"
|
||
msgstr "Tin nhắn trò chuyện"
|
||
|
||
#: engine/vibes_auth/models.py:263
|
||
msgid "Chat messages"
|
||
msgstr "Tin nhắn trò chuyện"
|
||
|
||
#: engine/vibes_auth/models.py:269
|
||
msgid "group"
|
||
msgstr "Nhóm"
|
||
|
||
#: engine/vibes_auth/models.py:276
|
||
msgid "outstanding token"
|
||
msgstr "Token xuất sắc"
|
||
|
||
#: engine/vibes_auth/models.py:277
|
||
msgid "outstanding tokens"
|
||
msgstr "Token xuất sắc"
|
||
|
||
#: engine/vibes_auth/models.py:283
|
||
msgid "blacklisted token"
|
||
msgstr "Token bị đưa vào danh sách đen"
|
||
|
||
#: engine/vibes_auth/models.py:284
|
||
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/admin/verify_otp.html:27
|
||
msgid "Verify"
|
||
msgstr "Xác minh"
|
||
|
||
#: 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:27
|
||
#, 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:66
|
||
#, 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:47
|
||
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:116
|
||
msgid "password reset successfully"
|
||
msgstr "Mật khẩu đã được đặt lại thành công!"
|
||
|
||
#: engine/vibes_auth/viewsets.py:146
|
||
msgid ""
|
||
"Account already registered but not yet activated. A new activation email has"
|
||
" been sent."
|
||
msgstr ""
|
||
"Tài khoản đã được đăng ký nhưng chưa được kích hoạt. Một email kích hoạt mới"
|
||
" đã được gửi."
|
||
|
||
#: engine/vibes_auth/viewsets.py:179
|
||
msgid "account already activated!"
|
||
msgstr "Bạn đã kích hoạt tài khoản..."
|