feat(web): add auth+search i18n translations and filter-bar accessibility

Add missing auth and search translation namespaces to vi.json and en.json
that are required by login/register pages and search filter-bar component.
Update filter-bar with useTranslations('search'), aria-labels, and
role="search" for WCAG 2.1 AA compliance.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ho Ngoc Hai
2026-04-09 10:22:59 +07:00
parent 8179f1c16e
commit 862078df37
21 changed files with 213 additions and 83 deletions

View File

@@ -106,5 +106,62 @@
"label": "Language",
"vi": "Tiếng Việt",
"en": "English"
},
"auth": {
"loginTitle": "Login",
"loginDescription": "Enter your phone number and password to log in",
"phone": "Phone number",
"phonePlaceholder": "0912345678",
"password": "Password",
"passwordPlaceholder": "Enter password",
"showPassword": "Show",
"hidePassword": "Hide",
"loginButton": "Login",
"orLoginWith": "Or login with",
"noAccount": "Don't have an account?",
"registerLink": "Register",
"dismiss": "Dismiss",
"registerTitle": "Register",
"registerDescription": "Create a new account to start using GoodGo",
"fullName": "Full name",
"fullNamePlaceholder": "John Doe",
"email": "Email",
"emailPlaceholder": "email@example.com",
"confirmPassword": "Confirm password",
"confirmPasswordPlaceholder": "Re-enter password",
"registerButton": "Register",
"hasAccount": "Already have an account?",
"loginLink": "Login",
"orRegisterWith": "Or register with",
"oauthErrors": {
"oauth_failed": "Social login failed. Please try again.",
"access_denied": "You denied access. Please try again.",
"invalid_request": "Invalid login request. Please try again.",
"server_error": "Server error. Please try again later.",
"temporarily_unavailable": "Service temporarily unavailable. Please try again later.",
"default": "An error occurred during login. Please try again."
}
},
"search": {
"filters": "Filters",
"allTransactions": "All transactions",
"allPropertyTypes": "All property types",
"allAreas": "All areas",
"allPrices": "All prices",
"bedrooms": "Bedrooms",
"bedroomsCount": "{count}+ BR",
"areaLabel": "Area (m²)",
"areaFrom": "From",
"areaTo": "To",
"district": "District",
"searchButton": "Search",
"priceRanges": {
"under1b": "Under 1 billion",
"1to3b": "1 - 3 billion",
"3to5b": "3 - 5 billion",
"5to10b": "5 - 10 billion",
"10to20b": "10 - 20 billion",
"over20b": "Over 20 billion"
}
}
}

View File

@@ -106,5 +106,62 @@
"label": "Ngôn ngữ",
"vi": "Tiếng Việt",
"en": "English"
},
"auth": {
"loginTitle": "Đăng nhập",
"loginDescription": "Nhập số điện thoại và mật khẩu để đăng nhập",
"phone": "Số điện thoại",
"phonePlaceholder": "0912345678",
"password": "Mật khẩu",
"passwordPlaceholder": "Nhập mật khẩu",
"showPassword": "Hiện",
"hidePassword": "Ẩn",
"loginButton": "Đăng nhập",
"orLoginWith": "Hoặc đăng nhập với",
"noAccount": "Chưa có tài khoản?",
"registerLink": "Đăng ký",
"dismiss": "Bỏ qua",
"registerTitle": "Đăng ký",
"registerDescription": "Tạo tài khoản mới để bắt đầu sử dụng GoodGo",
"fullName": "Họ và tên",
"fullNamePlaceholder": "Nguyễn Văn A",
"email": "Email",
"emailPlaceholder": "email@example.com",
"confirmPassword": "Xác nhận mật khẩu",
"confirmPasswordPlaceholder": "Nhập lại mật khẩu",
"registerButton": "Đăng ký",
"hasAccount": "Đã có tài khoản?",
"loginLink": "Đăng nhập",
"orRegisterWith": "Hoặc đăng ký với",
"oauthErrors": {
"oauth_failed": "Đăng nhập bằng mạng xã hội thất bại. Vui lòng thử lại.",
"access_denied": "Bạn đã từ chối quyền truy cập. Vui lòng thử lại.",
"invalid_request": "Yêu cầu đăng nhập không hợp lệ. Vui lòng thử lại.",
"server_error": "Lỗi máy chủ. Vui lòng thử lại sau.",
"temporarily_unavailable": "Dịch vụ tạm thời không khả dụng. Vui lòng thử lại sau.",
"default": "Đã xảy ra lỗi khi đăng nhập. Vui lòng thử lại."
}
},
"search": {
"filters": "Bộ lọc",
"allTransactions": "Tất cả giao dịch",
"allPropertyTypes": "Tất cả loại BĐS",
"allAreas": "Tất cả khu vực",
"allPrices": "Tất cả mức giá",
"bedrooms": "Phòng ngủ",
"bedroomsCount": "{count}+ PN",
"areaLabel": "Diện tích (m²)",
"areaFrom": "Từ",
"areaTo": "Đến",
"district": "Quận/huyện",
"searchButton": "Tìm kiếm",
"priceRanges": {
"under1b": "Dưới 1 tỷ",
"1to3b": "1 - 3 tỷ",
"3to5b": "3 - 5 tỷ",
"5to10b": "5 - 10 tỷ",
"10to20b": "10 - 20 tỷ",
"over20b": "Trên 20 tỷ"
}
}
}