mirror of
https://github.com/tiennm99/ccs.git
synced 2026-07-16 08:17:11 +00:00
fix(i18n): complete Vietnamese dashboard copy QA polish
This commit is contained in:
+41
-44
@@ -2248,11 +2248,11 @@ const resources = {
|
||||
cursorIde: 'Cursor IDE',
|
||||
accounts: 'Tài khoản',
|
||||
allAccounts: 'Tất cả tài khoản',
|
||||
sharedData: 'Dữ liệu được chia sẻ',
|
||||
sharedData: 'Dữ liệu dùng chung',
|
||||
compatibleClis: 'CLI tương thích',
|
||||
factoryDroid: 'Factory Droid',
|
||||
system: 'Hệ thống',
|
||||
health: 'Trạng thái',
|
||||
health: 'Sức khỏe',
|
||||
settings: 'Cài đặt',
|
||||
openrouterTooltip: 'Hơn 349 mô hình qua OpenRouter',
|
||||
},
|
||||
@@ -2260,7 +2260,7 @@ const resources = {
|
||||
profiles: 'Hồ sơ',
|
||||
cliproxy: 'CLIProxy',
|
||||
accounts: 'Tài khoản',
|
||||
health: 'Trạng thái',
|
||||
health: 'Sức khỏe',
|
||||
configurationRequired: 'Cần cấu hình',
|
||||
},
|
||||
auth: {
|
||||
@@ -2276,13 +2276,12 @@ const resources = {
|
||||
},
|
||||
commonToast: {
|
||||
apiKeyRequired: 'Cần có khóa API',
|
||||
accountAddedPresetFailed:
|
||||
'Đã thêm tài khoản nhưng không áp dụng được giá trị đặt trước mặc định',
|
||||
accountAddedPresetFailed: 'Đã thêm tài khoản nhưng không áp dụng được preset mặc định',
|
||||
settingsCopied: 'Đã sao chép cài đặt vào bảng nhớ tạm',
|
||||
enterPresetName: 'Vui lòng nhập tên đặt trước để lưu',
|
||||
enterPresetName: 'Vui lòng nhập tên preset để lưu',
|
||||
codeCopied: 'Đã sao chép mã vào bảng nhớ tạm',
|
||||
copyCodeFailed: 'Không sao chép được mã',
|
||||
appliedModelAllTiers: 'Mô hình áp dụng cho tất cả các tầng',
|
||||
appliedModelAllTiers: 'Đã áp dụng mô hình cho tất cả các tier',
|
||||
settingsSaved: 'Đã lưu cài đặt',
|
||||
defaultTargetUpdated: 'Đã cập nhật mục tiêu mặc định',
|
||||
failedUpdateDefaultTarget:
|
||||
@@ -2298,7 +2297,7 @@ const resources = {
|
||||
apiKey: 'Khóa API',
|
||||
defaultModel: 'Mô hình mặc định (ANTHROPIC_MODEL)',
|
||||
defaultModelHint: 'Để trống để sử dụng: {{model}}',
|
||||
modelMappingTitle: 'Lập bản đồ mô hình (Opus/Sonnet/Haiku)',
|
||||
modelMappingTitle: 'Ánh xạ mô hình (Opus/Sonnet/Haiku)',
|
||||
modelMappingDesc:
|
||||
'Cấu hình ID mô hình riêng cho từng tier. Hữu ích với API proxy định tuyến từng loại mô hình đến backend khác nhau.',
|
||||
opusModel: 'Mô hình Opus (ANTHROPIC_DEFAULT_OPUS_MODEL)',
|
||||
@@ -2349,9 +2348,9 @@ const resources = {
|
||||
skipHint: 'Bỏ qua nếu bạn chỉ muốn thêm tài khoản mà không tạo biến thể',
|
||||
},
|
||||
customPresetDialog: {
|
||||
title: 'Đặt trước tùy chỉnh',
|
||||
presetNameOptional: 'Tên đặt trước (tùy chọn)',
|
||||
presetNamePlaceholder: 'ví dụ: Cấu hình tùy chỉnh của tôi',
|
||||
title: 'Preset tùy chỉnh',
|
||||
presetNameOptional: 'Tên preset (tùy chọn)',
|
||||
presetNamePlaceholder: 'ví dụ: Preset tùy chỉnh của tôi',
|
||||
codexTipPrefix: 'Mẹo Codex: hậu tố',
|
||||
codexTipSuffix: 'nỗ lực ghim. Các mô hình không có hậu tố sử dụng cài đặt Tư duy.',
|
||||
defaultModel: 'Mô hình mặc định',
|
||||
@@ -2363,7 +2362,7 @@ const resources = {
|
||||
haikuModel: 'Haiku (Nhanh)',
|
||||
haikuModelDesc: 'Phản hồi nhanh cho các tác vụ đơn giản',
|
||||
cancel: 'Hủy bỏ',
|
||||
savePreset: 'Lưu cài đặt trước',
|
||||
savePreset: 'Lưu preset',
|
||||
applyPreset: 'Áp dụng cài sẵn',
|
||||
},
|
||||
componentModelSelector: {
|
||||
@@ -2377,7 +2376,7 @@ const resources = {
|
||||
basicSettings: 'Cài đặt cơ bản',
|
||||
accountType: 'Loại tài khoản',
|
||||
accountTypeIndividual: 'Cá nhân',
|
||||
accountTypeBusiness: 'Doanh nghiệp',
|
||||
accountTypeBusiness: 'Business',
|
||||
accountTypeEnterprise: 'Enterprise',
|
||||
rateLimiting: 'Giới hạn tỷ lệ',
|
||||
rateLimitSeconds: 'Giới hạn tốc độ (giây)',
|
||||
@@ -2518,14 +2517,14 @@ const resources = {
|
||||
ready: 'Sẵn sàng',
|
||||
noConfig: 'Không có cấu hình',
|
||||
syncsProfilesDesc: 'Đồng bộ hóa cấu hình API với cấu hình CLIProxy cục bộ',
|
||||
runDoctorHint: 'Chạy <code>ccs doctor --fix</code> để tạo config.',
|
||||
runDoctorHint: 'Chạy <code>ccs doctor --fix</code> để tạo cấu hình.',
|
||||
details: 'Chi tiết',
|
||||
syncNow: 'Đồng bộ ngay',
|
||||
},
|
||||
syncDialog: {
|
||||
title: 'Đồng bộ hóa hồ sơ với CLIProxy cục bộ',
|
||||
description: 'Đồng bộ hóa cấu hình API CCS của bạn với CLIProxy config.yaml cục bộ.',
|
||||
noProfiles: 'Không có cấu hình nào được định cấu hình để đồng bộ hóa.',
|
||||
noProfiles: 'Không có profile nào để đồng bộ.',
|
||||
createProfilesFirst: 'Trước tiên hãy tạo hồ sơ API bằng tab Hồ sơ.',
|
||||
modelLabel: 'Mô hình:',
|
||||
ready: 'Sẵn sàng',
|
||||
@@ -2552,7 +2551,7 @@ const resources = {
|
||||
tabResponse: 'Phản hồi',
|
||||
tabRaw: 'Raw',
|
||||
modelLabel: 'Mô hình:',
|
||||
quotaResetsIn: 'Đặt lại hạn ngạch trong',
|
||||
quotaResetsIn: 'Quota sẽ được đặt lại sau',
|
||||
method: 'Phương thức',
|
||||
provider: 'Nhà cung cấp',
|
||||
version: 'Phiên bản',
|
||||
@@ -2650,7 +2649,7 @@ const resources = {
|
||||
'Bạn có chắc chắn muốn xóa tài khoản "{{name}}" không? Thao tác này sẽ xóa hồ sơ và tất cả dữ liệu phiên của nó. Không thể hoàn tác hành động này.',
|
||||
cancel: 'Hủy bỏ',
|
||||
delete: 'Xóa',
|
||||
sharedGroupStandard: 'được chia sẻ ({{group}}, tiêu chuẩn)',
|
||||
sharedGroupStandard: 'chia sẻ ({{group}}, tiêu chuẩn)',
|
||||
sharedGroupDeeper: 'chia sẻ ({{group}}, sâu hơn)',
|
||||
sharedGroupLegacy: 'chia sẻ ({{group}}, kế thừa tiêu chuẩn)',
|
||||
isolatedLegacy: 'tách biệt (mặc định cũ)',
|
||||
@@ -2728,7 +2727,7 @@ const resources = {
|
||||
quotaLoading: 'Hạn ngạch...',
|
||||
quota: 'hạn ngạch',
|
||||
quotaUnavailable: 'Thông tin quota chưa khả dụng',
|
||||
reauthNeeded: 'Reauth cần thiết',
|
||||
reauthNeeded: 'Cần xác thực lại',
|
||||
removeAndReadd: 'Xóa và thêm lại tài khoản',
|
||||
autoRefreshFailed: 'Tự động làm mới không thành công',
|
||||
},
|
||||
@@ -2778,7 +2777,7 @@ const resources = {
|
||||
placeholderModelId: 'model-id',
|
||||
placeholderAccountId: 'account-id',
|
||||
editCompositeTitle: 'Chỉnh sửa biến thể tổng hợp: {{name}}',
|
||||
editSingleTitle: 'Chỉnh sửa một biến thể: {{name}}',
|
||||
editSingleTitle: 'Chỉnh sửa biến thể: {{name}}',
|
||||
},
|
||||
profileEditor: {
|
||||
profileInfo: 'Thông tin hồ sơ',
|
||||
@@ -2810,7 +2809,7 @@ const resources = {
|
||||
settingsTabs: {
|
||||
web: 'Web',
|
||||
env: 'Env',
|
||||
think: 'Thinking',
|
||||
think: 'Tư duy',
|
||||
proxy: 'Proxy',
|
||||
auth: 'Xác thực',
|
||||
backup: 'Sao lưu',
|
||||
@@ -2827,7 +2826,7 @@ const resources = {
|
||||
'Cấu hình token xác thực CLIProxy. Các thay đổi yêu cầu khởi động lại CLIProxy.',
|
||||
apiKey: 'Khóa API',
|
||||
custom: 'Tùy chỉnh',
|
||||
apiKeyDesc: 'Được sử dụng bởi Claude Code để xác thực bằng CLIProxy',
|
||||
apiKeyDesc: 'Được Claude Code dùng để xác thực qua CLIProxy',
|
||||
apiKeyPlaceholder: 'Khóa API',
|
||||
managementSecret: 'Bí mật quản lý',
|
||||
managementSecretDesc: 'Được bảng điều khiển CCS sử dụng để truy cập API quản lý CLIProxy',
|
||||
@@ -2840,13 +2839,13 @@ const resources = {
|
||||
},
|
||||
settingsGlobalEnv: {
|
||||
description:
|
||||
'Biến môi trường được áp dụng cho tất cả hồ sơ không phải Claude subscription (gemini, codex, agy, ghcp, v.v.)',
|
||||
'Biến môi trường được áp dụng cho tất cả hồ sơ không dùng Claude subscription (gemini, codex, agy, ghcp, v.v.)',
|
||||
enabled: 'Đã bật Env toàn cầu',
|
||||
disabled: 'Env toàn cầu bị vô hiệu hóa',
|
||||
enabledDesc: 'Biến Env sẽ được áp dụng cho các hồ sơ bên thứ ba',
|
||||
disabledDesc: 'Biến Env sẽ không được áp dụng',
|
||||
envVars: 'Biến môi trường',
|
||||
noneConfigured: 'Không có biến môi trường nào được định cấu hình',
|
||||
noneConfigured: 'Không có biến môi trường nào được cấu hình',
|
||||
addNew: 'Thêm biến mới',
|
||||
keyName: 'KEY_NAME',
|
||||
value: 'giá trị',
|
||||
@@ -2878,7 +2877,7 @@ const resources = {
|
||||
disabled: 'Tìm kiếm trên web bị vô hiệu hóa',
|
||||
checking: 'Đang kiểm tra trạng thái...',
|
||||
providers: 'Nhà cung cấp',
|
||||
noneConfigured: 'Không có nhà cung cấp nào được định cấu hình',
|
||||
noneConfigured: 'Không có nhà cung cấp nào được cấu hình',
|
||||
noneConfiguredHint: 'Cài công cụ CLI để bật các nhà cung cấp WebSearch',
|
||||
checkProviders: 'Kiểm tra các nhà cung cấp',
|
||||
installed: 'đã cài đặt',
|
||||
@@ -2909,7 +2908,7 @@ const resources = {
|
||||
remote: 'Từ xa',
|
||||
localDesc: 'Chạy nhị phân {{backend}} trên máy này',
|
||||
remoteDesc: 'Kết nối với máy chủ {{backend}} từ xa',
|
||||
backendBinary: 'Binary backend',
|
||||
backendBinary: 'Tệp thực thi backend',
|
||||
stopProxyToSwitch:
|
||||
'Dừng proxy đang chạy trong Trạng thái phiên bản trước khi chuyển backend.',
|
||||
default: 'Mặc định',
|
||||
@@ -2931,7 +2930,7 @@ const resources = {
|
||||
step2: 'Bước 2',
|
||||
typePrefix: 'Nhập',
|
||||
typeSuffix: 'để kích hoạt.',
|
||||
typePhraseAria: 'Nhập I ACCEPT RISK để bật chế độ người dùng nâng cao Antigravity',
|
||||
typePhraseAria: 'Nhập I ACCEPT RISK để bật chế độ power user Antigravity',
|
||||
exactPhrase: 'Phải nhập chính xác cụm từ.',
|
||||
enableAgyMode: 'Bật chế độ power user',
|
||||
toggleAgyMode: 'Chuyển đổi chế độ power user AGY',
|
||||
@@ -2952,7 +2951,7 @@ const resources = {
|
||||
remoteConfigTitle: 'Cấu hình máy chủ từ xa',
|
||||
host: 'Host',
|
||||
hostPlaceholder: '192.168.1.100 hoặc proxy.example.com',
|
||||
defaultPort: 'mặc định: {{value}}',
|
||||
defaultPort: 'mặc định {{value}}',
|
||||
portPlaceholder: 'Để trống để dùng {{value}}',
|
||||
protocol: 'Giao thức',
|
||||
http: 'HTTP',
|
||||
@@ -2962,8 +2961,7 @@ const resources = {
|
||||
apiKeyDesc: 'Dùng cho các yêu cầu API đến /v1/chat/completions',
|
||||
managementKeyOptional: 'Khóa quản lý (tùy chọn)',
|
||||
managementKeyPlaceholder: 'Đối với điểm cuối /v0/management/*',
|
||||
managementKeyDesc:
|
||||
'Được sử dụng cho API quản lý trang tổng quan. Quay trở lại Khóa API nếu không được đặt.',
|
||||
managementKeyDesc: 'Dùng cho API quản lý dashboard. Nếu bỏ trống sẽ dùng Khóa API.',
|
||||
testing: 'Đang thử nghiệm...',
|
||||
testConnection: 'Kiểm tra kết nối',
|
||||
connectedLatency: 'Đã kết nối ({{value}}ms)',
|
||||
@@ -3033,7 +3031,7 @@ const resources = {
|
||||
noProfileMatch: 'Không có hồ sơ nào khớp với "{{query}}"',
|
||||
profileCount: '{{count}} hồ sơ',
|
||||
profileCount_other: '{{count}} hồ sơ',
|
||||
configuredCount: '{{count}} đã được định cấu hình',
|
||||
configuredCount: '{{count}} đã cấu hình',
|
||||
deleteProfileTitle: 'Xóa hồ sơ',
|
||||
deleteProfileDesc:
|
||||
'Bạn có chắc chắn muốn xóa "{{name}}" không? Thao tác này sẽ xóa tệp cài đặt và không thể hoàn tác.',
|
||||
@@ -3082,7 +3080,7 @@ const resources = {
|
||||
tableScopeSuffix: 'để thay đổi chế độ/nhóm/độ sâu.',
|
||||
accountMatrix: 'Ma trận tài khoản',
|
||||
sharedTotalDesc:
|
||||
'Tổng số được chia sẻ: {{count}}. Các hành động bao gồm cài đặt Đồng bộ hóa và xác nhận kế thừa.',
|
||||
'Tổng số tài khoản chia sẻ: {{count}}. Bao gồm thao tác Sync và xác nhận kế thừa.',
|
||||
loadingAccounts: 'Đang tải tài khoản...',
|
||||
},
|
||||
health: {
|
||||
@@ -3116,9 +3114,9 @@ const resources = {
|
||||
doneCount: 'Xong',
|
||||
searchPlaceholder: 'Tìm kiếm hành động hoặc lệnh',
|
||||
noNotices: 'Không có thông báo nào khớp với chế độ xem này.',
|
||||
noUpdates: 'Không có bản cập nhật có sẵn.',
|
||||
noUpdates: 'Hiện không có bản cập nhật nào.',
|
||||
published: 'Đã xuất bản {{date}}',
|
||||
markDone: 'Đánh dấu là xong',
|
||||
markDone: 'Đánh dấu hoàn tất',
|
||||
dismiss: 'Ẩn',
|
||||
reopen: 'Mở lại',
|
||||
doNext: 'Làm tiếp theo',
|
||||
@@ -3268,12 +3266,11 @@ const resources = {
|
||||
defaultModelRequired: 'Mô hình mặc định là bắt buộc',
|
||||
savedConfig: 'Đã lưu cấu hình Cursor và ánh xạ mô hình',
|
||||
failedSaveConfig: 'Không lưu được cấu hình',
|
||||
modelsLoadingWait:
|
||||
'Các mô hình vẫn đang tải. Vui lòng đợi trước khi áp dụng cài đặt trước.',
|
||||
modelsLoadingWait: 'Mô hình vẫn đang tải. Vui lòng đợi trước khi áp dụng preset.',
|
||||
noModelsAvailable: 'Chưa có mô hình nào. Hãy khởi động daemon rồi làm mới.',
|
||||
appliedCodexPreset: 'Đã áp dụng cài đặt trước Codex GPT-5.3',
|
||||
appliedClaudePreset: 'Đã áp dụng cài đặt trước Claude 4.6',
|
||||
appliedGeminiPreset: 'Đã áp dụng cài đặt trước Gemini 3',
|
||||
appliedCodexPreset: 'Đã áp dụng preset Codex GPT-5.3',
|
||||
appliedClaudePreset: 'Đã áp dụng preset Claude 4.6',
|
||||
appliedGeminiPreset: 'Đã áp dụng preset Gemini 3',
|
||||
integrationEnabled: 'Đã bật tích hợp Cursor',
|
||||
integrationDisabled: 'Đã tắt tích hợp Cursor',
|
||||
failedUpdateIntegration: 'Không cập nhật được trạng thái tích hợp',
|
||||
@@ -3350,24 +3347,24 @@ const resources = {
|
||||
commands: 'Lệnh',
|
||||
skills: 'Kỹ năng',
|
||||
agents: 'Agent',
|
||||
title: 'Dữ liệu được chia sẻ',
|
||||
title: 'Dữ liệu dùng chung',
|
||||
subtitle: 'Các lệnh, kỹ năng và agent được chia sẻ giữa các phiên Claude',
|
||||
totalShared: 'Tổng số được chia sẻ',
|
||||
totalShared: 'Tổng số mục dùng chung',
|
||||
visible: 'Hiển thị',
|
||||
markdownDetail: 'Chế độ xem chi tiết Markdown',
|
||||
filterPrefix: 'Lọc:',
|
||||
configurationRequired: 'Cần cấu hình',
|
||||
countsUnavailable: 'Số lượng không có sẵn',
|
||||
countsUnavailable: 'Không có số liệu',
|
||||
retryCounts: 'Số lần thử lại',
|
||||
filterPlaceholder: 'Lọc {{tab}} theo tên, mô tả hoặc đường dẫn',
|
||||
showing: 'Đang hiển thị {{visible}} trong số {{total}} {{tab}}',
|
||||
showingQuery: 'cho "{{query}}"',
|
||||
refreshing: '(đang làm mới...)',
|
||||
loadingShared: 'Đang tải chia sẻ {{tab}}...',
|
||||
failedLoadShared: 'Không tải được chia sẻ {{tab}}',
|
||||
loadingShared: 'Đang tải {{tab}} dùng chung...',
|
||||
failedLoadShared: 'Không tải được danh sách {{tab}} dùng chung',
|
||||
retry: 'Thử lại',
|
||||
noSharedFound:
|
||||
'Không tìm thấy {{tab}} được chia sẻ. Chạy `ccs sync` hoặc thêm các mục trong thư mục dùng chung của bạn.',
|
||||
'Không tìm thấy {{tab}} dùng chung. Chạy `ccs sync` hoặc thêm mục trong thư mục dùng chung của bạn.',
|
||||
noMatch: 'Không có {{tab}} khớp với "{{query}}".',
|
||||
selectOne: 'Chọn {{tab}} để xem toàn bộ nội dung.',
|
||||
pathLabel: 'Đường dẫn',
|
||||
|
||||
Reference in New Issue
Block a user