mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-24 16:03:02 +00:00
582 lines
42 KiB
TypeScript
582 lines
42 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
||
|
||
const settings: TranslationStrings = {
|
||
'settings.title': 'Cài đặt',
|
||
'settings.subtitle': 'Định cấu hình cài đặt cá nhân của bạn',
|
||
'settings.tabs.display': 'Hiển thị',
|
||
'settings.tabs.map': 'Bản đồ',
|
||
'settings.tabs.notifications': 'Thông báo',
|
||
'settings.tabs.integrations': 'Tích hợp',
|
||
'settings.plugins.oauth.connected': 'Đã kết nối',
|
||
'settings.plugins.oauth.notConnected': 'Chưa kết nối',
|
||
'settings.plugins.oauth.connect': 'Kết nối',
|
||
'settings.plugins.oauth.disconnect': 'Ngắt kết nối',
|
||
'settings.tabs.plugins': 'Plugin',
|
||
'settings.plugins.title': 'Cài đặt plugin',
|
||
'settings.plugins.subtitle': 'Cài đặt cá nhân của bạn cho các plugin bạn dùng (khóa API, tùy chọn).',
|
||
'settings.plugins.empty': 'Không có plugin nào đang hoạt động.',
|
||
'settings.plugins.saved': 'Đã lưu cài đặt',
|
||
'settings.plugins.requiredMissing': '"{field}" là bắt buộc',
|
||
'settings.tabs.account': 'Tài khoản',
|
||
'settings.tabs.offline': 'Ngoại tuyến',
|
||
'settings.tabs.about': 'Về',
|
||
'settings.map': 'Bản đồ',
|
||
'settings.mapTemplate': 'Mẫu bản đồ',
|
||
'settings.mapTemplatePlaceholder.select': 'Chọn mẫu...',
|
||
'settings.mapDefaultHint': 'Để trống cho OpenStreetMap (mặc định)',
|
||
'settings.routingBase': 'Máy chủ định tuyến riêng',
|
||
'settings.routingBaseHint': 'Máy chủ OSRM của riêng bạn. Để trống sẽ dùng máy chủ công cộng, cho phép khoảng một yêu cầu mỗi giây — đủ cho một ngày, chật cho chuyến đi dài. Có hiệu lực sau khi khởi động lại máy chủ.',
|
||
'settings.valhallaBase': 'Máy chủ Valhalla riêng',
|
||
'settings.valhallaBaseHint':
|
||
'Theo mặc định, TREK dùng Valhalla công cộng của FOSSGIS để tránh đường thu phí, đường cao tốc và phà. Nhập URL Valhalla riêng tại đây để dùng thay thế. Nếu chỉ cấu hình máy chủ định tuyến riêng, Valhalla công cộng sẽ không được dùng. Sau khi nhập URL riêng, hãy khởi động lại máy chủ và tải lại trang.',
|
||
'settings.mapHint': 'Mẫu URL cho ô bản đồ',
|
||
'settings.mapProvider': 'Nhà cung cấp bản đồ',
|
||
'settings.mapProviderHint':
|
||
'Ảnh hưởng tới Công cụ lập kế hoạch chuyến đi và bản đồ hành trình. Atlas luôn sử dụng Leaflet.',
|
||
'settings.mapLeafletSubtitle': '2D cổ điển, bất kỳ ô raster nào',
|
||
'settings.mapMapboxSubtitle': 'Gạch vector, tòa nhà 3D và địa hình',
|
||
'settings.mapMapLibreSubtitle': 'OpenFreeMap gạch vector, không có mã thông báo',
|
||
'settings.mapExperimental': 'thực nghiệm',
|
||
'settings.mapMapboxToken': 'Mapbox Mã thông báo truy cập',
|
||
'settings.mapMapboxTokenHint': 'Mã thông báo công khai (pk.*) từ',
|
||
'settings.mapMapboxTokenLink': 'mapbox.com → Mã thông báo truy cập',
|
||
'settings.mapCartoKey': 'Khóa API CARTO',
|
||
'settings.mapCartoKeyHint': 'Bản đồ nền CARTO hiển thị hình mờ nếu không có khóa. Miễn phí, không cần tài khoản, từ',
|
||
'settings.mapCartoKeyLink': 'khóa API bản đồ nền carto.com',
|
||
'settings.mapCartoKeyMissing':
|
||
'Mẫu này là bản đồ nền CARTO. Không có khóa, CARTO in "API KEY REQUIRED" lên mọi ô bản đồ. Cho đến khi bạn nhập khóa, TREK hiển thị bản đồ nền mặc định.',
|
||
'settings.mapStyle': 'Kiểu bản đồ',
|
||
'settings.mapStylePlaceholder': 'Chọn kiểu Mapbox',
|
||
'settings.mapStyleHint': 'Đặt trước hoặc của riêng bạn mapbox://styles/USER/ID URL',
|
||
'settings.mapOpenFreeMapStylePlaceholder': 'Chọn kiểu OpenFreeMap',
|
||
'settings.mapOpenFreeMapStyleHint':
|
||
'Đặt trước hoặc kiểu OpenFreeMap URL. Kiểu OpenFreeMap hoạt động mà không cần mã thông báo.',
|
||
'settings.map3dBuildings': 'Tòa nhà & địa hình 3D',
|
||
'settings.map3dHint': 'Cao độ + ép đùn tòa nhà 3D thực - hoạt động trên mọi phong cách, bao gồm cả vệ tinh.',
|
||
'settings.mapHighQuality': 'Chế độ chất lượng cao',
|
||
'settings.mapHighQualityHint':
|
||
'Khử răng cưa + chiếu hình ảnh địa cầu cho các cạnh sắc nét hơn và thế giới quan chân thực hơn.',
|
||
'settings.mapHighQualityWarning': 'Có thể ảnh hưởng đến hiệu suất trên các thiết bị cấp thấp hơn.',
|
||
'settings.mapTipLabel': 'Mẹo:',
|
||
'settings.mapTip':
|
||
'nhấp chuột phải và kéo để xoay/cao độ bản đồ. Nhấp chuột giữa để thêm địa điểm (nhấp chuột phải được dành riêng cho việc xoay).',
|
||
'settings.saveMap': 'Lưu bản đồ',
|
||
'settings.apiKeys': 'API Key',
|
||
'settings.mapsKey': 'Google Maps API Key',
|
||
'settings.mapsKeyHint': 'Để tìm kiếm địa điểm. Yêu cầu Địa điểm API (Mới). Truy cập tại console.cloud.google.com',
|
||
'settings.weatherKey': 'OpenWeatherMap API Key',
|
||
'settings.weatherKeyHint': 'Đối với dữ liệu thời tiết. Miễn phí tại openweathermap.org/api',
|
||
'settings.keyPlaceholder': 'Nhập khóa...',
|
||
'settings.configured': 'Đã định cấu hình',
|
||
'settings.saveKeys': 'Lưu chìa khóa',
|
||
'settings.display': 'Hiển thị',
|
||
'settings.colorMode': 'Chế độ màu',
|
||
'settings.light': 'Sáng',
|
||
'settings.dark': 'Tối',
|
||
'settings.auto': 'Tự động',
|
||
'settings.language': 'Ngôn ngữ',
|
||
'settings.temperature': 'Đơn vị nhiệt độ',
|
||
'settings.distance': 'Đơn vị khoảng cách',
|
||
'settings.timeFormat': 'Định dạng thời gian',
|
||
'settings.bookingLabels': 'Nhãn lộ trình đặt chỗ',
|
||
'settings.bookingLabelsHint': 'Hiển thị tên ga/sân bay trên bản đồ. Khi tắt, chỉ có biểu tượng được hiển thị.',
|
||
'settings.mapPoiPill': 'Khám phá các địa điểm trên bản đồ',
|
||
'settings.mapPoiPillHint':
|
||
'Hiển thị một danh mục trên bản đồ chuyến đi để tìm các nhà hàng, khách sạn lân cận và hơn thế nữa từ OpenStreetMap.',
|
||
'settings.blurBookingCodes': 'Mã đặt chỗ mờ',
|
||
'settings.optimizeFromAccommodation': 'Tối ưu hóa tuyến đường từ chỗ ở',
|
||
'settings.optimizeFromAccommodationHint':
|
||
'Khi tối ưu hóa một ngày, hãy bắt đầu lộ trình tại khách sạn nơi bạn thức dậy và kết thúc tại khách sạn bạn nhận phòng vào tối hôm đó.',
|
||
'settings.aiAlwaysRetry': 'Luôn thử lại việc nhập đặt chỗ bằng AI.',
|
||
'settings.aiAlwaysRetryHint':
|
||
'Khi trình phân tích cú pháp tiêu chuẩn không thể đọc được tệp, hãy tự động thử lại bằng AI..',
|
||
'settings.notifications': 'Thông báo',
|
||
'settings.notifyTripInvite': 'Lời mời chuyến đi',
|
||
'settings.notifyBookingChange': 'Thay đổi đặt chỗ',
|
||
'settings.notifyTripReminder': 'Lời nhắc chuyến đi',
|
||
'settings.notifyTodoDue': 'Việc cần làm sắp đến hạn',
|
||
'settings.notifyVacayInvite': 'Lời mời kết hợp Vacay',
|
||
'settings.notifyVacayShare': 'Chia sẻ lịch Vacay',
|
||
'settings.notifyCollectionInvite': 'Lời mời bộ sưu tập',
|
||
'settings.notifySynologySessionCleared': 'Đã xóa phiên Synology',
|
||
'settings.notifyPluginNotification': 'Thông báo plugin',
|
||
'settings.notifyPhotosShared': 'Ảnh được chia sẻ (Immich)',
|
||
'settings.notifyCollabMessage': 'Tin nhắn trò chuyện (Cộng tác)',
|
||
'settings.notifyPackingTagged': 'Danh sách đóng gói: phân công',
|
||
'settings.notifyWebhook': 'Thông báo webhook',
|
||
'settings.notifyVersionAvailable': 'Đã có phiên bản mới',
|
||
'settings.notifyReplicaFailure': 'Lỗi bản sao lưu trữ',
|
||
'settings.notificationPreferences.email': 'Email',
|
||
'settings.notificationPreferences.webhook': 'Webhook',
|
||
'settings.notificationPreferences.inapp': 'Trong ứng dụng',
|
||
'settings.notificationPreferences.notConfigured': 'Chưa được thiết lập — hãy cấu hình trong cài đặt của plugin',
|
||
'settings.plugins.actions': 'Hành động',
|
||
'settings.plugins.actions.confirm': 'Chạy hành động này?',
|
||
'settings.notificationPreferences.sendTest': 'Gửi thử',
|
||
'settings.notificationPreferences.configure': 'Cấu hình',
|
||
'settings.notificationPreferences.testSuccess': 'Đã gửi thông báo thử.',
|
||
'settings.notificationPreferences.testFailed': 'Thử nghiệm thất bại.',
|
||
'settings.notificationPreferences.pluginConfigured':
|
||
'Đã cấu hình. Quản lý thông tin đăng nhập ở trang cài đặt của plugin.',
|
||
'settings.notificationPreferences.ntfy': 'Ntfy',
|
||
'settings.notificationPreferences.noChannels':
|
||
'Không có kênh thông báo nào được cấu hình. Yêu cầu quản trị viên thiết lập thông báo qua email hoặc webhook.',
|
||
'settings.webhookUrl.label': 'Webhook URL',
|
||
'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...',
|
||
'settings.webhookUrl.hint': 'Nhập Discord, Slack hoặc webhook tùy chỉnh URL của bạn để nhận thông báo.',
|
||
'settings.webhookUrl.saved': 'Đã lưu Webhook URL',
|
||
'settings.webhookUrl.test': 'Bài kiểm tra',
|
||
'settings.webhookUrl.testSuccess': 'Kiểm tra webhook đã được gửi thành công',
|
||
'settings.webhookUrl.testFailed': 'Kiểm tra webhook không thành công',
|
||
'settings.ntfyUrl.topicLabel': 'Ntfy Chủ đề',
|
||
'settings.ntfyUrl.topicPlaceholder': 'cảnh báo chuyến đi của tôi',
|
||
'settings.ntfyUrl.serverLabel': 'Ntfy Máy chủ URL (tùy chọn)',
|
||
'settings.ntfyUrl.serverPlaceholder': 'https://ntfy.sh',
|
||
'settings.ntfyUrl.hint':
|
||
'Nhập chủ đề ntfy của bạn để nhận thông báo đẩy. Để trống máy chủ để sử dụng cài đặt mặc định do quản trị viên của bạn định cấu hình.',
|
||
'settings.ntfyUrl.tokenLabel': 'Mã thông báo truy cập (tùy chọn)',
|
||
'settings.ntfyUrl.tokenHint': 'Cần thiết cho các chủ đề được bảo vệ bằng mật khẩu.',
|
||
'settings.ntfyUrl.saved': 'Ntfy đã lưu cài đặt',
|
||
'settings.ntfyUrl.test': 'Bài kiểm tra',
|
||
'settings.ntfyUrl.testSuccess': 'Kiểm tra thông báo ntfy đã được gửi thành công',
|
||
'settings.ntfyUrl.testFailed': 'Kiểm tra thông báo ntfy không thành công',
|
||
'settings.ntfyUrl.tokenCleared': 'Đã xóa mã thông báo truy cập',
|
||
'settings.notificationsDisabled':
|
||
'Thông báo không được cấu hình. Yêu cầu quản trị viên bật thông báo qua email hoặc webhook.',
|
||
'settings.notificationsActive': 'Kênh hoạt động',
|
||
'settings.notificationsManagedByAdmin': 'Các sự kiện thông báo được quản trị viên của bạn định cấu hình.',
|
||
'settings.on': 'Bật',
|
||
'settings.off': 'Tắt',
|
||
'settings.mcp.title': 'MCP Cấu hình',
|
||
'settings.mcp.endpoint': 'MCP Điểm cuối',
|
||
'settings.mcp.clientConfig': 'Cấu hình máy khách',
|
||
'settings.mcp.clientConfigHint':
|
||
'Thay thế <your_token> bằng mã thông báo API từ danh sách bên dưới. Đường dẫn đến npx có thể cần được điều chỉnh cho hệ thống của bạn (ví dụ: C:\\PROGRA~1\\nodejs\\npx.cmd trên Windows).',
|
||
'settings.mcp.clientConfigHintOAuth':
|
||
'Thay thế <your_client_id> và <your_client_secret> bằng thông tin xác thực được hiển thị trong ứng dụng khách OAuth 2.1 mà bạn đã tạo ở trên. mcp-remote sẽ mở trình duyệt của bạn để hoàn tất việc ủy quyền vào lần đầu tiên bạn kết nối. Đường dẫn đến npx có thể cần được điều chỉnh cho hệ thống của bạn (ví dụ: C:PROGRA~1\nodejs\npx.cmd trên Windows).',
|
||
'settings.mcp.copy': 'Sao chép',
|
||
'settings.mcp.copied': 'Đã sao chép!',
|
||
'settings.mcp.apiTokens': 'API Mã thông báo',
|
||
'settings.mcp.createToken': 'Tạo mã thông báo mới',
|
||
'settings.mcp.noTokens': 'Chưa có token nào. Tạo một cái để kết nối các máy khách MCP.',
|
||
'settings.mcp.tokenCreatedAt': 'Tạo',
|
||
'settings.mcp.tokenUsedAt': 'Đã sử dụng',
|
||
'settings.mcp.deleteTokenTitle': 'Xóa mã thông báo',
|
||
'settings.mcp.deleteTokenMessage':
|
||
'Mã thông báo này sẽ ngừng hoạt động ngay lập tức. Bất kỳ khách hàng MCP nào sử dụng nó sẽ mất quyền truy cập.',
|
||
'settings.mcp.modal.createTitle': 'Tạo mã thông báo API',
|
||
'settings.mcp.modal.tokenName': 'Tên mã thông báo',
|
||
'settings.mcp.modal.tokenNamePlaceholder': 'ví dụ. Máy tính để bàn Claude, Máy tính xách tay làm việc',
|
||
'settings.mcp.modal.creating': 'Đang tạo…',
|
||
'settings.mcp.modal.create': 'Tạo mã thông báo',
|
||
'settings.mcp.modal.createdTitle': 'Đã tạo mã thông báo',
|
||
'settings.mcp.modal.createdWarning':
|
||
'Mã thông báo này sẽ chỉ được hiển thị một lần. Sao chép và lưu trữ ngay bây giờ - không thể phục hồi được.',
|
||
'settings.mcp.modal.done': 'Xong',
|
||
'settings.mcp.toast.created': 'Đã tạo mã thông báo',
|
||
'settings.mcp.toast.createError': 'Không tạo được mã thông báo',
|
||
'settings.mcp.toast.deleted': 'Đã xóa mã thông báo',
|
||
'settings.mcp.toast.deleteError': 'Không xóa được mã thông báo',
|
||
'settings.mcp.apiTokensDeprecated':
|
||
'API Mã thông báo không được dùng nữa và sẽ bị xóa trong bản phát hành trong tương lai. Thay vào đó, vui lòng sử dụng Khách hàng OAuth 2.1.',
|
||
'settings.oauth.clients': 'OAuth 2.1 Khách hàng',
|
||
'settings.oauth.clientsHint':
|
||
'Đăng ký ứng dụng khách OAuth 2.1 để cho phép các ứng dụng MCP của bên thứ ba (Claude Web, Cursor, v.v.) kết nối mà không cần mã thông báo tĩnh.',
|
||
'settings.oauth.createClient': 'Khách hàng mới',
|
||
'settings.oauth.noClients': 'Không có khách hàng OAuth nào được đăng ký.',
|
||
'settings.oauth.clientId': 'Khách hàng ID',
|
||
'settings.oauth.clientSecret': 'Bí mật khách hàng',
|
||
'settings.oauth.deleteClient': 'Xóa khách hàng',
|
||
'settings.oauth.deleteClientMessage':
|
||
'Ứng dụng khách này và tất cả các phiên hoạt động sẽ bị xóa vĩnh viễn. Bất kỳ ứng dụng nào sử dụng nó sẽ mất quyền truy cập ngay lập tức.',
|
||
'settings.oauth.rotateSecret': 'Xoay bí mật',
|
||
'settings.oauth.rotateSecretMessage':
|
||
'Một bí mật khách hàng mới sẽ được tạo và tất cả các phiên hiện có sẽ bị vô hiệu ngay lập tức. Cập nhật ứng dụng của bạn trước khi đóng hộp thoại này.',
|
||
'settings.oauth.rotateSecretConfirm': 'Quay',
|
||
'settings.oauth.rotateSecretConfirming': 'Đang quay…',
|
||
'settings.oauth.rotateSecretDoneTitle': 'Bí mật mới được tạo',
|
||
'settings.oauth.rotateSecretDoneWarning':
|
||
'Bí mật này chỉ được hiển thị một lần. Sao chép nó ngay bây giờ và cập nhật ứng dụng của bạn - tất cả các phiên trước đó đã bị vô hiệu.',
|
||
'settings.oauth.activeSessions': 'Phiên hoạt động OAuth',
|
||
'settings.oauth.sessionScopes': 'Phạm vi',
|
||
'settings.oauth.sessionExpires': 'Hết hạn',
|
||
'settings.oauth.revoke': 'Thu hồi',
|
||
'settings.oauth.revokeSession': 'Thu hồi phiên',
|
||
'settings.oauth.revokeSessionMessage': 'Thao tác này sẽ ngay lập tức thu hồi quyền truy cập đối với phiên OAuth này.',
|
||
'settings.oauth.modal.createTitle': 'Đăng ký khách hàng OAuth',
|
||
'settings.oauth.modal.presets': 'Cài đặt trước nhanh',
|
||
'settings.oauth.modal.clientName': 'Tên ứng dụng',
|
||
'settings.oauth.modal.clientNamePlaceholder': 'ví dụ. Claude Web, Ứng dụng MCP của tôi',
|
||
'settings.oauth.modal.redirectUris': 'URI chuyển hướng',
|
||
'settings.oauth.modal.redirectUrisPlaceholder': 'https://your-app.com/callback\nhttps://your-app.com/auth',
|
||
'settings.oauth.modal.redirectUrisHint':
|
||
'Một URI trên mỗi dòng. HTTPS, HTTP loopback hoặc lược đồ ứng dụng riêng (myapp://). Đối sánh chính xác, ngoại trừ cổng của URI loopback.',
|
||
'settings.oauth.modal.scopes': 'Phạm vi được phép',
|
||
'settings.oauth.modal.scopesHint':
|
||
'list_trips và get_trip_summary luôn có sẵn — không yêu cầu phạm vi. Họ cho phép AI khám phá ID chuyến đi cần thiết để sử dụng bất kỳ công cụ nào khác.',
|
||
'settings.oauth.modal.selectAll': 'Chọn tất cả',
|
||
'settings.oauth.modal.deselectAll': 'Bỏ chọn tất cả',
|
||
'settings.oauth.modal.creating': 'Đang đăng ký…',
|
||
'settings.oauth.modal.create': 'Đăng ký khách hàng',
|
||
'settings.oauth.modal.createdTitle': 'Khách hàng đã đăng ký',
|
||
'settings.oauth.modal.createdWarning':
|
||
'Bí mật của khách hàng chỉ được hiển thị một lần. Sao chép nó ngay bây giờ - nó không thể phục hồi được.',
|
||
'settings.oauth.toast.createError': 'Không thể đăng ký ứng dụng khách OAuth',
|
||
'settings.oauth.toast.deleted': 'OAuth khách hàng đã bị xóa',
|
||
'settings.oauth.toast.deleteError': 'Không xóa được ứng dụng khách OAuth',
|
||
'settings.oauth.toast.revoked': 'Phiên bị thu hồi',
|
||
'settings.oauth.toast.revokeError': 'Không thể thu hồi phiên',
|
||
'settings.oauth.toast.rotateError': 'Không thể xoay bí mật của khách hàng',
|
||
'settings.oauth.modal.machineClient': 'Máy khách (không đăng nhập trình duyệt)',
|
||
'settings.oauth.modal.machineClientHint':
|
||
'Sử dụng cấp client_credentials — không cần URI chuyển hướng. Mã thông báo được phát hành trực tiếp qua client_id + client_secret và hoạt động với tư cách là bạn trong phạm vi đã chọn.',
|
||
'settings.oauth.modal.machineClientUsage':
|
||
'Nhận mã thông báo: POST /oauth/token với Grant_type=client_credentials, client_id và client_secret. Không có trình duyệt, không có mã thông báo làm mới.',
|
||
'settings.oauth.badge.machine': 'máy móc',
|
||
'settings.account': 'Tài khoản',
|
||
'settings.about': 'Về',
|
||
'settings.about.reportBug': 'Báo cáo lỗi',
|
||
'settings.about.reportBugHint': 'Tìm thấy một vấn đề? Hãy cho chúng tôi biết',
|
||
'settings.about.featureRequest': 'Yêu cầu tính năng',
|
||
'settings.about.featureRequestHint': 'Đề xuất tính năng mới',
|
||
'settings.about.wikiHint': 'Tài liệu & hướng dẫn',
|
||
'settings.about.descriptionManaged':
|
||
'TREK helps you organize your trips from the first idea to the last memory. Day planning, budget, packing lists, photos and much more — all in one place.',
|
||
'settings.about.sourceTitle': 'Source code',
|
||
'settings.about.sourceHint': 'TREK is open source, licensed AGPL-3.0',
|
||
'settings.about.supporters.badge': 'Người ủng hộ hàng tháng',
|
||
'settings.about.supporters.title': 'Bạn đồng hành cho TREK',
|
||
'settings.about.supporters.subtitle':
|
||
'Trong khi bạn đang lên kế hoạch cho lộ trình tiếp theo của mình, những người này đang giúp lập kế hoạch cho tương lai của TREK. Đóng góp hàng tháng của họ được đổ thẳng vào hoạt động phát triển và số giờ thực tế được sử dụng — vì vậy TREK vẫn là Nguồn mở.',
|
||
'settings.about.supporters.since': 'ủng hộ kể từ {date}',
|
||
'settings.about.supporters.tierEmpty': 'Hãy là người đầu tiên',
|
||
'settings.about.supporter.tier.noReturnTicket': 'Không có vé khứ hồi',
|
||
'settings.about.supporter.tier.lostLuggageVip': 'Hành Lý Thất Lạc VIP',
|
||
'settings.about.supporter.tier.businessClassDreamer': 'Người mơ mộng hạng thương gia',
|
||
'settings.about.supporter.tier.budgetTraveller': 'Khách du lịch tiết kiệm',
|
||
'settings.about.supporter.tier.hostelBunkmate': 'Nhà nghỉ bạn cùng phòng',
|
||
'settings.about.description':
|
||
'TREK là công cụ lập kế hoạch du lịch tự lưu trữ giúp bạn tổ chức các chuyến đi của mình từ ý tưởng đầu tiên đến kỷ niệm cuối cùng. Lập kế hoạch trong ngày, ngân sách, danh sách đóng gói, ảnh và nhiều nội dung khác — tất cả đều ở cùng một nơi, trên máy chủ của riêng bạn.',
|
||
'settings.about.madeWith': 'Được làm bằng',
|
||
'settings.about.madeBy': 'của Maurice và cộng đồng nguồn mở đang phát triển.',
|
||
'settings.username': 'Tên người dùng',
|
||
'settings.email': 'Email',
|
||
'settings.role': 'Vai trò',
|
||
'settings.roleAdmin': 'Quản trị viên',
|
||
'settings.oidcLinked': 'Liên kết với',
|
||
'settings.changePassword': 'Thay đổi mật khẩu',
|
||
'settings.currentPassword': 'Mật khẩu hiện tại',
|
||
'settings.currentPasswordRequired': 'Mật khẩu hiện tại là bắt buộc',
|
||
'settings.newPassword': 'Mật khẩu mới',
|
||
'settings.confirmPassword': 'Xác nhận mật khẩu mới',
|
||
'settings.updatePassword': 'Cập nhật mật khẩu',
|
||
'settings.passwordRequired': 'Vui lòng nhập mật khẩu hiện tại và mật khẩu mới',
|
||
'settings.passwordTooShort': 'Mật khẩu phải có ít nhất 8 ký tự',
|
||
'settings.passwordMismatch': 'Mật khẩu không khớp',
|
||
'settings.passwordWeak': 'Mật khẩu phải có chữ hoa, chữ thường, số và ký tự đặc biệt',
|
||
'settings.passwordChanged': 'Đã thay đổi mật khẩu thành công',
|
||
'settings.mustChangePassword':
|
||
'Bạn phải thay đổi mật khẩu trước khi có thể tiếp tục. Vui lòng đặt mật khẩu mới bên dưới.',
|
||
'settings.deleteAccount': 'Xóa tài khoản',
|
||
'settings.deleteAccountTitle': 'Xóa tài khoản của bạn?',
|
||
'settings.deleteAccountWarning':
|
||
'Tài khoản của bạn và tất cả các chuyến đi, địa điểm và tệp của bạn sẽ bị xóa vĩnh viễn. Không thể hoàn tác hành động này.',
|
||
'settings.deleteAccountConfirm': 'Xóa vĩnh viễn',
|
||
'settings.deleteBlockedTitle': 'Không thể xóa',
|
||
'settings.deleteBlockedMessage':
|
||
'Bạn là quản trị viên duy nhất. Thăng cấp người dùng khác lên quản trị viên trước khi xóa tài khoản của bạn.',
|
||
'settings.roleUser': 'người dùng',
|
||
'settings.saveProfile': 'Lưu hồ sơ',
|
||
'settings.toast.mapSaved': 'Đã lưu cài đặt bản đồ',
|
||
'settings.toast.keysSaved': 'Đã lưu khóa API',
|
||
'settings.toast.displaySaved': 'Đã lưu cài đặt hiển thị',
|
||
'settings.toast.profileSaved': 'Đã lưu hồ sơ',
|
||
'settings.uploadAvatar': 'Tải ảnh hồ sơ lên',
|
||
'settings.removeAvatar': 'Xóa ảnh hồ sơ',
|
||
'settings.avatarUploaded': 'Đã cập nhật ảnh hồ sơ',
|
||
'settings.avatarRemoved': 'Đã xóa ảnh hồ sơ',
|
||
'settings.avatarError': 'Tải lên không thành công',
|
||
'settings.avatarRemoveError': 'Xóa không thành công',
|
||
'settings.mfa.title': 'Xác thực hai yếu tố (2FA)',
|
||
'settings.mfa.description':
|
||
'Thêm bước thứ hai khi bạn đăng nhập bằng email và mật khẩu. Sử dụng ứng dụng xác thực (Google Authenticator, Authy, v.v.).',
|
||
'settings.mfa.requiredByPolicy':
|
||
'Quản trị viên của bạn yêu cầu xác thực hai yếu tố. Thiết lập ứng dụng xác thực bên dưới trước khi tiếp tục.',
|
||
'settings.mfa.backupTitle': 'Mã dự phòng',
|
||
'settings.mfa.backupDescription':
|
||
'Sử dụng các mã dự phòng một lần này nếu bạn mất quyền truy cập vào ứng dụng xác thực của mình.',
|
||
'settings.mfa.backupWarning': 'Hãy lưu lại những mã này ngay bây giờ. Mỗi mã chỉ có thể được sử dụng một lần.',
|
||
'settings.mfa.backupCopy': 'Sao chép mã',
|
||
'settings.mfa.backupDownload': 'Tải xuống TXT',
|
||
'settings.mfa.backupPrint': 'In / PDF',
|
||
'settings.mfa.backupCopied': 'Đã sao chép mã dự phòng',
|
||
'settings.mfa.enabled': '2FA được bật trên tài khoản của bạn.',
|
||
'settings.mfa.disabled': '2FA chưa được bật.',
|
||
'settings.mfa.setup': 'Thiết lập trình xác thực',
|
||
'settings.mfa.scanQr': 'Quét mã QR này bằng ứng dụng của bạn hoặc nhập bí mật theo cách thủ công.',
|
||
'settings.mfa.secretLabel': 'Khóa bí mật (nhập thủ công)',
|
||
'settings.mfa.codePlaceholder': 'mã 6 chữ số',
|
||
'settings.mfa.enable': 'Kích hoạt 2FA',
|
||
'settings.mfa.cancelSetup': 'Hủy',
|
||
'settings.mfa.disableTitle': 'Tắt 2FA',
|
||
'settings.mfa.disableHint': 'Nhập mật khẩu tài khoản của bạn và mã hiện tại từ trình xác thực của bạn.',
|
||
'settings.mfa.disable': 'Tắt 2FA',
|
||
'settings.mfa.toastEnabled': 'Đã bật xác thực hai yếu tố',
|
||
'settings.mfa.toastDisabled': 'Xác thực hai yếu tố bị vô hiệu hóa',
|
||
'settings.mfa.demoBlocked': 'Không có sẵn ở chế độ demo',
|
||
'settings.currency': 'Tiền tệ hiển thị',
|
||
'settings.currencyHint':
|
||
'Số tiền trong Chi phí chỉ được quy đổi sang loại tiền tệ này để hiển thị — số tiền gốc không thay đổi.',
|
||
'settings.currencyTrip': 'Tiền tệ của chuyến đi',
|
||
'settings.passkey.title': 'Mật mã',
|
||
'settings.passkey.description':
|
||
'Đăng nhập nhanh hơn và chống lừa đảo bằng mật mã — vân tay, khuôn mặt, PIN hoặc khóa phần cứng của bạn. Mật khẩu của bạn vẫn là bản sao lưu.',
|
||
'settings.passkey.notConfigured':
|
||
'Mật mã đã được bật nhưng chưa được định cấu hình đầy đủ trên máy chủ này. Hãy yêu cầu quản trị viên của bạn đặt miền WebAuthn.',
|
||
'settings.passkey.add': 'Thêm mật mã',
|
||
'settings.passkey.addTitle': 'Thêm mật mã',
|
||
'settings.passkey.passwordPrompt':
|
||
'Xác nhận mật khẩu hiện tại của bạn, sau đó làm theo lời nhắc trên thiết bị của bạn.',
|
||
'settings.passkey.passwordRequired': 'Mật khẩu hiện tại của bạn là bắt buộc.',
|
||
'settings.passkey.namePlaceholder': 'Tên (tùy chọn, ví dụ: "iPhone")',
|
||
'settings.passkey.addedToast': 'Đã thêm mật mã',
|
||
'settings.passkey.added': 'Đã thêm',
|
||
'settings.passkey.addError': 'Không thể thêm mật mã',
|
||
'settings.passkey.cancelled': 'Đã hủy thiết lập mật khẩu',
|
||
'settings.passkey.deleted': 'Đã xóa mật khẩu',
|
||
'settings.passkey.deleteConfirm': 'Xóa mật mã này? Xác nhận bằng mật khẩu của bạn.',
|
||
'settings.passkey.rename': 'Đổi tên',
|
||
'settings.passkey.defaultName': 'Mật mã',
|
||
'settings.passkey.synced': 'Đã đồng bộ hóa',
|
||
'settings.passkey.deviceBound': 'Thiết bị này',
|
||
'settings.passkey.lastUsed': 'Lần sử dụng cuối cùng',
|
||
'settings.passkey.neverUsed': 'Chưa bao giờ sử dụng',
|
||
'settings.airtrail.title': 'AirTrail',
|
||
'settings.airtrail.hint':
|
||
'Kết nối AirTrail tự lưu trữ của bạn để nhập và đồng bộ hóa các chuyến bay. Tạo khóa API trong AirTrail trong Cài đặt → Bảo mật.',
|
||
'settings.airtrail.url': 'Ví dụ URL',
|
||
'settings.airtrail.apiKey': 'API Key',
|
||
'settings.airtrail.apiKeyPlaceholder': 'Bearer API Key',
|
||
'settings.airtrail.apiKeyHint': 'Được tạo trong AirTrail trong Cài đặt → Bảo mật. Được lưu trữ được mã hóa.',
|
||
'settings.airtrail.allowInsecureTls': 'Cho phép chứng chỉ tự ký',
|
||
'settings.airtrail.allowInsecureTlsHint': 'Chỉ kích hoạt cho một phiên bản đáng tin cậy trên mạng của riêng bạn.',
|
||
'settings.airtrail.writeBack': 'Viết các thay đổi trở lại AirTrail',
|
||
'settings.airtrail.writeBackHint':
|
||
'Tắt theo mặc định: AirTrail là nguồn sự thật và TREK chỉ đọc từ đó. Bật để đẩy các chỉnh sửa được thực hiện trong TREK trở lại AirTrail.',
|
||
'settings.airtrail.connected': 'Đã kết nối',
|
||
'settings.airtrail.notConnected': 'Không được kết nối',
|
||
'settings.airtrail.toast.saved': 'AirTrail đã lưu kết nối',
|
||
'settings.airtrail.toast.saveError': 'Không thể lưu kết nối',
|
||
'settings.airtrail.test.button': 'Kiểm tra kết nối',
|
||
'settings.airtrail.test.success': 'Đã kết nối — đã tìm thấy {count} chuyến bay',
|
||
'settings.airtrail.test.failed': 'Kết nối không thành công',
|
||
'settings.aiParsing.title': 'Phân tích bằng AI',
|
||
'settings.aiParsing.hint':
|
||
'Chọn mô hình AI dùng để trích xuất đặt chỗ từ các tệp đã tải lên. Tùy chọn này chỉ áp dụng khi quản trị viên chưa cấu hình mô hình cho toàn bộ phiên bản.',
|
||
'settings.aiParsing.provider': 'Nhà cung cấp',
|
||
'settings.aiParsing.providerLocal': 'Cục bộ (Ollama)',
|
||
'settings.aiParsing.providerOpenai': 'OpenAI',
|
||
'settings.aiParsing.providerAnthropic': 'Anthropic',
|
||
'settings.aiParsing.localAdminOnly':
|
||
'Endpoint cục bộ (Ollama) được thiết lập một lần cho toàn bộ phiên bản trong phần cài đặt quản trị. Bạn vẫn có thể dùng khóa OpenAI hoặc Anthropic của riêng mình ở đây.',
|
||
'settings.aiParsing.model': 'Mô hình',
|
||
'settings.aiParsing.baseUrl': 'URL cơ sở',
|
||
'settings.aiParsing.baseUrlHint': 'Nơi mô hình chạy — máy chủ Ollama cục bộ hoặc endpoint tương thích với OpenAI.',
|
||
'settings.aiParsing.apiKey': 'Khóa API',
|
||
'settings.aiParsing.apiKeyHint': 'Được lưu trữ mã hóa. Để trống để giữ khóa hiện tại.',
|
||
'settings.aiParsing.multimodal': 'Gửi tài liệu dưới dạng hình ảnh',
|
||
'settings.aiParsing.multimodalHint':
|
||
'Dành cho các mô hình hỗ trợ thị giác — gửi PDF gốc thay vì văn bản đã trích xuất.',
|
||
'settings.aiParsing.toast.saved': 'Đã lưu cài đặt AI',
|
||
'settings.aiParsing.toast.saveError': 'Không thể lưu cài đặt AI',
|
||
'settings.tabs.appearance': 'Giao diện',
|
||
'settings.appearance.theme': 'Chủ đề',
|
||
'settings.appearance.scheme': 'Bảng màu',
|
||
'settings.appearance.scheme.default': 'Mặc định',
|
||
'settings.appearance.scheme.highContrast': 'Tương phản cao',
|
||
'settings.appearance.scheme.indigo': 'Chàm',
|
||
'settings.appearance.scheme.teal': 'Xanh ngọc',
|
||
'settings.appearance.scheme.rose': 'Hồng',
|
||
'settings.appearance.scheme.amber': 'Hổ phách',
|
||
'settings.appearance.scheme.violet': 'Tím',
|
||
'settings.appearance.scheme.custom': 'Tùy chỉnh',
|
||
'settings.appearance.customAccent': 'Màu nhấn tùy chỉnh',
|
||
'settings.appearance.contrastOk': 'Tương phản tốt',
|
||
'settings.appearance.contrastLow': 'Tương phản thấp',
|
||
'settings.appearance.readability': 'Khả năng đọc',
|
||
'settings.appearance.transparency': 'Độ trong suốt',
|
||
'settings.appearance.transparencyHint': 'Bề mặt trong mờ kiểu kính. Tắt để có nền đặc, tương phản cao hơn.',
|
||
'settings.appearance.reduceMotion': 'Giảm chuyển động',
|
||
'settings.appearance.reduceMotionHint': 'Giảm thiểu hoạt ảnh và hiệu ứng chuyển tiếp.',
|
||
'settings.appearance.density': 'Mật độ',
|
||
'settings.appearance.comfortable': 'Thoải mái',
|
||
'settings.appearance.compact': 'Gọn',
|
||
'settings.appearance.textSize': 'Cỡ chữ',
|
||
'settings.appearance.advancedTextSizes': 'Cỡ chữ nâng cao',
|
||
'settings.appearance.hideAdvanced': 'Ẩn nâng cao',
|
||
'settings.appearance.tier.title': 'Tiêu đề',
|
||
'settings.appearance.tier.subtitle': 'Phụ đề',
|
||
'settings.appearance.tier.body': 'Nội dung',
|
||
'settings.appearance.tier.caption': 'Chú thích',
|
||
'settings.appearance.dashboardWidgets': 'Tiện ích bảng điều khiển',
|
||
'settings.appearance.dashboardWidgetsHint':
|
||
'Hiện hoặc ẩn các tiện ích bảng điều khiển riêng cho máy tính và di động.',
|
||
'settings.appearance.desktop': 'Máy tính',
|
||
'settings.appearance.mobile': 'Di động',
|
||
'settings.appearance.widget.sidebar': 'Thanh bên phải',
|
||
'settings.appearance.widget.currency': 'Tiền tệ',
|
||
'settings.appearance.widget.collections': 'Bộ sưu tập',
|
||
'settings.appearance.widget.timezones': 'Múi giờ',
|
||
'settings.appearance.widget.upcomingReservations': 'Đặt chỗ sắp tới',
|
||
'settings.appearance.widget.atlas': 'Atlas / quốc gia',
|
||
'settings.appearance.widget.tripsTotal': 'Tổng số chuyến đi',
|
||
'settings.appearance.widget.daysTraveled': 'Số ngày đã đi',
|
||
'settings.appearance.widget.distanceFlown': 'Quãng đường bay',
|
||
'settings.appearance.reset': 'Đặt lại về mặc định',
|
||
'settings.appearance.group.belowHero': 'Dưới ảnh bìa',
|
||
'settings.appearance.group.bottomOfPage': 'Cuối trang',
|
||
'settings.appearance.sidebarHint': 'Toàn bộ cột bên phải. Tắt đi thì bảng điều khiển sẽ căn giữa.',
|
||
'settings.appearance.densityHint':
|
||
'Chế độ gọn thu hẹp khoảng cách và lề để bố cục dày đặc hơn, hiển thị được nhiều hơn trên màn hình.',
|
||
'settings.appearance.textSizeAll': 'Tất cả',
|
||
'settings.appearance.perSize': 'Điều chỉnh từng cỡ riêng biệt',
|
||
'settings.appearance.size.large': 'Lớn',
|
||
'settings.appearance.size.medium': 'Vừa',
|
||
'settings.appearance.size.normal': 'Bình thường',
|
||
'settings.appearance.size.small': 'Nhỏ',
|
||
'settings.appearance.preview.large': 'Tiêu đề lớn',
|
||
'settings.appearance.preview.medium': 'Phụ đề vừa',
|
||
'settings.appearance.preview.normal': 'Văn bản nội dung bình thường',
|
||
'settings.appearance.preview.small': 'Chú thích / địa chỉ nhỏ',
|
||
'settings.appearance.example.large': 'Tiêu đề, số lớn',
|
||
'settings.appearance.example.medium': 'Tiêu đề phụ',
|
||
'settings.appearance.example.normal': 'Tên địa điểm, mô tả',
|
||
'settings.appearance.example.small': 'Địa chỉ, nhãn',
|
||
'settings.appearance.experimental': 'Thử nghiệm',
|
||
'settings.appearance.mobileNav': 'Thanh điều hướng dưới',
|
||
'settings.appearance.mobileNav.hint':
|
||
'Chọn mục nào hiển thị trên thanh và mục nào nằm trong “Thêm”. Bảng điều khiển luôn đứng đầu.',
|
||
'settings.appearance.mobileNav.inBar': 'Trên thanh',
|
||
'settings.appearance.mobileNav.underMore': 'Trong “Thêm”',
|
||
'settings.appearance.mobileNav.moreEmpty': 'Chưa có gì ở đây — mọi mục đều vừa trên thanh.',
|
||
'settings.appearance.mobileNav.pinned': 'Đã ghim',
|
||
'settings.appearance.mobileNav.toMore': 'Chuyển vào “Thêm”',
|
||
'settings.appearance.mobileNav.toBar': 'Chuyển lên thanh',
|
||
'settings.appearance.dashOrder': 'Thứ tự bảng điều khiển',
|
||
'settings.appearance.dashOrder.hint':
|
||
'Sắp xếp lại cách danh sách chuyến đi và các tiện ích xếp chồng trên bảng điều khiển điện thoại. Chuyến đi nổi bật luôn ở trên cùng.',
|
||
'settings.appearance.dashOrder.trips': 'Chuyến đi',
|
||
'settings.appearance.dashOrder.hidden': 'Đã ẩn',
|
||
'settings.general.languageRegion': 'Ngôn ngữ & khu vực',
|
||
'settings.general.travelMap': 'Du lịch & bản đồ',
|
||
'settings.general.startup': 'Khởi động',
|
||
'settings.startPage': 'Trang khởi động',
|
||
'settings.startPageDashboard': 'Bảng điều khiển',
|
||
'settings.startPageActiveTrip': 'Chuyến đi đang diễn ra',
|
||
'settings.startPageHint':
|
||
'TREK mở thẳng chuyến đi đang diễn ra, nếu không thì chuyến gần nhất sắp tới. Đó cũng là chuyến mà bảng điều khiển làm nổi bật.',
|
||
'settings.startTripTab': 'Tab khởi động',
|
||
'settings.startTripTabHint':
|
||
'Tab mà chuyến đi mở ra. Nếu tab đó thuộc tiện ích đã tắt, chế độ xem kế hoạch sẽ mở thay thế.',
|
||
|
||
// ── Offline (#1135)
|
||
'settings.offline.cache.title': 'Bộ nhớ đệm ngoại tuyến',
|
||
'settings.offline.mode.title': 'Chế độ ngoại tuyến',
|
||
'settings.offline.mode.force': 'Bắt buộc chế độ ngoại tuyến',
|
||
'settings.offline.mode.forceHint':
|
||
'Chỉ làm việc với dữ liệu trong bộ nhớ đệm và đưa các thay đổi của bạn vào hàng đợi. Tắt để kết nối lại và đồng bộ hóa.',
|
||
'settings.offline.mode.active':
|
||
'Chế độ ngoại tuyến đang bật — các thay đổi của bạn đã được đưa vào hàng đợi và sẽ đồng bộ hóa khi bạn tắt nó.',
|
||
'settings.offline.prepare.title': 'Chuẩn bị cho ngoại tuyến',
|
||
'settings.offline.prepare.hint':
|
||
'Tải xuống mọi thứ bạn cần — dữ liệu chuyến đi, tài liệu và ô bản đồ — trước khi bạn mất kết nối.',
|
||
'settings.offline.prepare.button': 'Tải xuống để dùng ngoại tuyến',
|
||
'settings.offline.prepare.running': 'Đang tải xuống…',
|
||
'settings.offline.prepare.done': 'Sẵn sàng dùng ngoại tuyến',
|
||
'settings.offline.prepare.phase.trips': 'Dữ liệu chuyến đi',
|
||
'settings.offline.prepare.phase.files': 'Tài liệu',
|
||
'settings.offline.prepare.phase.tiles': 'Ô bản đồ',
|
||
'settings.offline.resync': 'Đồng bộ lại ngay',
|
||
'settings.offline.resyncing': 'Đang đồng bộ hóa…',
|
||
'settings.offline.storage.title': 'Lưu trữ gì khi ngoại tuyến',
|
||
'settings.offline.storage.tiles': 'Lưu ô bản đồ ngoại tuyến',
|
||
'settings.offline.storage.tilesHint':
|
||
'Ô bản đồ chiếm nhiều dung lượng lưu trữ nhất. Tắt tùy chọn này để chỉ giữ dữ liệu chuyến đi và tài liệu ở chế độ ngoại tuyến.',
|
||
'settings.offline.storage.tripsTitle': 'Chuyến đi',
|
||
'settings.offline.storage.tripOn': 'Đã lưu ngoại tuyến',
|
||
'settings.offline.storage.tripOff': 'Chưa lưu',
|
||
'settings.offline.storage.tripFinished': 'Đã kết thúc. Chỉ lưu nếu bạn bật lên.',
|
||
'settings.offline.notice.stored': 'Đã lưu {count} chuyến đi trên thiết bị này',
|
||
'settings.offline.notice.nothing': 'Không có gì để lưu. Hãy bật những chuyến đi bạn muốn giữ.',
|
||
'settings.offline.notice.busy': 'Đang đồng bộ. Vui lòng thử lại sau giây lát.',
|
||
'settings.offline.notice.offline': 'Không có kết nối. Hãy kết nối để lưu chuyến đi ngoại tuyến.',
|
||
'settings.offline.notice.signedOut': 'Phiên của bạn đã kết thúc. Hãy đăng nhập lại để đồng bộ.',
|
||
'settings.offline.notice.failed': 'Không thể hoàn tất việc tải xuống. Hãy kiểm tra kết nối và thử lại.',
|
||
'settings.offline.notice.loadFailed': 'Không đọc được bộ nhớ ngoại tuyến của thiết bị này. Xóa bộ nhớ đệm thường khắc phục được.',
|
||
'settings.offline.clear': 'Xóa bộ nhớ đệm',
|
||
'settings.offline.clearConfirm':
|
||
'Xóa tất cả dữ liệu chuyến đi ngoại tuyến? Bạn có thể đồng bộ lại bất cứ lúc nào khi trực tuyến.',
|
||
'settings.offline.stats.trips': 'Chuyến đi trong bộ nhớ đệm',
|
||
'settings.offline.stats.pending': 'Thay đổi đang chờ',
|
||
'settings.offline.stats.failed': 'Thay đổi không thành công',
|
||
'settings.offline.stats.conflicts': 'Xung đột',
|
||
'settings.offline.empty': 'Chưa có chuyến đi nào trong bộ nhớ đệm. Kết nối internet để đồng bộ hóa.',
|
||
'settings.offline.loading': 'Đang tải…',
|
||
'settings.offline.conflicts.title': 'Xung đột đồng bộ hóa',
|
||
'settings.offline.conflicts.hint':
|
||
'Các thay đổi bạn thực hiện khi ngoại tuyến mâu thuẫn với các thay đổi mới hơn trên máy chủ. Chọn phiên bản nào để giữ lại.',
|
||
'settings.offline.conflicts.keepMine': 'Giữ của tôi',
|
||
'settings.offline.conflicts.keepServer': 'Giữ của máy chủ',
|
||
'settings.offline.conflicts.mine': 'Phiên bản của bạn',
|
||
'settings.offline.conflicts.server': 'Phiên bản của máy chủ',
|
||
'settings.offline.conflicts.item': 'Thay đổi đối với “{name}”',
|
||
'settings.offline.conflicts.strategyTitle': 'Khi xảy ra xung đột',
|
||
'settings.offline.conflicts.strategy.ask': 'Hỏi tôi mỗi lần',
|
||
'settings.offline.conflicts.strategy.mine': 'Luôn giữ phiên bản của tôi',
|
||
'settings.offline.conflicts.strategy.server': 'Luôn giữ phiên bản của máy chủ',
|
||
'settings.offline.banner.offline': 'Ngoại tuyến',
|
||
'settings.offline.banner.forced': 'Chế độ ngoại tuyến',
|
||
'settings.offline.banner.queued': 'Ngoại tuyến · {count} trong hàng đợi',
|
||
'settings.offline.banner.syncing': 'Đang đồng bộ hóa {count}…',
|
||
'settings.offline.banner.failed': 'Đồng bộ hóa không thành công: {count}',
|
||
'settings.offline.banner.conflicts': 'Xung đột: {count}',
|
||
'settings.pluginActivity.title': 'Hoạt động của plugin',
|
||
'settings.pluginActivity.description': 'Mọi hành động mà plugin đã thực hiện thay bạn, mới nhất trước.',
|
||
'settings.pluginActivity.empty': 'Chưa có hoạt động nào của plugin.',
|
||
'settings.pluginActivity.refresh': 'Làm mới',
|
||
'settings.pluginActivity.columns.plugin': 'Plugin',
|
||
'settings.pluginActivity.columns.action': 'Hành động',
|
||
'settings.pluginActivity.columns.resource': 'Tài nguyên',
|
||
'settings.pluginActivity.columns.when': 'Thời điểm',
|
||
'settings.pluginActivity.columns.status': 'Kết quả',
|
||
'settings.alwaysShowRoutes': 'Luôn hiển thị tuyến đường đặt chỗ',
|
||
'settings.alwaysShowRoutesHint':
|
||
'Tự động hiển thị trên bản đồ tuyến đường của mỗi chuyến bay, tàu hỏa và đặt chỗ khác, không cần bật riêng từng mục.',
|
||
|
||
// Public API keys (Settings -> Integrations)
|
||
'settings.apiKeys.title': 'Khóa API',
|
||
'settings.apiKeys.description': 'Khóa cho API công khai, để phần mềm khác có thể đọc các chuyến đi của bạn. Chỉ đọc: khóa không thể thay đổi hay xóa bất cứ thứ gì.',
|
||
'settings.apiKeys.create': 'Tạo khóa',
|
||
'settings.apiKeys.empty': 'Chưa có khóa nào. Tạo một khóa để kết nối phần mềm khác.',
|
||
'settings.apiKeys.createdAt': 'đã tạo',
|
||
'settings.apiKeys.usedAt': 'dùng lần cuối',
|
||
'settings.apiKeys.deleteTitle': 'Xóa khóa',
|
||
'settings.apiKeys.deleteMessage': 'Mọi thứ đang dùng khóa này sẽ ngừng hoạt động ngay lập tức. Không thể hoàn tác.',
|
||
'settings.apiKeys.deleted': 'Đã xóa khóa',
|
||
'settings.apiKeys.deleteFailed': 'Không thể xóa khóa',
|
||
'settings.apiKeys.createFailed': 'Không thể tạo khóa',
|
||
'settings.apiKeys.copy': 'Sao chép',
|
||
'settings.apiKeys.docsHint': 'Gửi khóa dưới dạng "Authorization: Bearer ..." hoặc "X-API-Key: ..." tới /api/v1.',
|
||
'settings.apiKeys.modal.createTitle': 'Tạo khóa API',
|
||
'settings.apiKeys.modal.name': 'Tên',
|
||
'settings.apiKeys.modal.namePlaceholder': 'ví dụ Dawarich',
|
||
'settings.apiKeys.modal.nameHint': 'Chỉ dành cho bạn, để nhận ra khóa này về sau.',
|
||
'settings.apiKeys.modal.creating': 'Đang tạo...',
|
||
'settings.apiKeys.modal.create': 'Tạo',
|
||
'settings.apiKeys.modal.createdTitle': 'Đã tạo khóa API',
|
||
'settings.apiKeys.modal.createdWarning': 'Hãy sao chép khóa ngay. Khóa chỉ hiện một lần và không thể lấy lại sau này.',
|
||
'settings.apiKeys.modal.done': 'Xong',
|
||
};
|
||
|
||
export default settings;
|