프로젝트 내 생성한 StringResource 또는 원격에 있는 데이터에 접근해서 애플리케이션 내에서 사용할 언어별 문자열을 가져와 적용할 수 있습니다.
StringResource
StringResource는 Key와 언어 칼럼으로 구성된 데이터입니다. 화면 내에서 Key를 지정하면 Key와 언어에 해당하는 문자열을 가져와서 적용할 수 있습니다.
StringResource 새로 만들기
Resource Explorer 탭 내에 StringResource 항목을 선택하고 새로운 StringResource 항목을 만들 수 있습니다.
항목 | 설명 | |
|---|---|---|
1 | Name, Location | StringResource는 프로젝트 내 1개만 만들 수 있습니다. 이름과 파일 생성 경로는 기본값으로 설정되며 수정할 수 없습니다. |
2 | Web URL | 원격 리소스에서 데이터를 받아 StringResource를 생성할지 여부를 선택합니다. 항목 선택 시에는 리소스 파일을 받을 수 있는 URL을 설정해주어야 합니다. 데이터 형식은 원격 StringResource 데이터 형식을 참고하세요. |
3 | System Locale | 시스템 로캘에 설정한 언어 칼럼이 추가로 생성됩니다. 예를 들어 시스템 로캘이 일본어로 설정된 경우 일본어(ja) 언어 칼럼이 추가로 생성됩니다. |
4 | Note | StringResource 생성 시 기본 설정되는 항목입니다. - 영어(en) 언어 칼럼은 기본으로 생성됩니다. - Environment의 usestringresource 속성값을 true로 변경합니다. |
StringResource가 만들어지면 편집창이 열립니다. 시스템 로캘 추가 설정을 한 경우에는 기본(en) 칼럼과 시스템 로캘(ja) 칼럼이 추가된 상태를 확인할 수 있습니다.
Web URL에서 리소스를 받아 StringResource를 만든 경우에는 리소스에 설정한 칼럼과 데이터가 추가된 상태를 확인할 수 있습니다.
이전 버전 프로젝트의 SDK 버전을 변경한 경우 TypeDefinition에 StringResource 정보가 없는 상태입니다.
이런 경우에는 메뉴[File > New > StringResource] 항목을 선택해 StringResource 정보를 생성해주세요.
Locale(언어 칼럼) 추가, 삭제하기
툴바에서 [Add Locale] 아이콘을 클릭하면 추가할 언어를 선택하는 창이 표시됩니다. 언어를 선택하고 [OK] 버튼을 클릭하면 선택한 언어 칼럼이 추가됩니다.
더 이상 사용하지 않는 언어 칼럼은 삭제할 수 있습니다. 툴바에서 [Delete Locale] 아이콘을 클릭하면 현재 설정된 언어 칼럼 목록이 표시되고 삭제할 언어를 선택할 수 있습니다. 영어(en)는 기본값이기 때문에 삭제할 수 없습니다.
데이터 추가, 삭제하기
툴바에서 [Add Key] 아이콘을 클릭하면 빈 행이 추가됩니다. 추가된 행에서 Key 값을 수정하고 각 언어 칼럼에 적절한 값을 입력합니다.
데이터 삭제 시에는 삭제할 Key 항목을 선택하고 툴바에서 [Delete Key] 아이콘을 클릭합니다.
데이터 소스에서 수정하기
StringResource 데이터는 JSON 형식으로 저장됩니다. Source 탭을 선택하면 생성한 데이터를 확인할 수 있습니다.
외부 StringResource 데이터로 덮어쓰기
데이터 덮어쓰기 선택 시에는 기존 데이터를 모두 삭제하고 새로운 데이터로 덮어씁니다.
Import (overwrite)
외부에서 StringResource를 가져오거나 StringResource를 생성한 후 다른 데이터로 덮어쓰고자 할 때는 Resource Explorer에서 StringResource 항목을 선택하고 컨텍스트 메뉴에서 [Import (overwrite)]를 선택합니다.
리소스 파일은 원격에 있는 파일이나 내려받은 파일 중에서 선택할 수 있습니다.
항목 | 설명 | |
|---|---|---|
1 | Web URL | 리소스 파일이 위치한 URL을 설정합니다. |
2 | File | 리소스 파일을 선택합니다. |
pull
원격 리소스 파일로 StringResource 파일을 만들거나 Import (overwrite) 시 Web URL을 지정한 경우에는 [pull] 메뉴를 선택해 데이터를 덮어쓸 수 있습니다.
Resource Explorer에서 생성된 stringresource.xstring 파일 항목을 선택하고 컨텍스트 메뉴에서 [pull]을 선택합니다.
기존에 입력한 URL 정보를 사용하기 때문에 리소스 파일 URL은 지정하지 않습니다.
다국어 적용하기
만들어진 StringResource 데이터를 컴포넌트 속성값으로 반영하는 방법을 살펴봅니다.
StringResource 창에서 선택한 Key 값 컴포넌트에 반영하기
메뉴 [View > StringResource] 항목을 선택하면 StringResource 창이 표시됩니다. 적용할 Key 항목을 선택하고 컴포넌트 위로 드래그 앤 드롭하면 선택한 Key에 해당하는 문자열이 컴포넌트의 기본 다국어 속성값으로 설정됩니다.
Button 컴포넌트의 경우 기본 다국어 속성은 text입니다. StringResource 창에서 Key 값을 드래그 앤 드롭했을 때 text 속성값에 적용이 됩니다.
화면에 적용할 언어 변경하기
StringResource 창 오른쪽 상단에 있는 버튼을 클릭하면 설정할 수 있는 언어 목록이 표시됩니다.
화면에 적용할 언어를 선택하면 StringResource 창뿐 아니라 화면에 적용된 속성값도 변경되어 표시됩니다.
속성창에서 Key 값 컴포넌트에 반영하기
컴포넌트 선택 후 속성창 툴바에서 [StringResource] 항목을 선택하면 다국어를 적용할 수 있는 속성 목록이 표시됩니다. 컴포넌트 속성 중 텍스트를 설정할 수 있는 속성들이 표시됩니다.
속성창 오른쪽에 버튼을 클릭하면 StringResource에 추가한 Key 목록이 표시됩니다. Key 값을 선택하면 선택한 값이 컴포넌트의 속성값으로 반영됩니다.
설정한 속성값이 없는 경우에는 Key 값을 가져오도록 설정되고 설정한 속성값이 있는 경우에는 Key 값을 확인하고 Key 값에 해당하는 값이 없는 경우에는 기존 속성값을 표시하도록 설정합니다.
TEXT 함수
컴포넌트 속성값에 다국어 적용 시 TEXT 함수로 StringResource 값을 적용합니다. TEXT 함수는 아래와 같이 2가지 형태로 적용됩니다.
TEXT([key value])Key 값에 해당하는 데이터를 표시합니다.
Key 값에 해당하는 데이터가 없는 경우에는 Key 값을 표시합니다.
TEXT([key value], [alter value])Key 값에 해당하는 데이터를 표시합니다.
Key 값에 해당하는 데이터가 없는 경우(Undefined)에는 alter value로 설정한 값을 표시합니다.
StringResource에 없는 Key 값을 설정한 경우 alter value로 설정한 값을 표시합니다.
속성값이 설정된 상태에서 Key 값을 적용하는 경우에는 기존 속성값이 alter value로 설정됩니다.
아래와 같은 경우 "btn_0001"에 해당하는 언어 칼럼 값이 없기 때문에 "TEST"라는 문자열이 표시됩니다. 칼럼 값이 없는 경우에는 [Undefined]로 표시됩니다.
스크립트로 Key 값 가져오기
getStringResourceValue 메서드
StringResource에 설정한 값을 가져오는 메서드입니다.
예를 들어 Button 컴포넌트의 text 속성값은 아래와 같이 설정할 수 있습니다.
this.Button00.text = nexacro.getStringResourceValue("btn_0001"); this.Static00.text = nexacro.getStringResourceValue("msg_0001") +" 24.0.0.100 " +nexacro.getStringResourceValue("msg_0002");
원격에 있는 StringResource 데이터 가져오기
원격 StringResource 데이터 형식
원격 리소스를 사용해 새로운 StringResource를 생성하거나 Environment.stringresourceserviceurl 속성, nexacro.loadStringResource 메서드 사용 시 필요한 데이터 형식입니다.
반환되는 데이터 형식은 아래와 같은 형식을 맞추어주어야 합니다.
{
"[Locale Code_1]": {
"[Key_1]" : "[Value_1]",
"[Key_2]" : "[Value_2]"
},
"[Locale Code_2]": {
"[Key_1]" : "[Value_1]",
"[Key_2]" : "[Value_2]"
}
}{
"en": {
"btn_0001" : "Example",
"btn_0002" : "Source",
"btn_0003" : "Script",
"msg_0001" : "The example application was tested on the Nexaro N",
"msg_0002" : "version."
},
"de": {
"btn_0001" : "Beispiel",
"btn_0002" : "Quelle",
"btn_0003" : "Skript",
"msg_0001" : "Die Beispielanwendung wurde auf dem Nexaro N getestet",
"msg_0002" : "version."
}
}키에 대한 값을 지정하지 않을 경우에는 null 값으로 설정합니다.
{
"en": {
"btn_0001" : "Example",
"btn_0002" : "Source",
"btn_0003" : "Script",
"msg_0001" : "The example application was tested on the Nexaro N",
"msg_0002" : "version."
},
"de": {
"btn_0001" : "Beispiel",
"btn_0002" : "Quelle",
"btn_0003" : "Skript",
"msg_0001" : "Die Beispielanwendung wurde auf dem Nexaro N getestet",
"msg_0002" : "version."
},
"ko" : {
"btn_0001" : null,
"btn_0002" : null,
"btn_0003" : null,
"msg_0001" : null,
"msg_0002" : null
}
}다국어 적용 기준
언어
다음과 같은 우선순위에 따라 적용됩니다.
Environment locale 속성
사용자 운영체제 로캘 정보
적용 대상 언어 칼럼이 StringResource에 없는 경우에는 영어(en) 기준으로 적용됩니다.
StringResource 데이터
다음과 같은 우선순위에 따라 적용됩니다.
loadStringResource 메서드
usestringresource 속성값이 false인 경우: stringresourceserviceurl 속성
usestringresource 속성값이 true인 경우: StringResource