【问题标题】:How to store translations in a phonegap application and save the user preferences?如何在 phonegap 应用程序中存储翻译并保存用户偏好?
【发布时间】:2012-11-28 09:53:53
【问题描述】:

我正在使用 jQuery Mobile 开发一个 Phonegap 应用程序。这是一个非常基本的应用程序,它的目的是用西班牙语和英语显示一个大型组织的信息。在应用程序的第一页显示 2 个选项,西班牙语和英语。如果用户选择西班牙语,则显示的信息必须是西班牙语,反之亦然。

在 Windows Phone 上使用 SQLite DB 可能会出现一些问题,因为它尚不受支持(请参阅 Phonegap Storage)。

还有File Storage 选项。以及原始 JSON 文件。

【问题讨论】:

    标签: sqlite cordova jquery-mobile translation


    【解决方案1】:

    我这样做的方法是创建一个特定于语言的 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;
    

    有意义吗?

    【讨论】:

    • 最后我写了2个文件,内容是西班牙语和英语。然后我使用 localStorage 在 index.html 中设置首选项。谢谢你,你的回答给了我指导。
    • 很高兴我能提供帮助。我想我应该写一点代码让人们更容易做到这一点。
    • 不想成为问题发现者,但是当我必须制作具有离线支持的应用程序时,这会起作用吗?
    【解决方案2】:

    为了持久性,我成功地使用了 Html5 本地存储。 它适用于 Android、iOS 和 Windows Phone 7(我在这些平台上尝试过)。
    我像this 一样使用它。

    对于 i18n,您可以使用任何 javascript i18n 库。我创建了自己的简单solution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      相关资源
      最近更新 更多