UI/UX pass: i18n completion, responsive fixes, cleanup
Deploy Iddaai Frontend / build-and-deploy (push) Successful in 2m37s
Deploy Iddaai Frontend / build-and-deploy (push) Successful in 2m37s
- Fix flex 'align=flex-start' shrinking content to min width in column
mode on matches, dashboard, and coupon-builder layouts (mobile/tablet
cards now span full width)
- Localize all user-facing hardcoded Turkish strings: lineups card,
odds card, v28 odds band panel, team/league pages, teams search,
auth toasts, league headers (new keys in tr/en messages)
- Populate empty predictions.prediction-reasons group (20 veto reasons)
and missing predictions.ui keys so the EN locale gets full coverage
- Use the active locale for all date formatting instead of hardcoded
tr-TR (match card, match detail, team detail)
- Replace raw native date input with Chakra Input (dark mode + theming)
- Rename match-detail first tab from 'Tüm Maçlar' to 'Genel Bakış'
- Fix '4 maçlar' grammar with a proper {count} maç message
- Delete dead 3300-line Chakra showcase component (home-card.tsx)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+126
-7
@@ -38,7 +38,9 @@
|
||||
"login-success": "Login successful!",
|
||||
"register-success": "Registration successful!",
|
||||
"login-required-title": "Login Required",
|
||||
"login-required-message": "Please sign in or create an account to view match analysis."
|
||||
"login-required-message": "Please sign in or create an account to view match analysis.",
|
||||
"login-error": "Login failed!",
|
||||
"register-error": "Registration failed!"
|
||||
},
|
||||
"all-right-reserved": "All rights reserved.",
|
||||
"privacy-policy": "Privacy Policy",
|
||||
@@ -155,7 +157,26 @@
|
||||
"penalty": "Penalty",
|
||||
"half-time": "1st Half",
|
||||
"second-half": "2nd Half",
|
||||
"assist": "Assist"
|
||||
"assist": "Assist",
|
||||
"live-odds": "Live Betting Odds",
|
||||
"lineup-official-xi": "Official Starting XI",
|
||||
"lineup-confirmed-squad": "Confirmed Squad",
|
||||
"lineup-confirmed": "Confirmed",
|
||||
"lineup-confirmed-live-desc": "The lineup has been officially confirmed.",
|
||||
"lineup-participation-desc": "Lineup taken from match participation data.",
|
||||
"lineup-probable-squad": "Probable Squad",
|
||||
"lineup-probable": "Probable",
|
||||
"lineup-probable-desc": "Probable lineup based on starting XI data from recent matches. The AI analysis is based on this squad.",
|
||||
"lineup-info": "Lineup Info",
|
||||
"lineup-pending": "Awaiting Lineup",
|
||||
"lineup-pending-desc": "The lineup has not been announced yet. The AI analysis is based on overall team strength and statistics.",
|
||||
"lineup-tbd": "Lineup not yet known",
|
||||
"lineup-tbd-sub": "Will be updated close to kick-off",
|
||||
"lineup-not-announced": "Lineup Not Announced Yet",
|
||||
"lineup-not-announced-desc": "{home} and {away} lineups will be updated close to kick-off. The AI analysis is based on team statistics and balance of strength.",
|
||||
"overview": "Overview",
|
||||
"match-count": "{count} matches",
|
||||
"odds-legend": "% = model's calibrated hit probability · ↓↑ = opening→closing movement"
|
||||
},
|
||||
"predictions": {
|
||||
"title": "Predictions",
|
||||
@@ -223,7 +244,27 @@
|
||||
"no_bet_conditions_met": "The algorithm could not find a safe/valuable bet for this match.",
|
||||
"insufficient_play_score": "Model signal is below the threshold.",
|
||||
"no_ev_edge_minimum_stake": "Passed safety gates but no mathematical edge — minimum stake applied.",
|
||||
"upset_risk_detected": "High upset risk detected, proceed with caution."
|
||||
"upset_risk_detected": "High upset risk detected, proceed with caution.",
|
||||
"confidence_interval_too_wide": "The confidence interval is too wide.",
|
||||
"confidence_band_low": "The confidence band is low.",
|
||||
"draw_probability_elevated": "The draw probability looks elevated.",
|
||||
"balanced_match_risk": "The match looks balanced; there is upset risk.",
|
||||
"high_total_goal_volatility": "High goal tempo increases the upset risk.",
|
||||
"mutual_goal_pressure": "Both teams are generating goal threat.",
|
||||
"late_goal_swing_risk": "High risk of a late goal or score swing.",
|
||||
"live_match_open_state": "The live match has turned completely open.",
|
||||
"live_match_active_state": "The live match is more active than expected.",
|
||||
"live_state_impossible_market": "The live match state invalidates this market.",
|
||||
"live_score_exceeds_under_line": "The live score is very close to or past the under line.",
|
||||
"score_model_conflicts_with_under_pick": "The score and xG model conflict with this under pick.",
|
||||
"score_model_conflicts_with_over_pick": "The score and xG model conflict with this over pick.",
|
||||
"market_stack_conflict_over25": "The over 2.5 signal conflicts with this market.",
|
||||
"market_stack_conflict_btts": "The BTTS signal conflicts with this market.",
|
||||
"live_total_goals_close_to_line": "The live total goals are too close to this line.",
|
||||
"score_model_conflicts_with_btts_no": "The score and xG model conflict with the BTTS-No pick.",
|
||||
"score_model_conflicts_with_draw_pick": "The score model does not support the draw pick.",
|
||||
"score_model_conflicts_with_home_pick": "The score model does not support the home pick.",
|
||||
"score_model_conflicts_with_away_pick": "The score model does not support the away pick."
|
||||
},
|
||||
"ev-edge": "Theoretical Edge",
|
||||
"implied-prob": "Market Probability",
|
||||
@@ -360,7 +401,11 @@
|
||||
"confidence-medium": "Medium",
|
||||
"confidence-low": "Low",
|
||||
"confidence-unknown": "Unknown",
|
||||
"info": "Info"
|
||||
"info": "Info",
|
||||
"unified-confidence": "Confidence Score",
|
||||
"underdog-ref-tooltip": "Model probability of the underdog side (informational)",
|
||||
"trap-tooltip": "The market is overconfident",
|
||||
"no-value-tooltip": "Model agrees with the favourite but the odds are too low"
|
||||
}
|
||||
},
|
||||
"coupons": {
|
||||
@@ -487,7 +532,8 @@
|
||||
"freq-mode-active": "Frequency Engine active",
|
||||
"ai-mode-active": "AI Engine active",
|
||||
"engine-mode-label": "Engine Mode",
|
||||
"engine-mode-help": "AI: Gemini-based AI prediction. Frequency: Database-driven statistical analysis."
|
||||
"engine-mode-help": "AI: Gemini-based AI prediction. Frequency: Database-driven statistical analysis.",
|
||||
"all-markets-scanned": "All markets will be scanned"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profile",
|
||||
@@ -519,7 +565,14 @@
|
||||
"leagues": "Leagues",
|
||||
"countries-leagues": "Countries & Leagues",
|
||||
"search-at-least-2": "Type at least 2 characters to search teams.",
|
||||
"all": "All"
|
||||
"all": "All",
|
||||
"back-to-leagues": "Back to Leagues",
|
||||
"league-not-found": "League Not Found",
|
||||
"past-matches": "Past Matches",
|
||||
"not-found": "Not Found",
|
||||
"no-leagues-found": "No leagues match the selected criteria.",
|
||||
"team-not-found": "Team Not Found",
|
||||
"no-teams-found": "No team found matching \"{query}\"."
|
||||
},
|
||||
"h2h": {
|
||||
"title": "Head to Head",
|
||||
@@ -809,5 +862,71 @@
|
||||
"remaining": "remaining"
|
||||
}
|
||||
},
|
||||
"refund-policy": "Refund Policy"
|
||||
"refund-policy": "Refund Policy",
|
||||
"teams": {
|
||||
"search-placeholder": "Type a team name... (min 2 characters)",
|
||||
"search-hint": "Type the name of the team you are looking for",
|
||||
"search-example": "E.g.: Galatasaray, Barcelona, Manchester City",
|
||||
"no-results": "No results found",
|
||||
"upcoming": "Upcoming",
|
||||
"not-found": "Team not found",
|
||||
"matches-count": "Matches",
|
||||
"upcoming-matches": "Upcoming Matches",
|
||||
"past-matches": "Past Matches",
|
||||
"page-info": "Page {page}/{totalPages} • {total} matches in total",
|
||||
"no-past-matches-season": "No past matches found for this season"
|
||||
},
|
||||
"v28": {
|
||||
"avg-cards": "Avg: {avg} cards",
|
||||
"band": "Band",
|
||||
"cards-analysis": "Cards Analysis",
|
||||
"combined-over-rate": "Combined OVER Rate",
|
||||
"combined-weighting": "Weighted 60% referee + 40% teams",
|
||||
"confirmations": "Confirm",
|
||||
"engines-agree": "Engines Agree",
|
||||
"engines-disagree": "Engines Disagree",
|
||||
"ft": "FT",
|
||||
"ht": "HT",
|
||||
"htft-info": "Historical hit rates of half-time/full-time combinations within a similar odds band.",
|
||||
"htft-title": "HT/FT Combinations",
|
||||
"insufficient": "LOW DATA",
|
||||
"insufficient-data": "Insufficient data — not enough match samples yet.",
|
||||
"label-away": "FT Away",
|
||||
"label-btts_yes": "BTTS Yes",
|
||||
"label-cards_over": "Cards Over",
|
||||
"label-dc_12": "DC 12",
|
||||
"label-dc_1x": "DC 1X",
|
||||
"label-dc_x2": "DC X2",
|
||||
"label-home": "FT Home",
|
||||
"label-ht_away": "HT Away",
|
||||
"label-ht_home": "HT Home",
|
||||
"label-ht_ou05_over": "HT Over 0.5",
|
||||
"label-ht_ou15_over": "HT Over 1.5",
|
||||
"label-htft_11": "HT/FT 1/1",
|
||||
"label-htft_12": "HT/FT 1/2",
|
||||
"label-htft_1x": "HT/FT 1/X",
|
||||
"label-htft_21": "HT/FT 2/1",
|
||||
"label-htft_22": "HT/FT 2/2",
|
||||
"label-htft_2x": "HT/FT 2/X",
|
||||
"label-htft_x1": "HT/FT X/1",
|
||||
"label-htft_x2": "HT/FT X/2",
|
||||
"label-htft_xx": "HT/FT X/X",
|
||||
"label-oe_odd": "Odd",
|
||||
"label-ou15_over": "Over 1.5",
|
||||
"label-ou25_over": "Over 2.5",
|
||||
"label-ou35_over": "Over 3.5",
|
||||
"matches-count": "{count} matches",
|
||||
"odds": "Odds",
|
||||
"over-rate": "Over rate",
|
||||
"panel-info": "Statistical analysis of results that occurred at similar odds in past matches. Includes Triple Value, Cards Profile, and HT/FT combinations.",
|
||||
"panel-title": "V28 Odds Band Analysis",
|
||||
"pass": "PASS",
|
||||
"referee-profile": "Referee Profile",
|
||||
"strongest": "Strongest",
|
||||
"team-profile": "Team Profile",
|
||||
"triple-value-info": "Comparison of model probability, odds-band statistics, and market odds. A positive edge means the model sees an advantage.",
|
||||
"triple-value-title": "Value Detection (Triple Value)",
|
||||
"value": "VALUE",
|
||||
"value-signals": "{count} Value Signals"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user