Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions src/locales/vi-VN.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
import { BaseLang } from './base'

const viVN: BaseLang = {
save: 'Lưu',
confirm: 'Xác nhận',
cancel: 'Hủy',
done: 'Hoàn thành',
noData: 'Tạm thời không có dữ liệu',
placeholder: 'Vui lòng nhập nội dung',
edit: 'Chỉnh sửa',
reset: 'Đặt lại',
select: 'Vui lòng chọn',
video: {
errorTip: 'Tải video không thành công',
clickRetry: 'Nhấn để thử lại',
},
fixednav: {
activeText: 'Thu gọn thanh điều hướng',
inactiveText: 'Điều hướng nhanh',
},
infiniteloading: {
pullRefreshText: 'Thả để làm mới',
loadText: 'Đang tải……',
loadMoreText: 'Ôi, đã đến cuối rồi!',
},
pagination: {
prev: 'Trang trước',
next: 'Trang sau',
},
range: {
rangeText: 'Không nằm trong phạm vi này',
},
calendaritem: {
weekdays: ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
end: 'Kết thúc',
start: 'Bắt đầu',
confirm: 'Xác nhận',
title: 'Chọn lịch',
monthTitle: (year: number, month: number) => `Tháng ${month} Năm ${year}`,
today: 'Hôm nay',
loadPreviousMonth: 'Tải dữ liệu của tháng trước',
noEarlierMonth: 'Không có tháng nào sớm hơn',
},
shortpassword: {
title: 'Vui lòng nhập mật khẩu',
description: 'Bạn đã sử dụng tài sản ảo, vui lòng xác minh',
tips: 'Quên mật khẩu',
},
uploader: {
list: 'Tải lên tập tin',
ready: 'Chuẩn bị hoàn thành',
readyUpload: 'Chuẩn bị tải lên',
waitingUpload: 'Đang đợi tải lên',
uploading: 'Đang tải lên...',
success: 'Tải lên thành công',
error: 'Tải lên thất bại',
deleteWord: 'Người dùng đã chặn xóa!',
},
countdown: {
day: 'Ngày',
hour: 'Giờ',
minute: 'Phút',
second: '',
},
Comment on lines +59 to +64
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

second 字段值为空字符串。

countdown.second 的值是空字符串,这可能是遗漏。建议使用 "Giây"(与 datepicker.seconds 保持一致)。

应用此修改:

   countdown: {
     day: 'Ngày',
     hour: 'Giờ',
     minute: 'Phút',
-    second: '',
+    second: 'Giây',
   },
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
countdown: {
day: 'Ngày',
hour: 'Giờ',
minute: 'Phút',
second: '',
},
countdown: {
day: 'Ngày',
hour: 'Giờ',
minute: 'Phút',
second: 'Giây',
},
🤖 Prompt for AI Agents
In src/locales/vi-VN.ts around lines 59 to 64, the countdown.second value is an
empty string; replace it with the Vietnamese word "Giây" (to match
datepicker.seconds) so countdown.second: 'Giây' and save the file preserving
existing object formatting.

address: {
selectRegion: 'Vui lòng chọn khu vực',
deliveryTo: 'Giao đến',
hotCity: 'Thành phố nóng',
chooseAnotherAddress: 'Chọn địa chỉ khác',
selectProvince: 'Chọn Tỉnh/Thành phố',
},
signature: {
reSign: 'Ký lại',
unsupported:
'Xin lỗi, trình duyệt hiện tại không hỗ trợ Canvas, không thể dùng tính năng này!',
},
ecard: {
chooseText: 'Chọn mệnh giá thẻ',
otherValueText: 'Mệnh giá khác',
placeholder: 'Nhập số nguyên 1-5000',
},
timeselect: {
pickupTime: 'Thời gian lấy hàng',
},
sku: {
buyNow: 'Mua ngay',
buyNumber: 'Số lượng mua',
addToCard: 'Thêm vào giỏ hàng',
},
skuheader: {
skuId: 'Mã sản phẩm',
},
addresslist: {
addAddress: 'Tạo địa chỉ ',
},
Comment on lines +93 to +95
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

addAddress 字段值末尾有额外空格。

addAddress: 'Tạo địa chỉ ' 末尾有一个空格,这可能是意外输入。建议删除尾随空格以保持一致性。

应用此修改:

   addresslist: {
-    addAddress: 'Tạo địa chỉ ',
+    addAddress: 'Tạo địa chỉ',
   },
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
addresslist: {
addAddress: 'Tạo địa chỉ ',
},
addresslist: {
addAddress: 'Tạo địa chỉ',
},
🤖 Prompt for AI Agents
In src/locales/vi-VN.ts around lines 93 to 95, the addAddress string contains an
unintended trailing space ("Tạo địa chỉ "); remove the trailing space so the
value is "Tạo địa chỉ" to keep translations consistent and avoid accidental
whitespace in UI output.

comment: {
complaintsText: 'Tôi muốn khiếu nại',
additionalReview: (day: number) => `Đánh giá thêm sau ${day} ngày`,
additionalImages: (length: number) => `${length} ảnh đánh giá thêm`,
},
searchbar: {
basePlaceholder: 'Lên JD tìm sản phẩm tốt',
text: 'Văn bản',
test: 'Kiểm tra',
title1: 'Cách dùng cơ bản',
title2: 'Hình dạng và độ dài tối đa ô tìm kiếm',
title3: 'Cài đặt nền trong và ngoài ô tìm kiếm',
title4: 'Cài đặt văn bản ô tìm kiếm',
title5: 'Tùy chỉnh biểu tượng',
title6: 'Lắng nghe thay đổi dữ liệu',
},
audio: {
back: 'Quay lại',
forward: 'Chuyển nhanh',
pause: 'Tạm dừng',
start: 'Bắt đầu',
mute: 'Tắt âm',
tips: 'Sự kiện onPlayEnd chỉ xảy ra khi loop=false',
},
avatarCropper: { rotate: 'Xoay', selectImage: 'Chọn ảnh' },
datepicker: {
year: 'Năm',
month: 'Tháng',
day: 'Ngày',
hour: 'Giờ',
min: 'Phút',
seconds: 'Giây',
},
pullToRefresh: {
pullingText: 'Kéo xuống để làm mới',
canReleaseText: 'Thả để làm mới',
refreshingText: 'Đang tải...',
completeText: 'Làm mới thành công',
},
tour: {
prevStepText: 'Bước trước',
completeText: 'Hoàn thành',
nextStepText: 'Bước tiếp theo',
},
watermark: {
errorCanvasTips: 'Môi trường hiện tại không hỗ trợ Canvas',
},
}
export default viVN