Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Multi-Language C#

Posted on 2010-11-11
12
Medium Priority
?
776 Views
Last Modified: 2013-12-17
Hello,

How can i create a button to multi-laguage?

I create a form in pt-BR, en-US and es-ES.
I need to when i click the button language change the form.

Thanks!
0
Comment
Question by:juliodiz
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 8
  • 4
12 Comments
 

Author Comment

by:juliodiz
ID: 34118050
So i try this one, but inside the groupbox the label doesnt change
0
 
LVL 10

Expert Comment

by:hosneylk
ID: 34119149

private void RefreshResources(Control ctrl, ComponentResourceManager res)
        {
            ctrl.SuspendLayout();
            res.ApplyResources(ctrl, ctrl.Name, CurrentLocale);
            foreach (Control control in ctrl.Controls)
                RefreshResources(control, res); // recursion
            ctrl.ResumeLayout(false);
        }

// calling
            ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));
            resources.ApplyResources(this, "$this");
            RefreshResources(this,resources);

Open in new window

0
Application Discovery Service in AWS

In the era of the cloud, customers migrating away from their existing on-premise infrastructure. This requires lots of planning, strategies, and effort to identify their existing resources and determine how best to migrate.  Datacenter migrations happen in four phases -

 

Author Comment

by:juliodiz
ID: 34120556
Thanks, but the CurrentLocale does not exist in the current context.

How i get the current locale?
0
 
LVL 10

Expert Comment

by:hosneylk
ID: 34125152
try using this instead

CultureInfo.CurrentCulture
0
 

Author Comment

by:juliodiz
ID: 34125194
No, nothing change. I click and nothing happens


private void ChangeLanguage(string lang)
        {
            foreach (Control c in this.Controls)
            {
                ComponentResourceManager resources = new ComponentResourceManager(typeof(Login));
                resources.ApplyResources(c, c.Name, new CultureInfo(lang));
            }
        }
        private void RefreshResources(Control ctrl, ComponentResourceManager res)
        {
            ctrl.SuspendLayout();
            res.ApplyResources(ctrl, ctrl.Name, CultureInfo.CurrentCulture);
            foreach (Control control in ctrl.Controls)
                RefreshResources(control, res); // recursion
            ctrl.ResumeLayout(false);
        }
        private void button5_Click(object sender, EventArgs e)
        {
            ComponentResourceManager resources = new ComponentResourceManager(typeof(Login));
            resources.ApplyResources(this, "en-US");
            RefreshResources(this, resources);
        }

Open in new window

0
 

Author Comment

by:juliodiz
ID: 34125244
This is the correct, sorry
private void RefreshResources(Control ctrl, ComponentResourceManager res)
        {
            ctrl.SuspendLayout();
            res.ApplyResources(ctrl, ctrl.Name, CultureInfo.CurrentCulture);
            foreach (Control control in ctrl.Controls)
                RefreshResources(control, res); // recursion
            ctrl.ResumeLayout(false);
        }
        private void button5_Click(object sender, EventArgs e)
        {
            ComponentResourceManager resources = new ComponentResourceManager(typeof(Login));
            resources.ApplyResources(this, "en-US");
            RefreshResources(this, resources);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            ComponentResourceManager resources = new ComponentResourceManager(typeof(Login));
            resources.ApplyResources(this, "pt-BR");
            RefreshResources(this, resources);
        }

Open in new window

0
 

Author Comment

by:juliodiz
ID: 34125252
I click and anthing happens, dont change to us-EH,

any idea?
0
 
LVL 10

Accepted Solution

by:
hosneylk earned 2000 total points
ID: 34125633
this?
private void ChangeLanguage(string lang)
        {
            ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));
            resources.ApplyResources(this, "$this");
            RefreshResources(this, resources, lang);
        }

        private void RefreshResources(Control ctrl, ComponentResourceManager res, string lang)
        {
            ctrl.SuspendLayout();
            res.ApplyResources(ctrl, ctrl.Name, new CultureInfo(lang));
            foreach (Control control in ctrl.Controls)
                RefreshResources(control, res); // recursion
            ctrl.ResumeLayout(false);
        }

        private void button5_Click(object sender, EventArgs e)
        {
            ChangeLanguage(this, "en-US");
        }

        private void button4_Click(object sender, EventArgs e)
        {
            ChangeLanguage(this, "pt-BR");
        }

Open in new window

0
 

Author Comment

by:juliodiz
ID: 34125726
Ok! Thanks again

But now error in the:

RefreshResources(control, res); = No overload for method RefreshResource
and
ChangeLanguage(this, "en-US"); = No overload for method ChangeLanguage

0
 

Author Comment

by:juliodiz
ID: 34125742
OK!

Now works!

Thank a lot! realy, thanks.

private void ChangeLanguage(string lang)
        {
            ComponentResourceManager resources = new ComponentResourceManager(typeof(Login));
            resources.ApplyResources(this, "$this");
            RefreshResources(this, resources, lang);
        }

        private void RefreshResources(Control ctrl, ComponentResourceManager res, string lang)
        {
            ctrl.SuspendLayout();
            res.ApplyResources(ctrl, ctrl.Name, new CultureInfo(lang));
            foreach (Control control in ctrl.Controls)
                RefreshResources(control, res, lang); // recursion
            ctrl.ResumeLayout(false);
        }

        private void button5_Click(object sender, EventArgs e)
        {
            ChangeLanguage("en-US");
        }

Open in new window

0
 

Author Comment

by:juliodiz
ID: 34125745
But, how i can pass this language to the next form?
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
Video by: ITPro.TV
In this episode Don builds upon the troubleshooting techniques by demonstrating how to properly monitor a vSphere deployment to detect problems before they occur. He begins the show using tools found within the vSphere suite as ends the show demonst…
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…

721 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question