[NET] Blazor detected a change in the application’s culture that is not supported with the current project

Blog มาจดๆไว้ก่อนครับ พอดีลองทำ Blazor WASM มาเป็น Utility เล็กๆ ช่วยงาน แล้วที่นี้ ดันเจอปัญหาว่าบางเครื่องทำงานได้ปกติ แต่บางเครื่องไม่ได้ เมื่อเข้า Web Developer tools จะเจอ Error เต็มๆตามนี้ครับ

blazor.webassembly.js:1 ManagedError: AggregateException_ctor_DefaultMessage (Blazor detected a change in the application's culture that is not supported with the current project configuration. To change culture dynamically during startup, set <BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData> in the application's project file.)
callEntryPoint @ blazor.webassembly.js:1
await in callEntryPoint  
qt @ blazor.webassembly.js:1
await in qt  
Yt @ blazor.webassembly.js:1
sn @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1
(anonymous) @ blazor.webassembly.js:1

สำหรับทางแก้ไข

เอาตาม Error Message มันแนะนำครับ ใน csproj เพิ่ม เพื่อที่ตอน Bundle มันจะได้ใส่ตัว icu_xx ของภาษา (พวก icudt.daticudt_CJK.dat, icudt_EFIGS.dat เป็นต้น) ลงไปให้ครับ  

<BlazorWebAssemblyLoadAllGlobalizationData>true</BlazorWebAssemblyLoadAllGlobalizationData>

ปัญหาว่าบางเครื่องทำงานได้ปกติ แต่บางเครื่องไม่ได้

จากที่ลองมา และอ่าน Doc ของ microsoft ปกติเวลา Client ยิง Request ไป มันจะมีส่วน Accept-Language header ซึ่งตัว Web Browser มันอ้งอิงตามภาษาที่แสดงผล และส่งกับ Request ด้วย

เคสที่เจอ ปัญหาตัว wasm มัน Bundle มาเฉพาะ en-US พอเจอเครื่องที่กำหนดเมนูภาษาไทยแล้วไป มันเลยส่งไปเป็น th-Th ตอน Render ก็เลยระเบิดตุ้มที่ฝั่ง Client ส่วนขา Server ไม่มี Log บอกอะไร เลยต้องมาดูในส่วน Web Developer tools ครับ ถ้าเราอยากรู้ว่าส่งอะไร ลองไปดูได้จาก Tab "Network" > Header จะมีส่วนของ

en-US,en;q=0.9

หรือ ถ้ามีภาษาไทย

th-TH,th;q=0.9,en-US;q=0.8,en;q=0.7
แต่เครื่องที่ผมเจอ th-TH,th;q=0.9

มาอธิบายสักนิดต่อ th-TH,th;q=0.9,en-US;q=0.8,en;q=0.7

  • th-TH = ภาษาไทย ประเทศไทย (priority สูงสุด)
  • th;q=0.9 = ภาษาไทย (ไม่ระบุประเทศ, priority ถัดลงมา)
  • en-US;q=0.8 = ภาษาอังกฤษ (USA, priority รองลงมา)
  • en;q=0.7 = ภาษาอังกฤษ (ทั่วไป, priority ต่ำสุด ถ้าไม่มีจะหาอันนี้ให้เจอ)

จบไปอีกปัญหานึงในวันนี้ครับ Happy Coding

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.