Come gestire le traduzioni in JSON? [chiuso]

0

Mi chiedo quale sarebbe il metodo più appropriato per gestire le traduzioni nei file JSON in termini di matrici e oggetti.

Considerare un oggetto ha proprietà correlate a se stesso, una traduzione è una proprietà o un'entità completamente diversa? In tal caso, l'utilizzo di un array sarebbe più appropriato.

Prendiamo un file JSON che descrive un film, usando gli oggetti:

"title": {
  "en": "The Lord of the Rings: The Fellowship of the Ring",
  "fr": "Le Seigneur des anneaux : la communauté de l'anneau"
}

Uso degli array:

"title": [
  {
    "lang": "en",
    "content": "The Lord of the Rings: The Fellowship of the Ring"
  },
  {
    "lang": "fr",
    "content": "Le Seigneur des anneaux : la communauté de l'anneau"
  }
]

Dovremmo prendere in considerazione la lingua selezionata dell'applicazione:

Se la lingua dell'applicazione dell'utente è fr , dobbiamo controllare se esiste title.fr , altrimenti non avremmo bisogno di un elenco predefinito di codici lingua per verificarne l'esistenza nell'oggetto title .

Utilizzando gli array avremmo bisogno di scorrere tutti i suoi valori per verificare se uno di essi è nella lingua desiderata, ma in caso contrario, il fallback è banale rispetto al metodo precedente.

    
posta Vilarix 31.10.2015 - 20:24
fonte

2 risposte

1

Considera una situazione in cui alcuni articoli sono disponibili in lingue diverse e altri no e differiscono da record a record. E potrebbero esserci articoli in cui lingue diverse non hanno senso. Ad esempio, se si dispone di autore, titolo, traduttore, l'autore è indipendente dalla lingua, ma in questo caso non esiste un traduttore inglese.

Potresti considerare in questo modo: hai una serie di libri. Ogni libro è un dizionario. Ogni chiave potrebbe essere direttamente una chiave del dizionario (ad esempio l'autore). Quindi potresti avere più dizionari per lingua, in questo caso "en" e "fr", dove "en" ha la chiave "titolo", mentre "fr" ha le chiavi "titolo" e "traduttore".

L'utente ha un elenco di lingue in ordine di preferenza, diciamo "it" e "en". Dal momento che "it" non è disponibile, si prende direttamente l'autore, il "titolo" da "en" e non c'è traduttore. Nota che scegli una sola lingua; titolo inglese con traduttore francese sarebbe una sciocchezza.

    
risposta data 31.10.2015 - 21:31
fonte
1

Dipende da cosa stai per modellare.

Se prendi libri come esempio, ogni libro è identificabile in modo univoco tramite ISBN . In questo caso, Lord of the rings e la sua traduzione tedesca Herr der Ringe sono due diverse entità - e come tali hanno percentuali ISB diverse. Ovviamente diresti che la versione tedesca è solo la traduzione , ma è un'entità separata. D'altra parte, se dici a qualcuno che leggi l'edizione tedesca di un libro e l'altro a leggere la versione inglese, leggi due rappresentazioni dello "stesso libro" (filosofia a parte).

Se stai modellando un bookstore , è assolutamente sensato trattarli in modo diverso. Per esempio. fai un "link" ad altre edizioni

{
    "Title":"Lord of the rings",
    "Price":"€ 10.49",
    "Paperback":"529 pages",
    "Language":"English",
    "_links":{
          "self":{
              "href":"/books/123"
          },
          "foreign language editions":[
            {
              "href":"/books/459",
              "title":"Der Herr der Ringe",
              "lang":"de"
            },
            {
              "href":"/books/3232",
              "title":"Le Seigneur des anneaux : la communauté de l'anneau",
              "lang"
            }
          ]
      },
}

Un altro caso d'uso sarebbe, se hai lo stesso articolo con traduzioni diverse: ad esempio hai screws che sono chiamate Schrauben in german . In questo caso, non avrebbe senso dire che il names si riferisce a cose diverse. Dovresti modellare due diverse rappresentazioni di un articolo in due lingue, ma facendo riferimento allo stesso articolo . Forse il tuo percorso è /articles/12345 potresti aggiungere un parametro di query per mostrare una traduzione diversa: /articles/12345?lang=de che si traduce in una rappresentazione tedesca dello stesso articolo. Un'altra possibilità è l'impostazione di Accept-Language nell'intestazione HTTP: Accept-Language: en-US .

is a translation a property or a completely different entity?

Una traduzione è un'entità diversa o una rappresentazione differente di un'entità.

    
risposta data 31.10.2015 - 23:03
fonte

Leggi altre domande sui tag