내가 도움이 올바른 리소스 파일 항목을 받고 필요한 문제를 겪고을 따기하지 ... 여기에 내가 큰 보고서의 일부 일련의 프로젝트가 내 시나리오ResourceManager에 올바른 RESX 파일
입니다 이 형식
플러그인에 따라 솔루션을 제공합니다. ****보고
- 참조 (폴더)
- DataAccessLayer (폴더)
- 데이터 집합 (폴더)
- DataWrappers (폴더)
현지화 (폴더)
* .cs
* 보고서의 이름은 내가을 생성하기 위하여려고하고있다
* .cs에는 MEF를 사용하여 선택할 수 있도록 내보내기 명령문이 있습니다 (관련이 있는지는 확실치 않지만 언급할만한 가치가 있다고 생각합니다). * .cs의 네임 스페이스는 CompanyName.DataShaper.Plugin. * Report입니다. 프로젝트 이름과 파일 위치로 인해 각 프로젝트의 기본 네임 스페이스를 CompanyName.DataShaper.Plugin. * Report (변경 전의 Plugin. * Report)로 변경했습니다.
문제의 .. 내부. * .cs ResourceManager를 인스턴스화하려고합니다. 즉 나는 다음과 같은 한 내 RESX 디자이너 파일 내의
_resourceManager =
new ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report",
Assembly.GetExecutingAssembly());
...
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report", typeof(*Report).Assembly);
resourceMan = temp;
}
return resourceMan;
}
자원 관리자 내 호출은 다음과 같습니다
...
string resourceString = _resourceManager.GetString(resourceKey, _currrentCultureInfo);
... 다음과 같습니다
여기서 _currentCultureInfo는 올바른 CultureInfo 개체입니다.
각 프로젝트의 내 현지화 폴더에 4 개의 다른 resx 파일이 있습니다 (**** Report.resx, **** Report.fr-ca.resx, **** Report.en-gb.resx , **** Report.de-de.resx).
자원 관리자에게 전화를 걸면 항상 .resx ...에서 항목을 가져옵니다. 다른 언어 파일은 CultureInfo 객체에 관계없이 호출로 전달됩니다. 나는 무엇을 엉망으로 만들었습니까?
-> 원래 질문에 대한 빠른 업데이트, 그러나 이것은 MEF와 관련이있는 것 같습니다. 내 수업을 예전 방식 (new * Report())으로 인스턴스화하고 지역화 호출을 만들었고 정상적으로 작동합니다.
*는 무엇인가요? 실제로 위성 어셈블리를 제작합니까? –
나는 약 20 개의 서로 다른 프로젝트가 있는데, 모두 동일한 명명 규칙을 따릅니다. * 단지 보고서 이름을 나타냅니다. 예를 들어, 그 중 하나는 TransactionReport.cs입니다. 그래서 TransactionReport.res, TransactionReport.en-gb.resx, Plugin이 있습니다.TransactionReport 등 – Chris