2009-08-27 9 views
2

다국어 애플리케이션을 만들고 리소스 파일을 사용하는 방법에 대한 질문이 있습니다. 나는 내가 한 일과 내가 최종 제품을 좋아할 것이라고 설명 할 것이다. 리소스 1을 이름> 새 항목, 선정 된 리소스 파일 -다국어 및 리소스 파일

내가 VB.Net에서이 일을하고 새 프로젝트를 생성 한 후 비주얼 스튜디오 2008

를 사용하고, 나는 추가 (프로젝트에 리소스 파일을 추가했습니다. resx).

다음 리소스 파일을 두 번 클릭하고 일부 이름과 값을 추가 할 수있었습니다. 예를 들어,

이름 - lblFirstName는, 값 - 존 이름 - - lblLastName, 값 스미스

내 양식에

, 나는이 라벨이 : 코드에서 FIRSTNAME 및 성

을, 나는

추가
FirstName.Text = My.Resources.Resource1.lblFirstName 
LastName.Text = My.Resources.Resource1.lblLastName 

이 코드를 실행하면 정상적으로 작동합니다. John과 Smith가 레이블에 표시됩니다.

내 질문에 대한 지금. 이름과 성 대신 라벨 (버튼, 메뉴 항목 등)은 실제로 다른 언어로 다른 단어였습니다. 내가하고 싶은 것은 같은 이름, 단지 다른 값을 포함 할

EnglishText.resx SpanishText.resx GermanText.resx

각 리소스 파일 같은 것을하는 것입니다. 선택한 언어에 따라 (메뉴에서) 사용자가 결정한대로 일치하는 리소스 파일을 어떻게 사용할 수 있습니까?

는 기본적으로 나는 것 원하는 것을

FirstName.Text = My.Resources.<Language Specific Resource File>.lblFirstName 

이 가능한 같은가요? 이것은 받아 들일만한 접근인가? 이 작업을 수행하는 더 좋은 방법이 있습니까?

어떤 조언이나 조언을 주시면 감사하겠습니다. 후속 질문이 있는지 또는 더 많은 정보를 제공해야하는지 자주 확인하려고 노력합니다.

답변

2

.NET 플랫폼은 현지화를 염두에두고 만들어졌습니다. 현재 문화에 기반하여 어셈블리와 리소스를 지역화하는 선천적 메커니즘이 이미 있습니다.여기에 롤 시도하기 전에 당신이 읽어야 일부 스타터 링크는 자신의 :

If LanguageChanger<change this to the way you let people change languages> = "English" Then 
Language = My.Resources.EnglishText 
else if LanguageChanger = "Spanish" Then 
Language = My.Resources.SpanishText 
else if LanguageChanger = "German" Then 
Language = My.Resources.GermanText 
End if 

당신은 할 수 :

http://msdn.microsoft.com/en-us/library/bb398937.aspx
http://msdn.microsoft.com/en-us/goglobal/bb688096.aspx

0

당신이 이런 일을 할 수있는 3 개 언어를 가지고의 말합시다 다음을 사용하십시오 :

FirstName.Text = Language.lblFirstName 

방금이 양식에서이 작업을 수행했습니다. 이 스택 오버플로

2
Imports System.Globalization 
Imports System.Resources 

Public Class Form1 
    Public rm As Resources.ResourceManager 

    Private Property CultureInfo As CultureInfo 
    Public Function getRMValue(ByVal strValue As String) 
     Dim strLanguage As String 

     If IsNothing(rm) Then 
      strLanguage = CultureInfo.CurrentCulture.ToString.ToUpper.Substring(0, 2) 
      If strLanguage = "EN" Then 
       rm = My.Resources.English.ResourceManager 
      Else 
       rm = My.Resources.Turkce.ResourceManager 
      End If 
     End If 
     getRMValue = rm.GetString(strValue) 
    End Function 
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    End Sub 
    Private Sub btnBye_Click(sender As Object, e As EventArgs) Handles btnBye.Click 
     MessageBox.Show(getRMValue("messagebox")) 

    End Sub 
End Class 

Resource screenshot

+0

에 오신 것을 환영합니다 작동하지 않을 경우, 그것은 정말 죄송 테스트하지입니다! 간단한 대답을 포함하여 간략한 설명을 포함하면 일반적으로 답을 더 잘받을 수 있습니다. – JoelC