나는 만족스럽고 다루기 쉬운 해결책이없는 것 같습니다. Silverlight 및 국제화 - 제작에있어서의 수렁입니다.Silverlight - 국제화를위한 매개 변수화 된 가치
번역 된 문자열이 들어있는 리소스 파일 집합이 있습니다.
단순한 경우 언어 리소스 등을 선언하고 강력한 형식의 리소스 내에서 값의 콘텐츠/텍스트를 바인딩 할 수 있습니다. 그게 전부예요.
덜 간단한 경우는 문자열에 매개 변수가있을 수 있으므로 문자열 표시에 값을 삽입해야합니다. 문자열 자체는 데이터 바인딩 일 수 있습니다.
더 복잡한 시나리오는 여러 매개 변수가있는 문자열입니다.
VM이이 기능을 제공해야한다고 주장 할 수는 있지만 개발자가 UX 디자이너와 개발자 사이의 구분을 깨뜨리고 개발자가 모든 문자열을 지원하기 위해 VM에서 속성/메소드를 구현해야하므로 불만 스럽습니다. UI가 필요합니다.
예를 들어 디자이너는 사용자 의견을 바탕으로 사용자 정의 툴팁에 추가 정보를 추가하기로 결정합니다. 툴팁은 선언적으로 수행되며 datacontext의 값과 더 나은 설명을 결합합니다. 설명은 자원에 저장되며 사용되는 값은 기존 데이터 컨텍스트 또는 요소에서 요소 바인딩으로 제공됩니다.
VM을 통해 모든 문자열을 실행해야한다면 VM을 변경해야합니다. 마찬가지로 매개 변수의 소스가 다른 요소의 소스 일 경우 VM은 반드시 형식화 된 문자열을 제공 할 위치에 있지 않습니다.
사람들이이 문제에 어떻게 접근 했습니까? 내가 완벽하게 대답 할 수있는 것보다
A.
그 해결책은 원래의 문제 인 모든 것을 VM에 되돌려 놓고 피하려고합니다. VM이보기에 의해 소비 될 것이라는 점을 알아야합니다. VM에서 나오는 VM을 소비하는 모든보기의 문자열은 작동하지 않으며, VM에서 가져 오지 않은 요소 바인딩에 대한 요소는 없습니다. 사용할 수 있습니다. 예 : "현재 값은 {0}"이고 텍스트 블록은보기의 슬라이더에서 오는 자리 표시 자입니다. VM은 영속적이지 않은 순수한 UX 조각이기 때문에 슬라이더에 대한 지식이 없을 수도 있습니다. (현재 줌 레벨을 가정 해 봅시다.) – Andrew
해결책을 시도했지만 ResourceDictionary가 내에 기본으로 설정되어 있습니다 스타일 시트. 그 때문에 "ResourceDictionary"유형이 ResourceDictionary 안에 있으며 키가 없습니다 "라는 오류가 발생합니다." 당신이 그 문제를 해결하기 위해 무엇을 할 수 있는지 아십니까? 제가 열쇠를 꼈을 때 나는 스타일을 앱 전체에 사용할 수 없기 때문입니다. http://msdn.microsoft.com/en-us/library/dd882554(VS.96).aspx –
Nordes
에 설명 된 단계를 사용하고 있습니다. 스타일을 사전으로 포함해야합니다. <에 Application.Resources이> : 나를 위해 는 절 그렇게 보이는 자원을 의미 xmlns : local = "clr-namespace : WfW.Localization.Silverlight; assembly = WfW.Localization.Silverlight" x : Key = "LocalizedStrings"/> ResourceDictionary> –
R4cOON