2012-12-10 52 views
2

我正在開發一個使用jQuery Mobile的Phonegap應用程序。這是一個非常基礎的應用程序,其目的是以西班牙語和英語顯示有關大型組織的信息。在第一頁上,該應用程序顯示2個選項,西班牙語和英語。如果用戶選擇西班牙語,則顯示的信息必須是西班牙語,反之亦然。如何將翻譯存儲在phonegap應用程序中並保存用戶首選項?

使用SQLite數據庫可能會給予一定的問題,在Windows Phone上,因爲它還不支持(見Phonegap Storage)。

還有就是File Storage選擇了。還有原始的JSON文件。

回答

3

我做的方式是創建一個特定語言的JSON文件來保存我的所有字符串。在這種情況下,english.json和spanish.json。結構JSON一樣:

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

在你的應用程序的第一個頁面,當用戶點擊該按鈕,西班牙比如應該設置在localStorage的一個值。

localStorage.setItem("lang", "spanish"); 

然後在第二頁中,一旦您收到「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

對於國際化,你可以使用任何的JavaScript庫的國際化。我創建了自己的簡單solution

相關問題