[제품종류] IEC1000Lite
[개발환경] Visual Studio 2008 C#
=============== 질 문 ===============메뉴를 한/영 변환하고 싶은데, localizable = true 해도 동작 안하는거 같습니다.
localizable (language) 지원 하나요?
안된다면, 다른 대안은 뭔가요?
=============== 답 변 ===============
안녕하세요.
말씀하신 localizable 기능은 지원하고 있지 않은 기능입니다.
프로그램에서 언어를 변경하여 출력하고 싶으신 경우에는 아래에 작성되어 있는 방법과 첨부되어 있는 예제 프로그램을 함께
참고하시면 복잡하게 코드를 구성하지 않고 다국어 사용을 구성하실 수 있습니다.
1. 언어 Resource 만들기
- 프로젝트 파일에서 Add - New Folder를 눌러 Language 폴더를 생성한 뒤
- 해당 폴더안에 사용할 언어에 대한 Resource 파일을 생성합니다. (Resource_Ko, Resource_EN 등)
- 생성한 Resource 파일에서 Name과 Value 값을 원하는 언어에 맞게 설정하고 저장해줍니다.
(Ex)
한글 : Name [Form1_SmartLabel1], Value [안녕하세요.]
영문 : Name [Form1_SmartLabel1], Value [Hello.]
2. 예시 코드를 참고하여 다국어 변경 구성하기
public partial class Form1 : Form
{
private void smartRadioButton1_EU_Click(object sender, EventArgs e)
{
// 생성되어 있는 각국의 언어 리소스 중 어떤 리소스를 사용할지에 대해서 (영어) 선택합니다.
SmartStringResource.SelectResource(Change_Language.Language.Resource_EU.ResourceManager);
// 리소스 파일이 선택되었다면 선택한 언어로 UI Text가 출력될 수 있도록 UI를 업데이트합니다.
UILanUpdate();
}
private void smartRadioButton2_Ko_Click(object sender, EventArgs e)
{
// 생성되어 있는 각국의 언어 리소스 중 어떤 리소스를 사용할지에 대해서 (한글) 선택합니다.
SmartStringResource.SelectResource(Change_Language.Language.Resource_Ko.ResourceManager);
// 리소스 파일이 선택되었다면 선택한 언어로 UI Text가 출력될 수 있도록 UI를 업데이트합니다.
UILanUpdate();
}
private void UILanUpdate()
{
// Resource에 설정되어 있는 “Form1_SmartLabel1”이라는 Name값을 가진 리소스의 Value값을 가져옵니다.
smartLabel1.Text = SmartStringResource.GetString("Form1_SmartLabel1");
}
}
// 다국어 사용을 위한 리소스 언어 변환 클래스
public class SmartStringResource
{
private static System.Resources.ResourceManager g_SelectResourceManager;
public static void SelectResource(System.Resources.ResourceManager selResource)
{
// 생성한 언어 리소스에 대한 접근을 위해 선택한 리소스에 대한 ResourceManager를 등록
g_SelectResourceManager = selResource;
}
public static string GetString(string strName)
{
// 선택한 리소스 중 strName값으로 설정되어 있는 Name의 Value를 가져오기
return g_SelectResourceManager.GetString(strName);
}
}