RUIPropertiesLibrary 스테레오타입
Rich UI 애플리케이션에서 텍스트를 하드 코딩하지 않고 외부 파일에서 표시 가능한 텍스트를 검색하려는 경우 Rich UI 특성 라이브러리(스테레오타입 RUIPropertiesLibrary)를 설정합니다. 전체 메커니즘은 표시 가능한 텍스트에 대한 특성 파일 사용에 설명되어 있습니다. 또한 Rich UI 특성 라이브러리의 내재 함수를 사용하여 문자열의 값을 대체할 수도 있습니다.
다음은 Rich UI 특성 라이브러리의 예입니다.
Library myLibrary type RUIPropertiesLibrary {propertiesFile="myFile")
entryForInputRequired STRING;
entryForOthers STRING;
someText STRING;
end
선언(예: someText String = "Click!";)에 직접 지정된 값은 아무 영향을 미치지 않습니다. 하나의 예외를 제외하고 모든 런타임 값은 외부 파일로부터 옵니다. 파일에 특정한 항목이 없는 경우(예: 파일에 someText에 대한 항목이 없는 경우), 런타임 시 값은 변수 이름(예: "someText")과 동일한 문자열입니다.
propertiesFile 특성
propertiesFile 특성은 파일의 루트 이름을 참조합니다. 파일(또는 다중 자국어 지원이 사용 가능한 경우에는 복수의 파일)은 프로젝트의
WebContent/properties 디렉토리에 있어야 합니다. 루트 이름에 다음 세부사항을 포함시키지 마십시오.
- 경로 정보(예: "properties/myFile")
- 하이픈
- 자국어 특정 정보(예: "en_US")
- 파일 확장자(properties)
propertiesFile의 기본값은 라이브러리 이름입니다. 이 경우 "myLibrary"입니다.
함수 getMessage
모든 RUI 특성 라이브러리는 getMessage 함수를 내재적으로 포함합니다.
이를 사용하면 특성 파일 또는 사용자 코드의 문자열에서 메시지를 선택할 때 삽입을 추가할 수 있습니다.
예를 들어 특성 파일의 다음 메시지에는 두 개의 삽입이 필요합니다.
someText=Promote {0} in the {1} department
다음은 레이블에
"Promote Jeff in the Sales department"라는 문자열을 작성하는 코드 예입니다.
employeeName, departmentName String;
employeeName = "Jeff";
departmentName = "Sales";
myLabel TextLabel {text =
myLibrary.getMessage(myLibrary.someText, [employeeName, departmentName]);
대체 호출은 이전과 동일한 효과를 가지지만
특성 파일에 액세스할 수는 없습니다.
myMessage STRING = "Promote {0} in the {1} department";
myLabel TextLabel {text =
myLibrary.getMessage(myMessage, [employeeName, departmentName]);
다음은 함수 시그니처입니다.
getMessage(baseMessage STRING in, inserts STRING[] in) returns (fullMessage STRING);
- baseMessage
- RUI 특성 라이브러리의 문자열 또는 필드입니다.
- inserts
- 문자열 배열입니다. 첫 번째 요소는 플레이스홀더 {0}에 대한 삽입을 제공하고, 두 번째는 플레이스홀더 {1}에 대한 삽입을 제공합니다(이후로 계속).
- fullMessage
- 가능한 많은 플레이스홀더가 해석된 기본 메시지입니다.
삽입은 오름차순이며, 0부터 시작됩니다. 메시지의 플레이스홀더는 어느 순서로든 사용할 수 있으며 순서대로 있을 필요가 없습니다.
삽입이 번호를 기준으로 하는 플레이스홀더와 일치하지 않는 경우 삽입이 사용되지 않습니다.
플레이스홀더가 해석되지 않으면 리턴 메시지에 플레이스홀더 그대로 표시됩니다.
예를 들어 다음 경우 리턴 메시지는 "Promote Jeff in the {1} department"입니다.
employeeName STRING = "Jeff";
myMessage STRING = "Promote {0} in the {1} department";
myLabel TextLabel {text =
myLibrary.getMessage(myMessage, [employeeName]);
유효성 검증 또는 형식화 메시지를 대체하는 경우 getMessage 함수를 사용할 수 없습니다. 이러한 메시지에 삽입을 전달할 수 없습니다.