2012-12-10 3 views
2

jQuery Mobile을 사용하여 Phonegap 응용 프로그램을 개발 중입니다. 매우 기본적인 응용 프로그램으로, 스페인어와 영어로 구성된 대규모 조직에 대한 정보를 표시하는 것이 목적입니다. 첫 번째 페이지에는 스페인어와 영어의 두 가지 옵션이 표시됩니다. 사용자가 스페인어를 선택한 경우 표시되는 정보는 스페인어 여야하며 반대의 경우도 마찬가지입니다.phonegap 응용 프로그램에 번역을 저장하고 사용자 기본 설정을 저장하는 방법?

SQLite DB를 사용하면 아직 지원되지 않으므로 Windows Phone에서 문제가 발생할 수 있습니다 (Phonegap Storage 참조).

File Storage 옵션도 있습니다. 원시 JSON 파일도 마찬가지입니다.

답변

3

내가하는 일은 언어에 특정한 json 파일을 만들어 모든 문자열을 보관하는 것입니다. 이 경우 english.json 및 spanish.json. 같은 JSON을 구조 :

{ 
    help: "Help", 
    ok: "Okay" 
} 

을 앱의 첫 페이지에 사용자가 로컬 스토리지에 값을 설정해야합니다 예를 들어 스페인 버튼을 클릭 할 때.

그런 다음 두 번째 페이지에서 "deviceready"이벤트가 발생하면 XHR을 사용하여 올바른 json 파일을로드해야합니다.

var request = new XMLHttpRequest(); 
    request.open("GET", localStorage.getItem("lang") + ".json", true); 
    request.onreadystatechange = function(){//Call a function when the state changes. 
     if (request.readyState == 4) { 
      if (request.status == 200 || request.status == 0) { 
       langStrings = JSON.parse(request.responseText); 
      } 
     } 
    } 
    request.send(); 

번역 된 문자열을 사용하고자 할 때마다 langStrings에서 가져옵니다.

langStrings.ok; 

의미가 있습니까?

+0

마지막으로 나는 스페인어와 영어로 내용이 담긴 2 개의 파일을 작성했습니다. 그런 다음 localStorage를 사용하여 index.html에서 환경 설정을 설정합니다. 고맙습니다, 당신의 대답이 나를 인도 해주었습니다. – jorgevenegas

+0

기꺼이 도와 드릴 수있었습니다. 나는 사람들을 위해 이것을 쉽게하기 위해 약간의 코드를 작성해야한다고 생각한다. –

+0

은 문제가되고 싶지 않지만 오프라인 지원이 필요한 앱을 만들면이 기능이 작동할까요? –

0

지속성을 위해 Html5 로컬 저장소를 성공적으로 사용했습니다. Android, iOS, Windows Phone 7에서 작동합니다 (이 플랫폼에서 사용해 보았습니다).
this처럼 사용합니다.

i18n의 경우 모든 자바 스크립트 i18n 라이브러리를 사용할 수 있습니다. 나 자신의 간단한 solution을 만들었습니다.

관련 문제