AIR HTML 지역화 프레임워크를 사용하여 HTML 내용 지역화

Adobe AIR 1.1 이상

AIR 1.1 SDK에는 HTML 지역화 프레임워크가 포함되어 있습니다. AIRLocalizer.js JavaScript file 파일에서 이 프레임워크를 정의합니다. AIR SDK의 프레임워크 디렉토리에는 AIRLocalizer.js 파일이 포함되어 있습니다. 이 파일에는 여러 지역화된 버전을 지원하는 응용 프로그램을 만들 때 도움이 되는 기능을 제공하는 air.Localizer 클래스가 포함되어 있습니다.

AIR HTML 지역화 프레임워크 코드 로드

지역화 프레임워크를 사용하려면 AIRLocalizer.js 파일을 프로젝트에 복사합니다. 그런 다음 스크립트 태그를 사용하여 이 파일을 응용 프로그램의 주 HTML 파일에 포함합니다.

<script src="AIRLocalizer.js" type="text/javascript" charset="utf-8"></script>

이후 JavaScript에서는 다음과 같이 air.Localizer.localizer 객체를 호출할 수 있습니다.

<script> 
    var localizer = air.Localizer.localizer; 
</script>
air.Localizer.localizer 객체는 지역화된 리소스를 사용 및 관리하기 위한 메서드와 속성을 정의하는 단일 객체입니다. Localizer 클래스에는 다음과 같은 메서드가 포함되어 있습니다.

메서드

설명

getFile()

특정 로캘에 대해 지정된 리소스 번들의 텍스트를 가져옵니다. 특정 로캘의 리소스 가져오기 를 참조하십시오.

getLocaleChain()

로캘 체인의 언어를 반환합니다. 로캘 체인 정의 를 참조하십시오.

getResourceBundle()

번들 키 및 해당 값을 객체로 반환합니다. 특정 로캘의 리소스 가져오기 를 참조하십시오.

getString()

리소스에 대해 정의된 문자열을 가져옵니다. 특정 로캘의 리소스 가져오기 를 참조하십시오.

setBundlesDirectory()

번들 디렉토리 위치를 설정합니다. AIR HTML Localizer 설정 사용자 정의 를 참조하십시오.

setLocalAttributePrefix()

HTML DOM 요소에 사용된 localizer 특성에서 사용하는 접두어를 설정합니다. AIR HTML Localizer 설정 사용자 정의 를 참조하십시오.

setLocaleChain()

로캘 체인의 언어 순서를 설정합니다. 로캘 체인 정의 를 참조하십시오.

sortLanguagesByPreference()

운영 체제 설정의 로캘 순서를 기준으로 로캘 체인의 로캘을 정렬합니다. 로캘 체인 정의 를 참조하십시오.

update()

현재 로캘 체인의 지역화된 문자열을 사용하여 HTML DOM(또는 DOM 요소)을 업데이트합니다. 로캘 체인에 대한 자세한 내용은 로캘 체인 관리 를 참조하십시오. update() 메서드에 대한 자세한 내용은 현재 로캘을 사용하도록 DOM 요소 업데이트 를 참조하십시오.

Localizer 클래스에는 다음과 같은 정적 속성이 포함됩니다.

속성

설명

localizer

응용 프로그램의 단일 Localizer 객체에 대한 참조를 반환합니다.

ultimateFallbackLocale

응용 프로그램에서 사용자 환경 설정을 지원하지 않는 경우 사용되는 로캘입니다. 로캘 체인 정의 를 참조하십시오.

지원되는 언어 지정

응용 프로그램 설명자 파일에서 <supportedLanguages> 요소를 사용하여 응용 프로그램에서 지원되는 언어를 식별합니다. 이 요소는 iOS, Mac 전용 런타임 및 Android 응용 프로그램에서만 사용되고 다른 모든 응용 프로그램 유형에서는 무시됩니다.

<supportedLanguages> 요소를 지정하지 않을 경우 기본적으로 패키지 프로그램은 응용 프로그램 유형에 따라 다음 작업을 수행합니다.

  • iOS - AIR 런타임이 지원하는 모든 언어가 iOS App Store에서 응용 프로그램의 지원되는 언어로 나열됩니다.

  • Mac 전용 런타임 - 전용 번들과 함께 패키지화된 응용 프로그램에 지역화 정보가 없습니다.

  • Android - 응용 프로그램 번들에 AIR 런타임이 지원하는 모든 언어에 대한 리소스가 있습니다.

자세한 내용은 supportedLanguages 를 참조하십시오.

리소스 번들 정의

HTML 지역화 프레임워크는 지역화 파일에서 지역화된 버전의 문자열을 읽습니다. 지역화 파일은 텍스트 파일로 직렬화된 키 기반 값의 컬렉션입니다. 지역화 파일은 번들 이라고도 합니다.

응용 프로그램 프로젝트 디렉토리의 하위 디렉토리를 locale이라는 이름으로 만듭니다. 다른 이름을 사용할 수도 있습니다. AIR HTML Localizer 설정 사용자 정의 를 참조하십시오. 이 디렉토리에는 지역화 파일이 포함됩니다. 이 디렉토리를 번들 디렉토리 라고 합니다.

응용 프로그램에서 지원하는 각 로캘에 대해 번들 디렉토리의 하위 디렉토리를 만듭니다. 각 하위 디렉토리의 이름을 로캘 코드와 같게 지정합니다. 예를 들어 프랑스어 디렉토리는 “fr”로, 영어 디렉토리는 “en”으로 이름을 지정합니다. 밑줄(_) 문자를 사용하여 언어 및 국가 코드가 있는 로캘을 정의할 수 있습니다. 예를 들어 영어(미국) 디렉토리는 “en_us”로 이름을 지정합니다. 또한 “en-us”와 밑줄 대신 하이픈을 사용할 수도 있습니다. HTML 지역화 프레임워크에서는 이 둘을 모두 지원합니다.

로캘 하위 디렉토리에 원하는 수의 리소스 파일을 추가할 수 있습니다. 일반적으로 각 언어에 대해 지역화 파일을 만들어 해당 응용 프로그램의 디렉토리에 저장합니다. HTML 지역화 프레임워크에는 파일의 내용을 읽는 데 사용할 수 있는 getFile() 메서드가 포함되어 있습니다( 특정 로캘의 리소스 가져오기 참조).

.properties 파일 확장명을 갖는 파일을 지역화 속성 파일이라고 합니다. 이 파일을 사용하여 로캘의 키-값 쌍을 정의할 수 있습니다. 속성 파일에서는 각 행에 하나의 문자열을 정의합니다. 예를 들어 다음은 문자열 값 "Hello in English." ( greeting 이라는 키에 대해)를 정의합니다.

greeting=Hello in English.

다음 텍스트가 포함된 속성 파일은 6개의 키-값 쌍을 정의합니다.

title=Sample Application 
greeting=Hello in English. 
exitMessage=Thank you for using the application. 
color1=Red 
color2=Green 
color3=Blue

이 예제에서는 en 디렉토리에 저장될 영어 버전의 속성 파일을 보여 줍니다.

이 속성 파일의 프랑스어 버전은 fr 디렉토리에 저장됩니다.

title=Application Example 
greeting=Bonjour en français. 
exitMessage=Merci d'avoir utilisé cette application. 
color1=Rouge 
color2=Vert 
color3=Bleu

서로 다른 정보 유형에 대해 여러 리소스 파일을 정의할 수 있습니다. 예를 들어 legal.properties 파일에는 저작권 정보와 같은 공통 조항 법률 텍스트가 포함될 수 있습니다. 또한 여러 응용 프로그램에서 해당 리소스를 다시 사용할 수 있습니다. 마찬가지로 사용자 인터페이스의 서로 다른 부분에 대해 지역화된 내용을 정의하는 별도의 파일을 정의할 수 있습니다.

여러 언어를 지원하려면 이러한 파일에 UTF-8 인코딩을 사용합니다.

로캘 체인 관리

응용 프로그램에서 AIRLocalizer.js 파일을 로드할 때 응용 프로그램에 정의된 로캘을 검사합니다. 이러한 로캘은 번들 디렉토리의 하위 디렉토리에 해당합니다( 리소스 번들 정의 참조). 이러한 사용 가능한 로캘 목록을 로캘 체인 이라고 합니다. AIRLocalizer.js 파일에서는 운영 체제 설정에 정의된 기본 순서에 따라 로캘 체인을 자동으로 정렬합니다. Capabilities.languages 속성에서는 운영 체제 사용자 인터페이스 언어를 기본 순서로 나열합니다.

따라서 응용 프로그램에서 "en", "en_US" 및 "en_UK" 로캘에 대한 리소스를 정의하면 AIR HTML Localizer 프레임워크는 로캘 체인을 적절하게 정렬합니다. "en"을 기본 로캘로 보고하는 시스템에서 응용 프로그램이 시작되는 경우 로캘 체인은 ["en", "en_US", "en_UK"] 로 정렬됩니다. 이 경우 응용 프로그램에서는 먼저 "en" 번들의 리소스를 찾은 다음 "en_US" 번들의 리소스를 찾습니다.

그러나 시스템에서 "en-US"를 기본 로캘로 보고하는 경우에는 ["en_US", "en", en_UK"] 로 정렬됩니다. 이 경우 응용 프로그램에서는 먼저 "en_US" 번들에서, 그 다음 "en" 번들에서 리소스를 찾습니다.

기본적으로 응용 프로그램에서는 로캘 체인의 첫 번째 로캘을 사용할 기본 로캘로 정의합니다. 응용 프로그램을 처음 실행할 때 사용자에게 로캘을 선택하도록 요청할 수 있습니다. 그런 다음 선택한 내용을 환경 설정 파일에 저장하고 이후 응용 프로그램을 시작할 때 해당 로캘을 사용할 수 있습니다.

응용 프로그램에서는 로캘 체인에 있는 모든 로캘의 리소스 문자열을 사용할 수 있습니다. 특정 로캘에 리소스 문자열이 정의되어 있지 않으면 응용 프로그램은 로캘 체인에 정의된 다른 로캘에서 일치하는 다음 리소스 문자열을 사용합니다.

Localizer 객체의 setLocaleChain() 메서드를 호출하여 로캘 체인을 사용자 정의할 수 있습니다. 로캘 체인 정의 를 참조하십시오.

지역화된 내용으로 DOM 요소 업데이트

응용 프로그램의 요소에서 지역화 속성 파일을 키 값을 참조할 수 있습니다. 예를 들어 다음 예제의 title 요소는 local_innerHTML 특성을 지정합니다. 지역화 프레임워크에서는 이 특성을 사용하여 지역화된 값을 조회합니다. 기본적으로 프레임워크에서는 "local_" 로 시작하는 특성 이름을 찾습니다. 그리고 "local_" 다음의 텍스트와 일치하는 이름의 특성을 업데이트합니다. 이 경우 프레임워크에서는 title 요소의 innerHTML 특성을 설정합니다. innerHTML 특성은 기본 속성 파일(default.properties)의 mainWindowTitle 키에 정의된 값을 사용합니다.

<title local_innerHTML="default.mainWindowTitle"/>

현재 로캘에 일치하는 값이 정의되어 있지 않으면 localizer 프레임워크는 나머지 로캘 체인을 검색합니다. 로캘 체인에서 값이 정의된 다음 로캘을 사용합니다.

다음 예제에서 p 요소의 텍스트( innerHTML 특성)는 기본 속성 파일에 정의된 greeting 키 값을 사용합니다.

<p local_innerHTML="default.greeting" />

다음 예제에서 input 요소의 값 특성 및 표시된 텍스트는 기본 속성 파일에 정의된 btnBlue 키의 값을 사용합니다.

<input type="button" local_value="default.btnBlue" />

현재 로캘 체인에 정의된 문자열을 사용하도록 HTML DOM을 업데이트하려면 Localizer 객체의 update() 메서드를 호출합니다. update() 메서드를 호출하면 Localizer 객체가 DOM을 파싱하고 지역화( "local_..." ) 특성을 찾는 경우 조작을 적용합니다.

air.Localizer.localizer.update();

특성(예: "innerHTML")과 해당하는 지역화 특성(예: "local_innerHTML") 모두에 대해 값을 정의할 수 있습니다. 이 경우 지역화 프레임워크는 지역화 체인에서 일치하는 값을 찾는 경우에만 특성 값을 덮어씁니다. 예를 들어 다음 요소는 value local_value 특성을 모두 정의합니다.

<input type="text" value="Blue" local_value="default.btnBlue"/>

특정 DOM 요소만 업데이트할 수도 있습니다. 다음 단원 현재 로캘을 사용하도록 DOM 요소 업데이트 를 참조하십시오.

기본적으로 AIR HTML Localizer에서는 "local_" 을 요소에 대한 지역화 설정을 정의하는 특성의 접두어로 사용합니다. 예를 들어 기본적으로 local_innerHTML 특성은 요소의 innerHTML 값에 사용되는 번들 및 리소스 이름을 정의합니다. 또한 기본적으로 local_value 특성은 요소의 value 특성에 사용되는 번들 및 리소스 이름을 정의합니다. "local_" 이 아닌 다른 특성 접두어를 사용하도록 Localizer를 구성할 수 있습니다. AIR HTML Localizer 설정 사용자 정의 를 참조하십시오.

현재 로캘을 사용하도록 DOM 요소 업데이트

Localizer 객체가 HTML DOM을 업데이트하면 표시된 요소는 현재 로캘 체인에 정의된 문자열을 기준으로 특성 값을 사용하게 됩니다. HTML localizer가 HTML DOM을 업데이트하게 하려면 Localizer 객체의 update() 메서드를 호출합니다.

air.Localizer.localizer.update();

지정한 DOM 요소만 업데이트하려면 해당 요소를 update() 메서드에 매개 변수로 전달합니다. update() 메서드에는 선택 사항인 한 개의 메서드 parentNode 만 있습니다. parentNode 매개 변수는 지정하는 경우 지역화할 DOM 요소를 정의합니다. update() 메서드를 호출하고 parentNode 매개 변수를 지정하면 지역화 특성을 지정하는 모든 자식 요소에 대한 지역화된 값이 설정됩니다.

예를 들어, 다음 div 요소를 살펴봅니다.

<div id="colorsDiv"> 
    <h1 local_innerHTML="default.lblColors" ></h1> 
    <p><input type="button" local_value="default.btnBlue" /></p> 
    <p><input type="button" local_value="default.btnRed" /></p> 
    <p><input type="button" local_value="default.btnGreen" /></p> 
</div>

현재 로캘 체인에 정의된 지역화된 문자열을 사용하도록 이 요소를 업데이트하려면 다음 JavaScript 코드를 사용합니다.

var divElement = window.document.getElementById("colorsDiv"); 
air.Localizer.localizer.update(divElement);

로캘 체인에 키 값이 없는 경우 지역화 프레임워크에서는 특성 값을 "local_" 특성의 값으로 설정합니다. 예를 들어 앞의 예제에서 지역화 프레임워크가 로캘 체인의 모든 default.properties 파일에서 lblColors 키 값을 찾을 수 없다고 가정합니다. 이 경우 프레임워크는 "default.lblColors" innerHTML 값으로 사용합니다. 이 값을 사용하면 개발자에게 누락된 리소스를 표시할 수 있습니다.

update() 메서드는 로캘 체인에서 리소스를 찾을 수 없는 경우 resourceNotFound 이벤트를 전달합니다. air.Localizer.RESOURCE_NOT_FOUND 상수는 문자열 "resourceNotFound" 를 정의합니다. 이 이벤트에는 bundleName , resourceName locale 의 세 가지 속성이 있습니다. bundleName 속성은 리소스가 없는 번들의 이름입니다. resourceName 속성은 리소스가 없는 번들의 이름입니다. locale 속성은 리소스가 없는 로캘의 이름입니다.

update() 메서드는 지정한 번들을 찾을 수 없는 경우 bundleNotFound 이벤트를 전달합니다. air.Localizer.BUNDLE_NOT_FOUND 상수는 문자열 "bundleNotFound" 를 정의합니다. 이 이벤트에는 bundleName locale 의 두 가지 속성이 있습니다. bundleName 속성은 리소스가 없는 번들의 이름입니다. locale 속성은 리소스가 없는 로캘의 이름입니다.

update() 메서드는 비동기적으로 작동하며 resourceNotFound bundleNotFound 이벤트를 비동기적으로 전달합니다. 다음 코드에서는 resourceNotFound bundleNotFound 이벤트에 대한 이벤트 리스너를 설정합니다.

air.Localizer.localizer.addEventListener(air.Localizer.RESOURCE_NOT_FOUND, rnfHandler); 
air.Localizer.localizer.addEventListener(air.Localizer.BUNDLE_NOT_FOUND, rnfHandler); 
air.Localizer.localizer.update(); 
function rnfHandler(event) 
{ 
    alert(event.bundleName + ": " + event.resourceName + ":." + event.locale); 
} 
function bnfHandler(event) 
{ 
    alert(event.bundleName + ":." + event.locale); 
}

AIR HTML Localizer 설정 사용자 정의

Localizer 객체의 setBundlesDirectory() 메서드를 사용하면 번들 디렉토리 경로를 사용자 정의할 수 있습니다. Localizer 객체의 setLocalAttributePrefix() 메서드를 사용하면 번들 디렉토리 경로를 사용자 정의하고 Localizer에서 사용하는 특성 값을 사용자 정의할 수 있습니다.

기본 번들 디렉토리는 응용 프로그램 디렉토리의 로캘 하위 디렉토리로 정의됩니다. Localizer 객체의 setBundlesDirectory() 메서드를 호출하여 다른 디렉토리를 지정할 수 있습니다. 이 메서드에서는 하나의 매개 변수 path 를 사용하며 이 매개 변수는 원하는 번들 디렉토리의 경로를 문자열로 지정합니다. path 매개 변수 값은 다음 중 하나가 될 수 있습니다.

  • 응용 프로그램 디렉토리에 상대적인 경로를 정의하는 문자열(예: "locales" )

  • app , app-storage 또는 file URL 스킴을 사용하는 유효한 URL을 정의하는 문자열(예: "app://languages" ). http URL 스킴은 사용하지 마십시오 .

  • File 객체

URL 및 디렉토리 경로에 대한 자세한 내용은 다음을 참조하십시오.

예를 들어 다음 코드에서는 번들 디렉토리를 응용 프로그램 디렉토리가 아닌 응용 프로그램 저장소 디렉토리의 languages 하위 디렉토리로 설정합니다.

air.Localizer.localizer.setBundlesDirectory("languages");

유효한 경로를 path 매개 변수로 전달합니다. 그렇지 않으면 메서드에서 BundlePathNotFoundError 예외가 발생합니다. 이 오류의 name 속성은 "BundlePathNotFoundError" 이고 message 속성은 잘못된 경로를 지정합니다.

기본적으로 AIR HTML Localizer에서는 "local_" 을 요소에 대한 지역화 설정을 정의하는 특성의 접두어로 사용합니다. 예를 들어 local_innerHTML 특성은 다음 input 요소의 innerHTML 값에 사용되는 번들 및 리소스 이름을 정의합니다.

<p local_innerHTML="default.greeting" />

Localizer 객체의 setLocalAttributePrefix() 메서드를 사용하면 "local_" 이 아닌 특성 접두어를 사용할 수 있습니다. 이 정적 메서드에서는 특성 접두어로 사용할 문자열인 하나의 매개 변수를 사용합니다. 예를 들어 다음 코드에서는 "loc_"를 특성 접두어로 사용하도록 지역화 프레임워크를 설정합니다.

air.Localizer.localizer.setLocalAttributePrefix("loc_");

지역화 프레임워크에서 사용하는 특성 접두어를 사용자 정의할 수 있습니다. 기본값( "local_" )이 코드에 사용되는 다른 특성의 이름과 충돌하는 경우 접두어를 사용자 정의할 수 있습니다. 이 메서드를 호출할 때는 HTML 특성에 유효한 문자를 사용해야 합니다. 예를 들어 값에 공백 문자가 포함될 수 없습니다.

HTML 요소에서 지역화 특성 사용에 대한 자세한 내용은 지역화된 내용으로 DOM 요소 업데이트 를 참조하십시오.

번들 디렉토리 및 특성 접두어 설정은 응용 프로그램 세션이 바뀌면 유지되지 않습니다. 사용자 정의 번들 디렉토리 또는 특성 접두어 설정을 사용하려면 응용 프로그램이 시작할 때마다 이를 설정해야 합니다.

로캘 체인 정의

기본적으로 AIRLocalizer.js 코드를 로드할 때 기본 로캘 체인이 설정됩니다. 로캘은 번들 디렉토리에서 사용할 수 있고 운영 체제 언어 설정에서 이 로캘 체인을 정의합니다. 자세한 내용은 로캘 체인 관리 를 참조하십시오.

Localizer 객체의 정적 setLocaleChain( ) 메서드를 호출하여 로캘 체인을 수정할 수 있습니다. 예를 들어 특정 언어를 선호하는 경우 이 메서드를 호출할 수 있습니다. setLocaleChain( ) 메서드는 하나의 매개 변수 chain 을 사용합니다. 이 매개 변수는 ["fr_FR","fr","fr_CA"] 과 같은 로캘 배열입니다. 배열의 로캘 순서에 따라 후속 작업에서 프레임워크가 리소스를 찾는 순서가 결정됩니다. 체인의 첫 번째 로캘에서 리소스를 찾지 못하면 계속 다른 로캘의 리소스를 찾습니다. chain 인수가 없거나 배열이 아니거나 빈 배열이면 함수가 실패하고 IllegalArgumentsError 예외가 발생합니다.

Localizer 객체의 정적 getLocaleChain() 메서드는 현재 로캘 체인의 로캘을 나열하는 배열을 반환합니다.

다음 코드에서는 현재 로캘 체인을 읽고 체인의 머리 부분에 두 개의 프랑스어 로캘을 추가합니다.

var currentChain = air.Localizer.localizer.getLocaleChain(); 
newLocales = ["fr_FR", "fr"]; 
air.Localizer.localizer.setLocaleChain(newLocales.concat(currentChain));

setLocaleChain() 메서드는 로캘 체인을 업데이트할 때 "change" 이벤트를 전달합니다. air.Localizer.LOCALE_CHANGE 상수는 문자열 "change" 를 정의합니다. 이 이벤트에서는 새 로캘 체인의 로캘 코드 배열인 localeChain 이라는 하나의 속성을 사용합니다. 다음 코드에서는 이 이벤트에 대한 이벤트 리스너를 설정합니다.

var currentChain = air.Localizer.localizer.getLocaleChain(); 
newLocales = ["fr_FR", "fr"]; 
localizer.addEventListener(air.Localizer.LOCALE_CHANGE, changeHandler); 
air.Localizer.localizer.setLocaleChain(newLocales.concat(currentChain)); 
function changeHandler(event) 
{ 
    alert(event.localeChain); 
}

정적 air.Localizer.ultimateFallbackLocale 속성은 응용 프로그램이 사용자 환경 설정을 지원하지 않는 경우 사용되는 로캘을 나타냅니다. 기본값은 "en" 입니다. 다음 코드와 같이 이를 다른 로캘로 설정할 수 있습니다.

air.Localizer.ultimateFallbackLocale = "fr";

특정 로캘의 리소스 가져오기

Localizer 객체의 getString() 메서드는 특정 로캘의 리소스에 대해 정의된 문자열을 반환합니다. 이 메서드를 호출할 때 locale 값을 지정할 필요가 없습니다. 이 경우 메서드에서는 전체 로캘 체인을 확인하고 지정된 리소스 이름을 제공하는 첫 번째 로캘의 문자열을 반환합니다. 이 메서드의 매개 변수는 다음과 같습니다.

매개 변수

설명

bundleName

리소스를 포함하는 번들입니다. .properties 확장명을 제외한 속성 파일의 파일 이름입니다. 예를 들어 이 매개 변수를 "alerts" 로 설정하면 Localizer 코드에서는 alerts.properties라는 지역화 파일을 확인합니다.

resourceName

리소스 이름입니다.

templateArgs

선택 사항입니다. 대체 문자열에서 번호 지정된 태그를 대체할 문자열 배열입니다. 예를 들어 templateArgs 매개 변수가 ["Raúl", "4"] 이고 일치하는 리소스 문자열이 "Hello, {0}. You have {1} new messages." 인 함수를 호출한다고 가정합니다. 이 경우 함수는 "Hello, Raúl. You have 4 new messages." 를 반환합니다. 이 설정을 무시하려면 null 값을 전달합니다.

locale

선택 사항입니다. 사용할 로캘 코드입니다(예: "en" , "en_us" 또는 "fr" ). 로캘을 지정하고 일치하는 값이 없으면 메서드에서는 로캘 체인의 다른 로캘에서 값을 검색하지 않습니다. 로캘 코드를 지정하지 않으면 함수에서는 지정된 리소스 이름에 대한 값을 제공하는 로캘 체인의 첫 번째 로컬에 있는 문자열을 반환합니다.

지역화 프레임워크에서 표시된 HTML DOM 특성을 업데이트할 수 있습니다. 그러나 지역화된 문자열을 다른 방법으로 사용할 수 있습니다. 예를 들어 문자열을 동적으로 생성된 HTML에서 사용하거나 함수 호출의 매개 변수로 사용할 수 있습니다. 예를 들어 다음 코드에서는 fr_FR 로캘의 기본 속성 파일에서 error114 리소스에 정의된 문자열을 사용하여 alert() 함수를 호출합니다.

alert(air.Localizer.localizer.getString("default", "error114", null, "fr_FR"));

getString() 메서드는 지정된 번들에서 리소스를 찾을 수 없는 경우 resourceNotFound 이벤트를 전달합니다. air.Localizer.RESOURCE_NOT_FOUND 상수는 문자열 "resourceNotFound" 를 정의합니다. 이 이벤트에는 bundleName , resourceName locale 의 세 가지 속성이 있습니다. bundleName 속성은 리소스가 없는 번들의 이름입니다. resourceName 속성은 리소스가 없는 번들의 이름입니다. locale 속성은 리소스가 없는 로캘의 이름입니다.

getString() 메서드는 지정된 번들을 찾을 수 없는 경우 bundleNotFound 이벤트를 전달합니다. air.Localizer.BUNDLE_NOT_FOUND 상수는 문자열 "bundleNotFound" 를 정의합니다. 이 이벤트에는 bundleName locale 의 두 가지 속성이 있습니다. bundleName 속성은 리소스가 없는 번들의 이름입니다. locale 속성은 리소스가 없는 로캘의 이름입니다.

getString() 메서드는 비동기적으로 작동하며 resourceNotFound bundleNotFound 이벤트를 비동기적으로 전달합니다. 다음 코드에서는 resourceNotFound bundleNotFound 이벤트에 대한 이벤트 리스너를 설정합니다.

air.Localizerlocalizer.addEventListener(air.Localizer.RESOURCE_NOT_FOUND, rnfHandler); 
air.Localizerlocalizer.addEventListener(air.Localizer.BUNDLE_NOT_FOUND, bnfHandler); 
var str = air.Localizer.localizer.getString("default", "error114", null, "fr_FR"); 
function rnfHandler(event) 
{ 
    alert(event.bundleName + ": " + event.resourceName + ":." + event.locale); 
} 
function bnfHandler(event) 
{ 
    alert(event.bundleName + ":." + event.locale); 
}

Localizer 객체의 getResourceBundle() 메서드는 제공된 로캘에 대해 지정된 번들을 반환합니다. 이 메서드의 반환 값은 번들의 키와 일치하는 속성이 있는 객체입니다. 응용 프로그램에서 지정된 번들을 찾을 수 없는 경우 이 메서드는 null 을 반환합니다.

이 메서드는 locale bundleName 이라는 두 가지 매개 변수를 사용합니다.

매개 변수

설명

locale

로캘(예: "fr" )입니다.

bundleName

번들 이름입니다.

예를 들어 다음 코드에서는 document.write() 메서드를 호출하여 fr 로캘의 기본 번들을 로드합니다. 그런 다음 document.write() 메서드를 호출하여 해당 번들에 있는 str1 str2 키의 값을 작성합니다.
var aboutWin = window.open(); 
var bundle = localizer.getResourceBundle("fr", "default"); 
aboutWin.document.write(bundle.str1); 
aboutWin.document.write("<br/>"); 
aboutWin.document.write(bundle.str2); 
aboutWin.document.write("<br/>");

getResourceBundle() 메서드는 지정된 번들을 찾을 수 없는 경우 bundleNotFound 이벤트를 전달합니다. air.Localizer.BUNDLE_NOT_FOUND 상수는 문자열 "bundleNotFound" 를 정의합니다. 이 이벤트에는 bundleName locale 의 두 가지 속성이 있습니다. bundleName 속성은 리소스가 없는 번들의 이름입니다. locale 속성은 리소스가 없는 로캘의 이름입니다.

Localizer 객체의 getFile() 메서드는 지정된 로캘에 대해 번들의 내용을 문자열로 반환합니다. 번들 파일은 UTF-8 파일로 읽습니다. 이 메서드의 매개 변수는 다음과 같습니다.

매개 변수

설명

resourceFileName

리소스 파일의 파일 이름입니다(예: "about.html" ).

templateArgs

선택 사항입니다. 대체 문자열에서 번호 지정된 태그를 대체할 문자열 배열입니다. 예를 들어 templateArgs 매개 변수가 ["Raúl", "4"] 이고 일치하는 리소스 파일에 두 줄이 포함된 함수를 호출한다고 가정합니다.

<html> 
<body>Hello, {0}. You have {1} new messages.</body> 
</html> 

이 경우 함수는 다음과 같이 두 줄이 포함된 문자열을 반환합니다.

<html> 
<body>Hello, Raúl. You have 4 new messages. </body> 
</html> 
locale

사용할 로캘 코드입니다(예: "en_GB" ). 로캘을 지정하고 일치하는 파일이 없으면 메서드에서는 로캘 체인의 다른 로캘에서 검색을 계속하지 않습니다. 로캘 코드를 지정하지 않으면 함수에서는 resourceFileName 과 일치하는 파일이 있는 로캘 체인의 첫 번째 로캘에 있는 텍스트를 반환합니다.

예를 들어 다음 코드에서는 fr 로캘의 about.html 파일의 내용을 사용하여 document.write() 메서드를 호출합니다.

var aboutWin = window.open(); 
var aboutHtml = localizer.getFile("about.html", null, "fr"); 
aboutWin.document.close(); 
aboutWin.document.write(aboutHtml);

getFile() 메서드는 로캘 체인에서 리소스를 찾을 수 없는 경우 fileNotFound 이벤트를 전달합니다. air.Localizer.FILE_NOT_FOUND 상수는 문자열 "resourceNotFound" 를 정의합니다. getFile() 메서드는 비동기적으로 작동하며 fileNotFound 이벤트를 비동기적으로 전달합니다. 이 이벤트에는 fileName locale 의 두 가지 속성이 있습니다. fileName 속성은 찾지 못한 파일의 이름입니다. locale 속성은 리소스가 없는 로캘의 이름입니다. 다음 코드에서는 이 이벤트에 대한 이벤트 리스너를 설정합니다.

air.Localizer.localizer.addEventListener(air.Localizer.FILE_NOT_FOUND, fnfHandler); 
air.Localizer.localizer.getFile("missing.html", null, "fr"); 
function fnfHandler(event) 
{ 
    alert(event.fileName + ": " + event.locale); 
}