2011-02-08 2 views
5

WPF 테스트 프로젝트 하나의 버튼이있는 단일 창을 만들었습니다. 다음 프로젝트를 언로 드하고 다음을 포함하도록 csproj를 수정했습니다 <UICulture>en-US</UICulture>. 다시 빌드 한 후 빌드 폴더에는 이제 en-US라는 하위 폴더가 있으며 WpfLocalizationTest.resources.dll이라는 파일이 포함됩니다. 지금까지는 모두 명확합니다.Locbaml은 어떻게 작동합니까?

그런 다음 Locbaml의 소스 코드를 다운로드하여 빌드했습니다. (어디서나 이진 다운로드를 찾을 수 없습니다.)

그런 다음 Locbaml.exe를 en-US 폴더에 복사 한 후 다음을 시도했습니다. 이 오류가 발생

locbaml /parse WpfLocalizationTest.resources.dll /out:test.csv 

는 '파일 또는 어셈블리 WpfLocalizationTest.resources.dll 또는 해당 종속성 중 하나를로드 할 수 없습니다. 잘못된 형식의 프로그램을로드하려고했습니다. '

obj \ x86 \ Debug 폴더에 WpfLocalizationTest.g.en-US.resources라는 파일이 있습니다. 나는 locbaml을 실행 해 보았지만 결과는 같았다.

locbaml은 어떻게 사용 되나요? MSDN은 cockamamie 샘플로 가득 차 있으며 어느 것도 작동하지 않습니다. locbaml은 Microsoft가 WPF 응용 프로그램을 현지화하려는 방법을 실제로 알고 있습니까? 아니면 직업에 적합한 도구를 찾았습니까?

답변

3

검색을 계속하면서 여기에 또 다른 링크가 Stackoverflow에서 발견되었습니다. 원래받은 컴파일 오류는 .Net4.0으로 설정되지 않은 구식 LocBaml 프로젝트와 관련이 있습니다. 이것이 DLL에서 CSV를 생성 할 수 없었고 리소스 파일을 바로 사용해야하는 이유입니다. 자세한 내용은이 링크를 따르십시오. Locbaml localization of .net wpf4 application

이 링크는 컴파일 된 .net 4 바이너리에 대한 링크를 제공하여 LocBaml을 사용하여 CSV를 생성 할 수 있습니다.

+1

randyc - .NET 4로 업데이트 된 LocBaml이 실제로 작동합니다. 그것이 링크입니다. WPF 현지화와 관련하여 MS WPF 팀이 완전히 손실되었다고 생각합니다. – Rubio

1

그냥 업데이트 오늘 아침에 내 노트를 가져 왔습니다. 바라기를 바란다면 조금 더 도움이 될 것입니다.

프로젝트가 컴파일되면 빌드가 생성 된 프로젝트 디렉토리에 LocBaml.exe 복사 : 내 경우에 내가 E에 파일 복사 : \ localiztion_sample \ localiztion_sample \ OBJ \ 86 \ 해제를

이것은 빌드가 bin 디렉토리 (telerik 컨트롤 및 기타 어셈블리)의 모든 DLL 파일을 포함하지 않았다는 점에서 까다로운 부분입니다. 결과로 bin \ release \로 가서 모든 DLL과 리소스 파일을 거기에서 obj \ x86 \ Release 디렉토리로 복사했습니다. 덮어 쓸 것인지 묻는 파일의 경우 파일 크기 나 날짜에 차이가 있는지 확인하고 그렇지 않은 경우이 개체의 복사본을 건너 뜁니다.

참고 : CSV를 생성하려면 bin 디렉토리에서 dll 및 리소스 파일을 복사하여 obj 디렉토리에 저장해야했습니다. 이 단계를 생략하면 CSV 파일이 생성되지만 데이터로 채워지지 않습니다.

필요한 파일을 디렉토리에 복사하면 릴리스 디렉토리에있는 .resource 파일을 구문 분석합니다. \이 localiztion_sample \ localiztion_sample \ OBJ \ 86 \

을 해제하고 파일 이름라는 제목 :

E : 내 프로젝트에서

은 자원 파일이 위치했다 localiztion_sample.g.en-US.resources을

참고 : 이것은 Microsoft 웹 사이트의 지침과 다릅니다. Microsoft는 en-US 디렉토리에있는 dll 파일에서 LocBaml 도구를 실행해야한다고 말합니다. 그러나 여러 번 시도하고 연구 한 결과 실제로 이것이 32 비트와 64 비트 빌드 간의 호환성 문제를 야기 시켰을뿐만 아니라 작동하지 않는 것으로 나타났습니다.

온라인 포럼뿐 아니라 wpf4를 통해 읽기를하면서 * .gen.en-Us.resources 파일을 가리 키도록 제안합니다.* = 프로젝트 이름과 gen.en - 우리는 당신이 다음 입력해야합니다 VS 명령 untility 내

을 선택한 개발 언어를 반영하는 다음

LocBaml/구문 분석 filename.resources/아웃 : 샘플 엔 .CSV

참고 :이 파일이있는 루트 디렉토리에 LocBaml 파일을 복사 한 것을하고 시스템 관리자 권한으로 명령 프롬프트를 실행하는 것으로 가정합니다. 사용의 용이성을 위해 내 샘플 프로젝트의 VS 프로젝트 디렉토리

에 명령 프롬프트에서 작업 디렉토리를 변경 명령은 보았다 :

* LocBaml/분석 localization_sample.g.en-US.resources 인/아웃 : 샘플 en.csv *

이 명령은 다음 내가 TEH 파일을 수정하고 DLL을 다시 생성 할 수 있었다 얻었다로 이것은까지했다 현재 프로젝트

의 정의 역할을하는 CSV 파일을 생성하지만, 응용 프로그램 내에서 문화가 바뀌지 않아서 아직이 작품을 작업하고 있습니다. 일단 내가 작동하게되면 다시 게시 할게.