2011-10-03 2 views
4

현재 사용자의 문화권으로 설정되지 않은 리소스 파일에서 값을 가져올 수 있습니까? 우리의 응용 프로그램은 문화 기반의 데이터 기반입니다.resx에서 수동으로 리소스 값을 검색 하시겠습니까?

문서는 프랑스어 문서이며 특정 레이블과 필드를 업데이트하고 새 데이터로 바꿀 필요가 있습니다.

자원 관리자는 기본값 .resx 대신 .resx를 사용하도록 지시 할 수 있습니까?

답변

1

리소스 파일이 지원하려는 다른 언어로 조정되는 지역화를 통해 그렇게 할 수 있습니다. here에서 가져온 다음 링크를 통해 원하는 것을 얻을 수 있습니다.

".NET Localization, Part 1: Resource Managers - 아래 확인" ". 좋은 시작을

.NET Localization, Part 2: Creating Satellite Assemblies

.NET Localization, Part 3: Localizing Text

.NET Localization, Part 4: Localizing Units은"여러 언어에 대한 리소스를 생성

2

당신이 레이블 텍스트 typeto 언어를 설정할 수 있습니다 양식 중 하나를 선택하고 최종 사용자에게 보여주고 싶은 언어를 선택하면 해당 레이블 텍스트 IE가있는 언어와 비교됩니다. if 레이블 텍스트는 프랑스어

노트에 모든 컨트롤 이름을 표시 할 수 있습니다 다음 프랑스어 : 프랑스어에서 RESX 파일을 작성하고 같은 이름 값 무언가로 프랑스어에서 수동으로 모든 라벨과 버튼 컨트롤 이름을 다시 작성 후 그에만 작동 폼이로드

private void applyResources(ComponentResourceManager resources, Control.ControlCollection controlCollection) 
    { 
    foreach (Control ctl in controlCollection) 
    { 
     resources.ApplyResources(ctl, ctl.Name); 
     applyResources(resources, ctl.Controls); 
    } 
    } 
} 
3

당신은 ResourceManager.GetString() 방법 및 있습니다 provi을 사용할 수있는 경우이 ..

Name    value 
-----------  ------------- 
lblname.text  frenchtype name 


using System; 
using System.IO; 
using System.Linq; 
using System.Data; 
using System.Text; 
using System.Diagnostics; 
using System.Windows.Forms; 
using System.Collections.Generic; 
using System.ComponentModel; 

public partial class Form1 : Form 
{ 
    public form1() 
    { 
    System.Threading.Thread.CurrentThread.CurrentUICulture = new 
System.Globalization.CultureInfo("fr-FR"); 
    getlanguagaefile(); 
    InitializeComponent(); 
    } 

// blah 
// blah 

private void getlanguagaefile() 
{ 
    if (label1.Text == "French") 
    { 
     System.Threading.Thread.CurrentThread.CurrentUICulture = new 
    System.Globalization.CultureInfo("fr-FR"); 
     ComponentResourceManager resources = new ComponentResourceManager(typeof(Wait)); 
     resources.ApplyResources(this, "$this"); 
     applyResources(resources, this.Controls); 

    } 
    } 

모든 레이블 텍스트와 버튼 텍스트에 프랑스어 언어를 표시 할 수 있습니다 원하는 문화권을 매개 변수로 사용하십시오 :

var culture = CultureInfo.CreateSpecificCulture("fr-FR"); 
var localizedString = ResourceManager.GetString("labelName", culture); 
+0

미래의 독자를 위해,이 작업을하려면 자원을 기반으로 한'ResourceManager'의 새 인스턴스를 만들어야합니다. 'ResourceManager rm = new ResourceManager (typeof (YourProject.Properties.Resources))'와 같은 것에서 새로운 인스턴스에 대해'GetString'을 호출하십시오. – TheWanderingMind

관련 문제