Solved

Multi-Language C#

Posted on 2010-11-11
12
773 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
Independent Software Vendors: 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!

 

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 500 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

Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.

Question has a verified solution.

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

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
In this video, viewers will be given step by step instructions on adjusting mouse, pointer and cursor visibility in Microsoft Windows 10. The video seeks to educate those who are struggling with the new Windows 10 Graphical User Interface. Change Cu…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

626 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