제 질문은 언어를 변경해야 할 때이 코드를 반복하지 않고 언어를 변경하는 방법입니다. 다음은 불가리아어 및 영어 용 버튼입니다. 코드를 반복하지 않고 추가하는 방법을 하나 더 추가해야합니다.Windows에서 언어 런타임을 변경하십시오.
private void BtnBg_Click(object sender, EventArgs e)
{
CultureInfo ci = new CultureInfo("bg-BG");
Assembly a = Assembly.Load("CoffeeShop");
ResourceManager rm = new ResourceManager("CoffeeShop.Languages.Languages", a);
BtnCapuchino.Text = rm.GetString("Cappucino", ci);
BtnCinnamon.Text = rm.GetString("Cinnamon", ci);
BtnEspresso.Text = rm.GetString("Espresso", ci);
BtnDecaffeinedCoffee.Text = rm.GetString("DecaffeinedCoffee", ci);
BtnMilk.Text = rm.GetString("Milk", ci);
BtnSugar.Text = rm.GetString("Sugar", ci);
BtnBack.Text = rm.GetString("Clear", ci);
Bulgarian.Text = rm.GetString("LanguageBulgarian", ci);
textBox1.Text = rm.GetString("Bill", ci);
CoffeeShop.ActiveForm.Text = rm.GetString("CoffeeShop", ci);
BtnBuy.Text = rm.GetString("Buy", ci);
ShowInformation(this, null);
}
private void BtnEng_Click(object sender, EventArgs e)
{
CultureInfo ci = new CultureInfo("en-US");
Assembly a = Assembly.Load("CoffeeShop");
ResourceManager rm = new ResourceManager("CoffeeShop.Languages.Lang", a);
BtnCapuchino.Text = rm.GetString("Cappucino", ci);
BtnCinnamon.Text = rm.GetString("Cinnamon", ci);
BtnEspresso.Text = rm.GetString("Espresso", ci);
BtnDecaffeinedCoffee.Text = rm.GetString("DecaffeinedCoffee", ci);
BtnMilk.Text = rm.GetString("Milk", ci);
BtnSugar.Text = rm.GetString("Sugar", ci);
BtnBack.Text = rm.GetString("Clear", ci);
Bulgarian.Text = rm.GetString("LanguageBulgarian", ci);
textBox1.Text = rm.GetString("Bill", ci);
CoffeeShop.ActiveForm.Text = rm.GetString("CoffeeShop", ci);
Bulgarian.Text = rm.GetString("LanguageBulgarian", ci);
BtnBuy.Text = rm.GetString("Buy", ci);
ShowInformation(this, null);
}
는 한 번 봐, 올바른 언어를 선택하고 올바른 라벨, 버튼이 표시됩니다 당신의 코드. 이 메소드의 유일한 차이점은'bg-BG'를 사용하고 다른 하나는'en-US'를 사용하는 첫 번째 라인에 있습니다. 그래서 여러분은 간단하게 메소드를 코드에 캡슐화 할 수 있습니다. void Localize (string culture) {CultureInfo ci = 새로운 CultureInfo (문화권); .....}'Localize ("bg-BG")를 사용하여 호출하십시오. 또는 당신이 필요로하는 다른 어떤 문화. –
또한 양식의 [localization] (https://msdn.microsoft.com/en-us/library/y99d1cd3(v=vs.100) .aspx) 기능을 사용할 수 있습니다. –
또한 디자인 타임을 지원하는 양식을 닫았다가 다시 열지 않고도 런타임시 언어를 변경하는 좋은 방법으로 [this post] (http://stackoverflow.com/a/33948879/3110834)를 살펴보십시오. 이 포스트에서 디자인 타임에 컨트롤의 텍스트를 설정할 수있는 익스텐더 컨트롤을 볼 수 있으며 런타임에는 폼을 다시 열지 않고 다른 문화권간에 전환 할 수 있습니다. –