All Answers

0 votes

Some more info.

If I force the CultureInfo to be used by the ResourceManager GetString method inside the button click, it finds the strings properly, but still shows the MessageBox with the generic/wrong content.


			CultureInfo ci = new CultureInfo("pt-BR");
			var RS2 = new ResourceManager("Localization.Resources", this.GetType().Assembly);
			var lcCancel = RS2.GetString("$Cancel", ci);
			var lcShowMessageBox = RS2.GetString("ShowMessageBox", ci);

If I don’t mention the CultureInfo and let the ResourceManager use what it considers to be the current culture, it fails. But Application.CurrentCulture shows pt-BR inside the button click properly. So, I guess ResourceManager is getting the CultureInfo from somewhere that is not set after the trip to the server.

0 votes

Thanks Luca, here are the results:

1 – I removed the bin/pt, but as soon as I run the sample, it gets automatically created back.

2 – Added the code. the ResourceManager doesn’t seem to be able to find the strings in the pt-BR resource file. However, the Application.CurrentCulture still returns pt-BR as the current culture.

I have also tried renaming pt-BR to pt, no luck.

Then, I thought of putting a MessageBox inside the SetValues method, which runs whenever ApplicationRefresh is triggered. And it works fine from there. (!)

Right after I see it working there, once I click on the button to show the MessageBox that is coded in it, it doesn’t work anymore, and Application.CurrentCulture still returns pt-BR properly, but the strings from its resource file are not correct, apparently coming from a generic resource as if it didn’t find the pt-BR resource file.

0 votes

Try this on a dev machine:

 

1. Remove the bin/pt directory and leave only the bin/pt-BR

2. Add code in the button click that shows the message box that uses a ResourceManager to read the localized strings you added: $ok, etc. and check the name of Application.CurrentCulture.

 

I will send you a different test app to check what is loaded.

The ResourceManager class in .NET is the one loading the resources. Wisej is not doing anything other than using it to read the localized strings. It’s all part of standard .NET.

 

There may be a collision between /pt and /pt-BR.

You can also try to rename your localized assembly to be pt instead of pt-BR.

  • Luca answered Jan 2, 2021 - 5:54 pm
0 votes

Hi Luca.

There is something really weird from my side, I am sure. Just can’t think of what could be.
Yes, the DLL is deployed to the Google Cloud server, I have attached a picture.

0 votes

The warnings are normal.

I simply clicked Publish in VS and published this:

https://wisejlocalization.azurewebsites.net/

Make sure that /bin/pt-BR/Localization.resources.dll is deployed.

  • Luca answered Jan 1, 2021 - 9:50 pm
0 votes

Hey Levie.

Happy New Year!

So, I turned all Common Language Runtime Exceptions on but nothing was thrown when I changed the Localization.
Yes, I have tried on a completely different environment, you might have missed it, but I deployed it to a Google Cloud VM where you can try yourself (http://pfnwj.test.profilme.net), also had the MessageBox labels not translated.
I had a look at the Console on Chrome and noticed the warnings once I clicked on the button to show the MessageBox. I have attached a picture. However, I am not setting any theme to this test application.
Any thoughts?

0 votes

Hello Luca,

this.navBar1.SelectedItem = AAA; solved my problem. Many thanks.

Best regards,
Mathias

0 votes
In reply to: Button Image Colour

Looks like a bug when the text color is changed using the mixin together with an svg icon loaded from a remote location (the icon pack) the first time – it starts working if you click on the button. It worked in my test because I was assigning the ForeColore by code. Looks like the theme is applied first and since the svg icon from the assembly is loaded asynchronously it cannot be updated the first time.

  • Luca answered Dec 30, 2020 - 8:18 pm
1 vote

Did you try to assign the SelectedItem property?

this.navBar1.SelectedItem = AAA;

It will select the AAA item as if the user clicked on it.

Or do you need keyboard Up/Down selection? I don’t think this is implemented in the extension.

  • Luca answered Dec 30, 2020 - 8:15 pm
0 votes
0 votes

Hi Levie.

This is really strange. I might have a haunted machine on my desk. 😀
I’m on Wisej 2.2.25.0. I have attached a picture and you can see the buttons. Also, I have a different icon for the message, is it a different Theme you are using? I have also restarted my machine, just in case… I am drawing a blank here.

0 votes

Hi Levie.

Thank you!

0 votes
In reply to: Button Image Colour

Luca, have a look at the attached sample. It appears to be the colour which is defined in my theme mixing. If I set one of the standard colours, it works. However, my theme mixing colour works correctly for the standard icons.

Alex

0 votes
In reply to: Button Image Colour

Can you try in a sample app? See attached screenshot. You can also change the mono color of the icon in the designer or in code adding ?color=.

  • Luca answered Dec 29, 2020 - 6:44 pm
0 votes

The key point here is memory usage. I’ll make a test about memory growth.

Thanks Luca,

  • Serkan answered Dec 29, 2020 - 6:01 pm
0 votes

Hi Ivan,

I’ll add the option to apply autocomplete=”new-password” as an enhancement for the next build. It does seem like each browser has different requirements and “tricks” for preventing password autocompletion. Your best bet to find a solution for this issue (beyond the enhancement) is to check browser documentation and Stack Overflow.

Anyways, we’ll add the enhancement and see if that fixes your issue first!

Best,

Levie

0 votes

The 4000 user app has about over 1000 controls (in about 10 “forms” composing a large screen) and about 2-4 large datagrids open at any given time. It’s an heavy system. I don’t know exactly the usage pattern but I don’t think the 4000 are concurrent.

In general the apps we see have extremely complex screens with hundreds if not thousands of controls. See http://madewithwisej.com and the case studies pages. There are some new ones being prepared as well.

In any case, to estimate the memory usage I recommend to create about 10 sessions and get them to the average usage. Call GC.Collect(), log the total memory, add 10 more sessions doing the same (you can do it all in one browser just by creating new tabs, or put the session timeout to a high value and keep creating sessions on from a single client). Then call GC.Collect() again and log the memory differential and divide by 10.

It gives you roughly an idea of the memory growth rate. The reason to do it like that is that Wisej shares a lot of memory across all sessions so the early memory growth is irrelevant being the footprint.

Don’t worry about CPU power. All you need to do for the CPU is to set the minThreadCount to a higher number, probably 200 or 300 to avoid the thread starvation problem.

I’d guess that in your case 2 servers are plenty.

 

 

  • Luca answered Dec 29, 2020 - 3:59 pm
  • last active Dec 29, 2020 - 4:01 pm
0 votes

Hi Ivan,

I just ran the sample you provided using the latest version of Wisej and it seems to be working ok. It uses the localization file you created and placed in the root directory. I attached an image of the outcome.

What version of Wisej are you using?

Best,

Levie

0 votes

Do you mean 4000 concurrent users (using the app at the same time)? In practice, the number of screens open at the same time is more important than the number of screens in the app. I understand that the memory consumed by data sets is more important than the amount of memory consumed by screens (forms, controls, events, etc.). In this case, we can say that an application that does not open large number of screens at the same time and does not use very large data sets, 2 or 3 64GB 8 cpu processors can easily run 10000 users (or more?). If my conclusion is correct, I found the answer I was looking for.

Thank you Luca,

  • Serkan answered Dec 29, 2020 - 3:32 pm
0 votes

Depends on the application.

We have systems in production with 800+ screens and 4,000 users on 2 64Gb servers. Or 1500+ screens and 700 users on 1 server.

I don’t see any issue with 10-20 screens and unless the app creates huge data sets and keeps them in memory. In which case there are many simple ways to change it.

 

In terms of traffic and CPU usage Wisej uses far less than other systems since the packets are very small and the processing is limited to the specific event instead of rebuilding the whole page like Blazor. In terms of memory in small tests we see much less usage than Blazor.

  • Luca answered Dec 29, 2020 - 2:25 pm
Showing 4221 - 4240 of 11k results