// UQO Éval — laboratoire pédagogique d'évaluation immobilière export type Lang = "fr" | "en"; const dict = { fr: { tagline: "Comprendre comment une propriété est évaluée", sub: "Laboratoire pédagogique d'évaluation immobilière : 3,7 millions d'unités d'évaluation et 745 000 ventes réelles au Québec (2021-2026). Chaque estimation montre son calcul en entier — comparables, ajustements, pondérations, intervalle de confiance.", searchPlaceholder: "Entrez une adresse (ex. 861 route Elgin, Saint-Pamphile)", estimateBtn: "Analyser", manualTitle: "Pas d'adresse ? Décrivez la propriété", municipality: "Municipalité", propertyType: "Type de propriété", floorArea: "Superficie habitable (m²)", yearBuilt: "Année de construction", landArea: "Superficie du terrain (m²)", estimatedValue: "Valeur estimée", range: "Intervalle de confiance (P10-P90)", confidence: "Indice de confiance", whyTitle: "Comment cette valeur est calculée", modelPart: "Modèle hédonique (LightGBM, 690 000 ventes QC)", compsPart: "Comparables ajustés (médiane pondérée)", weightModel: "poids du modèle", weightComps: "poids des comparables", compsTitle: "Comparables utilisés", adjTime: "Ajust. marché", adjArea: "Ajust. superficie", adjAge: "Ajust. âge", adjusted: "Prix ajusté", sold: "Vendu", distance: "Distance", weight: "Poids", history: "Valeur estimée par année", assessed: "Évaluation municipale (rôle 2026)", disclaimer: "Plateforme à vocation pédagogique, universitaire et expérimentale — cette estimation statistique ne constitue pas une évaluation immobilière professionnelle certifiée (OEAQ).", unifamilial: "Unifamiliale", plex: "Plex (2-5 logements)", condo_ou_multi: "Condo / multirésidentiel", chalet: "Chalet", maison_mobile: "Maison mobile", terrain: "Terrain", autre: "Autre", notFound: "Adresse introuvable", dataNote: "Données : rôles d'évaluation foncière du Québec (MAMH) et transactions publiques.", confA: "Très fiable", confB: "Fiable", confC: "Indicative", confD: "Peu fiable — marché mince", searchNoResult: "Aucun résultat — essayez « numéro rue municipalité »", loading: "Calcul en cours…", /* ---- couche pédagogique (mode étudiant) ---- */ studentMode: "Mode étudiant", seeAnalysis: "Voir l'analyse", hideAnalysis: "Masquer l'analyse", pedIntro: "Le mode étudiant révèle les mécanismes du calcul : critères de sélection des comparables, formules d'ajustement, pondérations et construction de l'indice de confiance.", pedWhyCompsTitle: "Pourquoi ces comparables ?", pedWhyComps: "Les ventes candidates sont cherchées dans un rayon adaptatif (2,2 km, élargi si le marché est mince), puis filtrées : même famille de type de propriété, superficie habitable à ±20 % (relâchée à ±40 % si moins de 6 candidates). Les 12 meilleures selon leur poids sont retenues.", pedWeightTitle: "Comment le poids de chaque comparable est calculé", pedWeight: "Le poids est le produit de trois gaussiennes : proximité (σ = 1 500 m), récence (σ = 24 mois) et similarité de superficie (σ = 25 %). Une vente proche, récente et de taille semblable pèse donc beaucoup plus lourd dans la médiane pondérée.", pedAdjTitle: "Les trois ajustements, en dollars", pedAdjTime: "Ajustement de marché : le prix de vente est ramené aux conditions actuelles via l'indice mensuel du type de propriété (une vente de 2023 est « revalorisée » au niveau du marché d'aujourd'hui).", pedAdjArea: "Ajustement de superficie : 50 % du prix au m² du comparable par m² d'écart avec la propriété analysée, plafonné à ±25 % du prix.", pedAdjAge: "Ajustement d'âge : 0,5 % du prix par année d'écart de construction, plafonné à ±10 %.", pedBlendTitle: "La combinaison finale", pedBlend: "Lorsque les deux sources existent, l'estimation finale = 65 % modèle hédonique + 35 % comparables ajustés. Le modèle capte les tendances de masse (18 variables) ; les comparables ancrent l'estimation dans le marché local récent.", pedConfTitle: "Décomposition de l'indice de confiance", pedConfBase: "Base", pedConfComps: "Nombre de comparables (+2,5 chacun, max +25)", pedConfDisp: "Faible dispersion des comparables (max +20)", pedConfModel: "Présence du modèle hédonique (+15)", pedConfWidth: "Pénalité de largeur de fourchette (au-delà de 30 %)", pedConfTotal: "Score final", pedConceptsTitle: "Trois notions à ne pas confondre", pedConceptMarket: "Valeur marchande", pedConceptMarketDef: "Le prix le plus probable sur un marché libre et concurrentiel — c'est ce que la plateforme estime.", pedConceptAsking: "Prix demandé", pedConceptAskingDef: "Le prix affiché par le vendeur — une stratégie de mise en marché, souvent au-dessus (ou parfois sous) la valeur marchande.", pedConceptSale: "Prix de transaction", pedConceptSaleDef: "Le prix réellement payé, observé dans les 745 000 ventes du corpus — la seule mesure directe du marché.", pedRoleTitle: "Et la valeur au rôle ?", pedRole: "L'évaluation municipale sert au calcul de la taxe foncière. Elle est établie 18 à 24 mois avant son entrée en vigueur : dans un marché qui monte, elle est souvent sous la valeur marchande courante.", }, en: { tagline: "Understand how a property is appraised", sub: "A teaching laboratory for real-estate valuation: 3.7M assessment units and 745k real Québec sales (2021-2026). Every estimate shows its full computation — comparables, adjustments, weights, confidence interval.", searchPlaceholder: "Enter an address (e.g. 861 route Elgin, Saint-Pamphile)", estimateBtn: "Analyze", manualTitle: "No address? Describe the property", municipality: "Municipality", propertyType: "Property type", floorArea: "Living area (m²)", yearBuilt: "Year built", landArea: "Lot area (m²)", estimatedValue: "Estimated value", range: "Confidence interval (P10-P90)", confidence: "Confidence index", whyTitle: "How this value is computed", modelPart: "Hedonic model (LightGBM, 690k QC sales)", compsPart: "Adjusted comparables (weighted median)", weightModel: "model weight", weightComps: "comparables weight", compsTitle: "Comparables used", adjTime: "Market adj.", adjArea: "Area adj.", adjAge: "Age adj.", adjusted: "Adjusted price", sold: "Sold", distance: "Distance", weight: "Weight", history: "Estimated value by year", assessed: "Municipal assessment (2026 roll)", disclaimer: "Educational, academic and experimental platform — this statistical estimate is not a certified professional appraisal (OEAQ).", unifamilial: "Single-family", plex: "Plex (2-5 units)", condo_ou_multi: "Condo / multi-residential", chalet: "Cottage", maison_mobile: "Mobile home", terrain: "Land", autre: "Other", notFound: "Address not found", dataNote: "Data: Québec property assessment rolls (MAMH) and public transactions.", confA: "Very reliable", confB: "Reliable", confC: "Indicative", confD: "Low reliability — thin market", searchNoResult: "No result — try “number street municipality”", loading: "Computing…", /* ---- pedagogical layer (student mode) ---- */ studentMode: "Student mode", seeAnalysis: "See the analysis", hideAnalysis: "Hide the analysis", pedIntro: "Student mode reveals the mechanics of the computation: comparable selection criteria, adjustment formulas, weights, and how the confidence index is built.", pedWhyCompsTitle: "Why these comparables?", pedWhyComps: "Candidate sales are fetched in an adaptive radius (2.2 km, widened in thin markets), then filtered: same property-type family, living area within ±20% (relaxed to ±40% below 6 candidates). The best 12 by weight are kept.", pedWeightTitle: "How each comparable's weight is computed", pedWeight: "The weight is the product of three Gaussians: proximity (σ = 1,500 m), recency (σ = 24 months) and area similarity (σ = 25%). A nearby, recent, similarly sized sale therefore weighs much more in the weighted median.", pedAdjTitle: "The three adjustments, in dollars", pedAdjTime: "Market adjustment: the sale price is brought to current conditions via the property type's monthly index (a 2023 sale is 're-priced' at today's market level).", pedAdjArea: "Area adjustment: 50% of the comparable's $/m² per m² of difference with the subject, capped at ±25% of the price.", pedAdjAge: "Age adjustment: 0.5% of the price per year of construction difference, capped at ±10%.", pedBlendTitle: "The final blend", pedBlend: "When both sources exist, the final estimate = 65% hedonic model + 35% adjusted comparables. The model captures mass trends (18 variables); the comparables anchor the estimate in the recent local market.", pedConfTitle: "Confidence index breakdown", pedConfBase: "Base", pedConfComps: "Number of comparables (+2.5 each, max +25)", pedConfDisp: "Low comparable dispersion (max +20)", pedConfModel: "Hedonic model available (+15)", pedConfWidth: "Range-width penalty (beyond 30%)", pedConfTotal: "Final score", pedConceptsTitle: "Three notions not to confuse", pedConceptMarket: "Market value", pedConceptMarketDef: "The most probable price on an open, competitive market — this is what the platform estimates.", pedConceptAsking: "Asking price", pedConceptAskingDef: "The price posted by the seller — a marketing strategy, often above (sometimes below) market value.", pedConceptSale: "Transaction price", pedConceptSaleDef: "The price actually paid, observed in the 745k sales of the corpus — the only direct measure of the market.", pedRoleTitle: "What about the assessed value?", pedRole: "The municipal assessment is used to compute property tax. It is set 18-24 months before taking effect: in a rising market, it often sits below current market value.", }, } as const; export type TKey = keyof (typeof dict)["fr"]; export function t(lang: Lang, key: TKey): string { return dict[lang][key] ?? dict.fr[key]; }