2013-04-17 2 views
0

저는 현재 영어를 지원하는 플렉스 어플리케이션을 사용하고 있습니다. 이제는 다른 언어로 번역해야합니다. 예를 들어 스타일에 대한 매개 변수를 지원해야합니다. 예를 들어, 일부 버튼은 더 넓어야하고 일부 글꼴 크기를 변경해야합니다. 처음에는다른 언어의 스키닝

는 그가

내 질문/엑셀 언어를 지원하는 시스템 권장 방법은 무엇인가 (I 때문에 구성 요소에 부착 된 스킨 파일의 추측) 무시, 런타임에 CSS 파일을 추가 tryed 스타일이 적용된 플렉스 응용 프로그램 (CSS 또는 스킨)을 사용하고 스키닝을 어떻게 처리합니까?

감사합니다.

+0

http://www.w3.org/International/questions/qa-css-lang – cimmanon

+0

@cimmanon 나는 이것이 Flex의 CSS 방언에서 지원된다는 것을 진지하게 생각합니다. – RIAstar

+2

당신이''Button.en_US {skinClass : ClassReference ("skins.en_US.ButtonSkin")}'같은 것을 할 수 있어야한다고 생각합니다. 선택된 로케일을 styleName으로 사용합니다. '). – RIAstar

답변

0

한 가지 방법

에 지원 엑셀 언어/스타일 플렉스 응용 프로그램

수동입니다 - 언어 당 하나 개의 플렉스 응용 프로그램 프로젝트, 적절한 스타일과 리소스 파일을 포함하는 각이있다. 공통 코드를 각 응용 프로그램이 종속되어있는 라이브러리 프로젝트로 옮길 수는 있지만이 언어는> 3 개 이상의 언어로 확장되지 않습니다.

더 복잡하지만 더 복잡한 것은 런타임에 언어 ResourceBundle과 특정 언어의 CSS 파일을로드하는 응용 프로그램을 하나만 가지는 것입니다.

먼저 응용 프로그램이 표시 할 언어를 "알아야"합니다. 아마도 사용자를 인증하고 서버에서 로케일을 학습 한 다음 해당 로켈에 대한 ResourceBundle을로드 할 수 있습니다.

두 번째 로딩 언어에 맞게 로캘 별 CSS를로드합니다. 스타일 시트를 "메인"(응용 프로그램으로 컴파일, 모든 스타일이 변경되지 않음) 및 "로케일"(언어에 따라 변경되는 스타일 만 포함)로 나눠서 제안하십시오.

는 가능한 한 빨리 응용 프로그램의 마법이 일어나는) cssLoadCompleteHandler에서

var cssLoader:URLLoader = new URLLoader(); 
var req:URLRequest = new URLRequest("path_to_server_side_css_file"); 
cssLoader.addEventListener(Event.COMPLETE, cssLoadCompleteHandler); 
cssLoader.addEventListener(IOErrorEvent.IO_ERROR, someErrorHandler); 
cssLoader.load(req); 

(같은 무언가를, 과정을 시작합니다 (서버 URL, 예를 들어) 언어 .css 파일을로드합니다. 당신은 의견처럼 구문 분석을 여행 할 수 아무것도 제거하려면, 빈 줄, 어쩌면 네임 스페이스. 그리고 쓸 수있는 가장 재미 코드 결코없는, 기본적으로 당신은 문자열 여기에 해킹하는 등, 선택 각 스타일 추출 파일을 반복 :이 코드의 비 사소한 블록 /, 당신은 깨끗한, 대부분의 훈련을 할 것입니다 CSS 파일을 작동시켜야합니다. 그 점을 제외하고, 그것의 복잡성에 대한 HTML을 구문 분석하려고하는 희망 당신은 CSS 입력의 품질을 제어 할 수 없습니다 달리. 어쨌든

을 ... (당신은 날 믿어,이에 대한 몇 가지 테스트를 원하는거야) 당신은 예를 들어, 각각의 스타일을 가지고 한 번 .foo {} 또는 #bar {} 등을 입력 한 다음 전화 번호

FlexGlobals.topLevelApplication.styleManager.setStyleDeclaration(...) ; 

으로 차례로 전화하십시오. 마지막으로 스타일에 구운 또는 동적으로로드 스타일에서 중,

FlexGlobals.topLevelApplication.styleManager.styleDeclarationsChanged(); 

지금 당신이 필요로하는 스타일을 얻으려면 피부 수업 (styleManager.getStyleDeclaration("")를 통해) 스타일을 사용할 수 있습니다 호출합니다.

조금 도움이 되길 바랍니다. 그렇게 할 수는 있지만, 구현하는 것은 쉽지 않습니다. 행운을 빕니다.