Javascript 从多语言API获得JSON响应的最佳实践是什么

Javascript 从多语言API获得JSON响应的最佳实践是什么,javascript,json,api,translation,Javascript,Json,Api,Translation,我想用英语为当前的API响应添加语言。当前API响应如下所示: { status : "success", data : { query: "contains search query", queryType: "search" results: [ { title: "Marvel Captain America T-shirt", price: 624, catego

我想用英语为当前的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响应,并根据应用程序中的语言偏好进行调用,但我的应用程序还需要保留某些英语元素。另一种方法是将所有语言放在具有特定结构的响应中,以区分每种语言。无论哪种情况,我都希望保留英语元素

所以,如果性别:'men',但语言是法语,那么我想要一个额外的字段,比如性别显示:'hommes'或性别fr:'hommes'


另外:搜索结果来自Solr

当涉及到:[国际化|全球化|本地化]时,最流行的标准之一是。从编码的角度来看,这一切都是关于创建一个“资源字典”

不同的图书馆已经实施了这个标准,他们的原则涵盖了从翻译到货币、日期和数字的转换

例如,该结构建议:

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!"
还有一种方法也可能有所帮助:

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


要定义JSON的结构,建议首先选择更适合您需要的框架,并遵循社区的最佳实践。这将使决策过程在社区体验中得到更多的指导和支持。

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

有多少种语言,不同的编辑器将为每种语言处理API文件,每种语言专门使用一种语言?如果每种语言有不同的编辑器,那么每种语言有一个API文件可能比较合适。但是,您可以在一种语言中设置一个主API集,而只在其他本地化API集中存储与主API不同的内容,而不是对每种语言重复所有内容(例如,所有语言的价格可能保持不变)

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


警告:这不一定是针对您的情况的最佳方法,因为您只提供了一般信息。希望这个建议是有用的,或者是值得进一步思考的。我还假设您正在处理API文件,因为本地化通常是这样,但您可能有DB驱动的内容或其他内容。

这里的问题部分似乎有点不清楚或宽泛,听起来像是需要设计decision@JaakK这是一个设计问题。有很多方法可以做到这一点,我想知道是否有人对此进行了探索并找到了一个好的方法。尽管我希望在一个API调用中解决它,但我喜欢将响应从本地化API扩展到主API的想法。如果我不能很快得到一个更好的答案,我会接受这个答案。在考虑添加未来功能时,这个方法对我很有用。我只需要向主数据集添加额外的数据,就可以开始运行了。祝你的项目好运。我也希望能有更多的人回答你的问题。(收集其他想法总是很好。)如果你决定接受这个答案,那将不胜感激。谢谢,这就是我想要的:)