From 3e64cb86a69ae7ec3e4878372131a5512145281f Mon Sep 17 00:00:00 2001 From: Maurice Date: Mon, 29 Jun 2026 20:45:06 +0200 Subject: [PATCH] chore(i18n): sync Vietnamese with latest dev keys Add the keys dev gained since this PR opened so the new vi locale keeps full parity: the help namespace (wiki help center), settings appearance options, costs split modes, dashboard Unsplash cover search, the insecure-cookie login hint, nav.help and the admin group labels. --- shared/src/i18n/vi/admin.ts | 4 ++ shared/src/i18n/vi/budget.ts | 4 ++ shared/src/i18n/vi/dashboard.ts | 7 ++++ shared/src/i18n/vi/help.ts | 13 +++++++ shared/src/i18n/vi/index.ts | 2 + shared/src/i18n/vi/login.ts | 4 ++ shared/src/i18n/vi/nav.ts | 1 + shared/src/i18n/vi/settings.ts | 67 +++++++++++++++++++++++++++++++++ 8 files changed, 102 insertions(+) create mode 100644 shared/src/i18n/vi/help.ts diff --git a/shared/src/i18n/vi/admin.ts b/shared/src/i18n/vi/admin.ts index 91dcd19d..4bad9906 100644 --- a/shared/src/i18n/vi/admin.ts +++ b/shared/src/i18n/vi/admin.ts @@ -348,5 +348,9 @@ const admin: TranslationStrings = { 'Xóa tất cả mật mã của người dùng này (ví dụ: trên thiết bị bị mất). Họ vẫn có thể đăng nhập bằng mật khẩu của mình.', 'admin.passkey.resetConfirm': 'Xóa tất cả mật mã cho {name}?', 'admin.passkey.resetDone': 'Đã xóa {count} mật mã', + 'admin.group.users': 'Người dùng', + 'admin.group.config': 'Cấu hình', + 'admin.group.integration': 'Tích hợp', + 'admin.group.maintenance': 'Bảo trì', }; export default admin; diff --git a/shared/src/i18n/vi/budget.ts b/shared/src/i18n/vi/budget.ts index fa1710a5..8b4b7de8 100644 --- a/shared/src/i18n/vi/budget.ts +++ b/shared/src/i18n/vi/budget.ts @@ -116,6 +116,10 @@ const budget: TranslationStrings = { 'costs.unfinishedHint': 'Chỉ tổng cộng - chưa thanh toán', 'costs.tapToInclude': 'Nhấn để bao gồm', 'costs.amount': 'Số lượng', + 'costs.split': 'Chia tiền', + 'costs.splitEqually': 'Chia đều', + 'costs.splitCustom': 'Tùy chỉnh', + 'costs.splitTicket': 'Hóa đơn', }; export default budget; diff --git a/shared/src/i18n/vi/dashboard.ts b/shared/src/i18n/vi/dashboard.ts index 0857c0d8..c529ac87 100644 --- a/shared/src/i18n/vi/dashboard.ts +++ b/shared/src/i18n/vi/dashboard.ts @@ -162,5 +162,12 @@ const dashboard: TranslationStrings = { 'dashboard.aria.addTimezone': 'Thêm múi giờ', 'dashboard.aria.removeTimezone': 'Xóa {city}', 'dashboard.dayCountRequired': 'Số ngày là bắt buộc', + 'dashboard.coverSaveError': 'Không thể lưu ảnh bìa', + 'dashboard.searchUnsplash': 'Tìm trên Unsplash', + 'dashboard.unsplashSearchPlaceholder': 'Tìm ảnh điểm đến', + 'dashboard.unsplashQueryRequired': 'Nhập từ khóa tìm kiếm', + 'dashboard.unsplashNoResults': 'Không tìm thấy ảnh nào', + 'dashboard.coverSearchError': 'Tìm kiếm trên Unsplash không thành công', + 'dashboard.useUnsplashPhoto': 'Dùng ảnh Unsplash của {photographer}', }; export default dashboard; diff --git a/shared/src/i18n/vi/help.ts b/shared/src/i18n/vi/help.ts new file mode 100644 index 00000000..b7275250 --- /dev/null +++ b/shared/src/i18n/vi/help.ts @@ -0,0 +1,13 @@ +import type { TranslationStrings } from '../types'; + +const help: TranslationStrings = { + 'help.title': 'Trợ giúp & Tài liệu', + 'help.search': 'Tìm trong tài liệu…', + 'help.contents': 'Nội dung', + 'help.noResults': 'Không có trang nào phù hợp.', + 'help.errorTitle': 'Không thể tải trang này', + 'help.errorBody': + 'Nội dung trợ giúp được lấy từ wiki TREK. Hãy kiểm tra kết nối và thử lại.', +}; + +export default help; diff --git a/shared/src/i18n/vi/index.ts b/shared/src/i18n/vi/index.ts index 77aeb6a0..36f5a56b 100644 --- a/shared/src/i18n/vi/index.ts +++ b/shared/src/i18n/vi/index.ts @@ -10,6 +10,7 @@ import dashboard from './dashboard'; import day from './day'; import dayplan from './dayplan'; import files from './files'; +import help from './help'; import inspector from './inspector'; import journey from './journey'; import login from './login'; @@ -82,5 +83,6 @@ const locale = { ...oauth, ...system_notice, ...transport, + ...help, }; export default locale; diff --git a/shared/src/i18n/vi/login.ts b/shared/src/i18n/vi/login.ts index 2a99eea0..e98435fd 100644 --- a/shared/src/i18n/vi/login.ts +++ b/shared/src/i18n/vi/login.ts @@ -85,5 +85,9 @@ const login: TranslationStrings = { 'login.resetPasswordFailed': 'Đặt lại không thành công. Liên kết có thể đã hết hạn.', 'login.passkey.signIn': 'Đăng nhập bằng mật mã', 'login.passkey.failed': 'Đăng nhập bằng mật mã không thành công. Vui lòng thử lại.', + 'login.insecureCookie.title': 'Đăng nhập không được giữ qua HTTP', + 'login.insecureCookie.body': + 'Bạn đang kết nối qua HTTP thuần, nên trình duyệt loại bỏ cookie phiên bảo mật của TREK — yêu cầu tiếp theo sẽ thất bại với "Access token required". Cách khắc phục: dùng HTTPS, hoặc với máy chủ tại nhà hãy đặt COOKIE_SECURE=false.', + 'login.insecureCookie.link': 'Mở hướng dẫn khắc phục sự cố', }; export default login; diff --git a/shared/src/i18n/vi/nav.ts b/shared/src/i18n/vi/nav.ts index 8eec6ac4..0588172a 100644 --- a/shared/src/i18n/vi/nav.ts +++ b/shared/src/i18n/vi/nav.ts @@ -16,5 +16,6 @@ const nav: TranslationStrings = { 'nav.bottomAdmin': 'Cài đặt quản trị viên', 'nav.bottomLogout': 'Đăng xuất', 'nav.bottomAdminBadge': 'Quản trị viên', + 'nav.help': 'Trợ giúp', }; export default nav; diff --git a/shared/src/i18n/vi/settings.ts b/shared/src/i18n/vi/settings.ts index 34f91479..cd6c681c 100644 --- a/shared/src/i18n/vi/settings.ts +++ b/shared/src/i18n/vi/settings.ts @@ -340,6 +340,73 @@ const settings: TranslationStrings = { '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.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.general.languageRegion': 'Ngôn ngữ & khu vực', + 'settings.general.travelMap': 'Du lịch & bản đồ', }; export default settings;