docs(dnn): #683 content-language enablement design (7 cultures + routing + switcher) - #693
Conversation
…ing + switcher) Design sketch (no prod execution) for step 4 of the #669 DNN i18n portage plan. Triggered by ai-01 dispatch sde6s0 (tertiary). jsboige-owned, parallel/non-blocked. Covers the 3 DNN-config layers to serve 8 cultures: - DNN content languages: enable 7 cultures (en/ru/pt/es/ar/fa/zh), FR canonical. - URL routing: path-based vs query-string (decision = jsboige, current state both broken: /en-US/ 404, ?language= ignored, <html lang> stuck fr-FR). - Language switcher: populate the <div class="language"> shell shipped by #490 (currently unpopulated). - <html lang>/<dir> reflection (RTL for ar/fa; #685 visual QA entry condition). Key insight: 2sxc loc() cascade (FallacyExplorer post-#490, RulesExplorer post-#674) already reads CmsContext.Culture.CurrentCode. #683 is purely the upstream DNN-config layer that makes CmsContext.Culture return the right value. Path A (lang-suffixed fields + loc()) does NOT need 2sxc EAV dimensioning. Design only: no prod write, no admin change, no web.config mutation. Decision points surfaced for jsboige (routing mode, culture codes, switcher UX, timing). Co-Authored-By: Claude-Code <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw] — LGTM (design sketch, key insight sound, 0 prod write)
Vérification conceptuelle : le key insight du PR est correct — la cascade loc() 2sxc (FallacyExplorer post-#490, RulesExplorer post-#674 que j'ai reviewé firsthand) lit déjà CmsContext.Culture.CurrentCode. Donc #683 = purement la couche upstream DNN-config (enable 7 cultures + routing + switcher + <html lang>/dir RTL) qui fait que CmsContext.Culture retourne la bonne valeur — la view layer pick-up sans changement supplémentaire. Path A (lang-suffixed fields + loc(), #682) n'a PAS besoin de 2sxc EAV dimensioning → enable DNN cultures suffit. Raisonnement architecturally sound.
Scope respecté : DESIGN ONLY, no prod write / no admin change / no web.config mutation. 3 layers DNN-config + decision points surfaced pour jsboige (routing path vs query-string, culture codes exacts en-US/en-GB/pt-PT/pt-BR/zh-CN, switcher UX, timing sandbox IIS :8090). Staging sandbox parallel à #681 export = prudent.
Cross-refs cohérents : #683/#458/#669/#490/#674/#681/#682/#685/#134. Relie correctement le portage plan #669 étape 4. Relates #685 visual-QA entry condition (RTL ar/fa) = bon sequencing.
Docs-only (+200/-0, 1 fichier design), 0 impact test/build. Décision merge Emerjesse.
What
Design sketch (no prod execution) for #683 — DNN content-language enablement (step 4 of the #669 portage plan). Dispatch
sde6s0(ai-01, tertiary). jsboige-owned, parallel/non-blocked.New doc:
docs/dnn-localization/683-content-language-enablement-design.md(+200 lines, docs-only).Scope
The 3 DNN-config layers required to serve 8 cultures:
/en-US/) vs query-string (?language=). Today both broken (/en-US/404,?language=ignored,<html lang>stuckfr-FR).<div class="language">shell shipped by feat(dnn-i18n): #457 translate DNN UI strings FR -> 7 langs via gpt-5.5 #490 (currently unpopulated).<html lang>/dirreflection — RTL for ar/fa; this is the [DNN i18n portage · 6/6] Visual validation per language — RTL/CJK/Cyrillic (ai-01) #685 visual QA entry condition.Key insight
The 2sxc
loc()cascade (FallacyExplorer post-#490, RulesExplorer post-#674) already readsCmsContext.Culture.CurrentCode. #683 is purely the upstream DNN-config layer that makesCmsContext.Culturereturn the right value — the view layer picks it up with no further change. Path A (lang-suffixed fields +loc(), #682) does NOT need 2sxc EAV dimensioning, so enabling DNN cultures is sufficient.Decision points surfaced for jsboige
en-USvsen-GB,pt-PTvspt-BR,zh-CN).Design only — no prod write, no admin change, no web.config mutation. Docs-only, no test/build impact.
Relates: #683, #458, #669, #490, #674, #681, #682, #685, #134.