多语言API的JSON响应的最佳实践是什么?

时间:2013-12-24 06:08:39

标签: javascript json api translation

我想用英语将语言添加到当前的API响应中。当前的API响应如下所示:

{
   status : "success",
   data : {
    query: "contains search query",
    queryType: "search"

    results: [
        {
            title: "Marvel Captain America T-shirt",
            price: 624,
            category: "t-shirt",
            gender: "men",                  
        },
        .....
    ],
    language: "english",
    currency: "rupee",    
   }
}

我可以通过两种方式开发API,一种方法是使用不同的内核进行API响应,并根据应用程序中的语言首选项进行调用,但我的应用程序还需要保留某些英语元素。另一种方法是将所有语言放在具有特定结构的响应中以区分每个语言。在任何一种情况下,我都希望保留英语元素。

所以如果性别:'男人',但语言是法语,所以我想要一个像gender_display这样的额外字段:'hommes'或gender_fr:'hommes'

增加:搜索结果来自Solr

2 个答案:

答案 0 :(得分:2)

说到:[国际化 | 全球化 | 本地化]最受欢迎的标准之一是i18n。从编码角度来看,所有关于创建“资源字典”。

不同的图书馆已经实施了这一标准,其原则包括从货币,日期和数字等转换到转换。

例如i18n-js建议使用此结构:

I18n.translations = {
            en: {
                hello: "Hello World!"               
            },
            "pt-BR": {
                hello: "Olá Mundo!"
            },
            "de": {
                hello: "Hallo Welt!"
            },
            "nb": {
                hello: "Hei Verden!"
            }
        };

   I18n.t("hello", {locale: "en"});    //returns  "Hello World!"
   I18n.t("hello", {locale: "pt-BR"}); //returns "Olá Mundo!"

还有一个JQuery plug-in也可以提供帮助:

$.i18n.load({ a_key: 'translated string %2$s - %1$s' });
$.i18n._('a_key', ['order', 'in'])); //returns 'translated string in - order'

结论

要定义JSON的结构,建议首先选择适合您需求的框架,并遵循社区的最佳实践。这将使决策过程更加引导和支持社区的经验。

答案 1 :(得分:1)

您可能会问自己一个问题:

有多少种语言,不同的编辑会为每种语言编写API文件,每种语言都专注于一种语言?如果每种语言都有不同的编辑器,那么每种语言可能有一套[set] API文件。但是,不是为每种语言重复所有内容(例如,对于所有语言,价格可能保持不变),您可以使用一种语言设置主API,并且只在其他本地化API集中存储与主服务器不同的内容。

假设您正在编写(通过实现示例)JavaScript和jQuery,您可以使用jQuery的扩展函数轻松地在主API上覆盖您的本地化API。这样做的一个优点是,如果您的本地化文件缺少翻译,那么您将依赖于主API的措辞。

警告:这可能不一定是适合您情况的最佳方法,因为您只提供了一般信息。希望这个建议既有用,也可以作为进一步思考的食物。我也假设您正在处理API文件,因为本地化通常就是这种情况,但您可能有DB驱动的内容或其他内容。