2013-12-24 2 views
6

Я хотел добавить языки к текущему ответу API на английском языке. Текущий ответ API выглядит следующим образом:Каковы наилучшие практики для ответа JSON от многоязычного 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

+0

Вопрос часть здесь кажется немного неясным или широким, звучит как потребность в дизайнерском решении –

+0

@ JaakKütt Это вопрос дизайна. Есть много способов сделать это, я хотел бы знать, исследовал ли кто-нибудь и нашел для него хороший метод. – islahul

ответ

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 это рекомендуется выбрать сначала Framework, который лучше подходит вашим потребностям, и f ослепите лучшие практики сообщества. Это сделает процесс принятия решений более ориентированным и подкрепленным опытом сообщества.

+0

Спасибо, это то, что я искал :) – islahul

1

Один вопрос, который вы можете спросить себя:

Сколько языков, и различные редакторы будут работать над файлами API для каждого языка, каждый из которых специализируется на одном языке? Если у вас будет другой редактор на один язык, вам может потребоваться один [набор] файлов API для каждого языка. Однако вместо того, чтобы повторять все для каждого языка (например, цена остается неизменной для всех, например), вы можете иметь мастер-API, установленный на одном языке, и просто хранить только то, что отличается от мастера в других локализованных наборах API.

Скажите, что вы кодируете (в качестве примера реализации) JavaScript и jQuery, тогда вы можете использовать функцию расширения jQuery, чтобы легко накладывать локализованный API поверх главного API. Преимущество этого заключается в том, что если в вашем файле локализации отсутствует перевод, вы вернетесь к формулировке главного API.

Предостережение. Это не обязательно лучший подход к вашей ситуации, поскольку вы предоставили общую информацию. Надеюсь, хотя это предложение полезно или полезно для дальнейших размышлений. Я также сделал предположение, что вы имеете дело с файлами API, поскольку это часто происходит с локализацией, но у вас может быть контент с БД или что-то еще.

+0

http://api.jquery.com/jquery.extend/ –

+0

Хотя я искал, чтобы решить его в ** одном API-вызове **, мне нравится идея расширения ответа от API локализации на ответ от мастер-API. Если я скоро получу лучший ответ, я соглашусь с этим. – islahul

+0

Этот подход был полезен мне раньше, когда вы рассматриваете возможность добавления будущих функций. Мне нужно было только добавить дополнительные данные в мастер-набор, и я начал работать. Удачи с вашим проектом. –

Смежные вопросы