2009-09-08 8 views
1

현지화를 위해 기존 WPF 응용 프로그램을 수정하려고합니다. 내 제한 사항 중 하나는 모든 리소스 (기본 en-fallback 리소스 포함)는 위성 리소스 여야한다는 것입니다. 주 어셈블리에 내장 할 수있는 것은 없습니다.C#에서 지역화를위한 중립적 인 대체 위성 리소스를 만드는 방법은 무엇입니까?

코드 플렉스에 대한 일부 읽기를 통해 필자는 AssemblyInfo.cs 파일에서 다음과 같이 변경해야한다는 것을 알았습니다.

[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 

나는이 작업을 수행 할 때, 내가 응용 프로그램 시작에 예외가 말하는 얻을 :

지정된 문화 또는 중립 문화권에 적합한 모든 자원 를 찾을 수 없습니다. 확인 "XXX.YYY.ZZZ.g.en-US.resources" 가 올바르게 삽입 또는 컴파일 타임에 조립 "XXX.YYY.ZZZ" 에 링크, 또는 필요한 모든 위성 어셈블리가 로드 할 수 있다고했다 완전히 서명했다.

폴백 리소스 (en-US)를 주 어셈블리로 전환하면 모든 것이 다시 정상적으로 작동합니다. 내가 읽은 것으로부터 대체 리소스를 위성 리소스로 사용하려면 해당 로케일에 대한 특정 리소스가 있어야합니다 (예 : Resources.en-US.resx가 있어야 함). 나 맞아?

예외적으로 나에게 물고기처럼 보이는 것은 g (.g -en-US)입니다. 그게 뭔가를 의미합니까? g가 내 리소스 파일에 존재하지 않습니다?

정확하게 리소스를 생성하고 있습니까? 먼저 일반 Resources.resx 파일을 만들고 모든 문자열을 그 안에 넣습니다. 그런 다음 Visual Studio 내에서 복사/붙여 넣기를하고 각 특정 로캘 (ar, es-MX 등)의 이름을 바꿉니다. 그런 다음 적절한 번역을하십시오.

지금은 하나의 프로젝트 리소스 파일에만 중점을 둡니다. 어쩌면 리소스 파일 인 en-US 버전이없는 다른 프로젝트에서 중단 될 수 있습니다. ?? 그렇다면 Visual Studio에서 실제로 중단 된 내용을 더 자세히 알려주는 방법이 있습니까?

답변

1

간단히 말해서 리소스 파일에 대한 이해와 빌드 된 것이 올바른 것 같습니다.

.g는 컴파일 된 XAML 파일이며 자동으로 작성됩니다. 특별한 일이나 마법 같은 일은 여기에 없습니다.

일반적으로 폴백 리소스는 주 어셈블리에 포함되어 있습니다. 당신이하지 않는다면, 할 일인 모든 문화권을위한 위성 자원 어셈블리와 en-US 하나를 만들어야합니다.

+0

위성 폴백 방식을 이해하기 위해 새로운 WPF 응용 프로그램을 만들었습니다. "Assembly : NeutralResourcesLanguage ("en-US ", UltimateResourceFallbackLocation.Satellite)]"를 AssemblyInfo.cs에 추가했습니다. 이것은 위와 같이 나에게 주었지만, Resources.resx 파일의 en-US 버전을 만들지 않았으므로 이걸 기대하고있었습니다. 이 파일을 만들면 이제 " 'window1.xaml'리소스를 찾을 수 없습니다."오류가 발생합니다. 이것은 양식을 고려하지 않기 때문에 혼란 스럽습니다. 대체 위치를 MainAssembly로 전환 한 후에는 오류가 발생하지 않습니다. 더 이상 아이디어가 없습니까? – bsh152s

+0

잠깐, 내가 읽어야 할 것 같아. 회의 정보에 언급 된 내용에 따르면 en-US을 프로젝트 파일에 추가합니다. 그것은 중복 된 것처럼 보이지만 "리소스 window1.xaml을 찾을 수 없습니다"라는 문제가 수정되었습니다. – bsh152s

관련 문제