In past few days I have been trying to make .resx localization works client side, because I love its generated class but unfortunately the generated class keeps falling back to the neutral language and not any other localized ones even with CultureInfo override specified.
I found that the main problem is that Blazor would include only main dll which contains your main localization resx. Other languages were separated by Visual Studio to a different satellite assembly and wouldn't be sent to client side, so it only works from server where all those dll are available.
What I did is to avoid naming the resx as AAA.resx, AAA.ja.resx but instead use AAA_ja.resx so Visual Studio don't see it as localized version and put them together in the main dll and ensure client get all languages on loading the SPA web app. Then I have to make a modified version of ResourceManager that knows how to look for _ separated resource according to incoming CultureInfo. It was very hacky but somehow I could get it to work. I have summarized the steps here if anyone interested in following : gametorrahod.com/workaround-for-cl...
The dependency of Visual Studio to edit .resx file still exists, but my website wouldn't be that large for now so I could put up with the difficulties :P Still I like that .resx could pack images into a binary which reads as byte[] from the generated static class, so I could make localized images bytes instead of localized image paths.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Thank you for your comment!
Yes, that's right,
.resx
file could be generated C# class as you said.I know this feature, and I often use this feature for ASP.NET MVC server programming.
However,
.resx
editor strongly depends on Visual Studio, and.resx
solution is hard to use for static contents only HTTP server scenario, I think.Anyway, your comment very important for the readers of this article.
Thanks!
In past few days I have been trying to make
.resx
localization works client side, because I love its generated class but unfortunately the generated class keeps falling back to the neutral language and not any other localized ones even withCultureInfo
override specified.I found that the main problem is that Blazor would include only main
dll
which contains your main localizationresx
. Other languages were separated by Visual Studio to a different satellite assembly and wouldn't be sent to client side, so it only works from server where all thosedll
are available.What I did is to avoid naming the
resx
asAAA.resx
,AAA.ja.resx
but instead useAAA_ja.resx
so Visual Studio don't see it as localized version and put them together in the maindll
and ensure client get all languages on loading the SPA web app. Then I have to make a modified version ofResourceManager
that knows how to look for_
separated resource according to incomingCultureInfo
. It was very hacky but somehow I could get it to work. I have summarized the steps here if anyone interested in following : gametorrahod.com/workaround-for-cl...The dependency of Visual Studio to edit
.resx
file still exists, but my website wouldn't be that large for now so I could put up with the difficulties :P Still I like that.resx
could pack images into a binary which reads asbyte[]
from the generated static class, so I could make localized images bytes instead of localized image paths.