#JSON translation files

1 messages · Page 1 of 1 (latest)

quartz relic
#

Heya!

I am working on a project that needs to be translated in many languages. While I was coding, I found that translating a big application is quit hard, so I'm here to ask what is the best approach to well structure the JSON files so that all strings adapt themselves depending on the variables they contain.

Let me explain

Let's take this as the best example:

         The Jame's car broke 4 walls```

```fr – La voiture de/d'{{name}} a cassée {{number}} mur(s)
        La voiture de Jame a cassée 4 murs```

In these examples, you can see that "wall" adapts its writing depending of the `number` variable.
Also, in French, the preposition `de` and `d'` are used depending on the first letter of the name. Each name that start with a vowel needs `d'`, instead, it'll need `de`.

There's many thing like this in many languages, and because I don't know all of them (hopefully 👀), I might done something dynamic.

So, here's my problem: what would be the best approach to achieve that?
bleak rampart
#

first always use ’ not programmer quotes

#

same with raquo, laquo, rdquo, ldquo

#

you might want to have singular / plural sentences

#

same with gender

#

split big sentences in parts

#

also your translation will be done in Excel so make sure that Excel can export into TSV or CSV UTF-8
as in

ENGLISH_KEY | = or : | EN | FR | ES | PT

#

that way to convert you just delete columns
then re-export

#

this makes it easy to export into CSV, TSV, JSON, XML

#

also one translation per line, makes diff-merge easier, including cross-languages

#

and spot missing translations

quartz relic
#

@bleak rampart, can you explain?

You said "use &rsquo", but why and where? You did not precise for what purpose I should use that, and what are programmer quote?
Same question for "raquo", "laquo", "rdquo" and "ldquo"

Next, how can I split sentences in parts in Excel 🤔 if you thought about making a translation with multiple keys, this is not what I want; this is taking more space than it should

And by the end, in ENGLISH_KEY | = or : | EN | FR | ES | PT , what is the or purpose?

quartz relic
bleak rampart
#

tu ne mets jamais des quotes de programmeur dans les traductions, toujours des curvy quotes unicode

#

The {{name}}'s car broke {{number}} wall(s) BAD

#

The {{name}}’s car broke {{number}} wall(s) GOOD

#

ça enlève le problème d'escapage, de XSS et de validation et de SQL injection entre autres

#

aussi les locales devrait être 5 caractères 😛

#

pcq fr-CA, fr-QC et fr-FR
ainsi que es-MX, es-CL, es-AR, es-ES
c'est vraiment pas pareil

quartz relic
#

Tout ça, je le sais 👀👀 mes exemples sont courts pour comprendre le but même de mon problème, du coup, le fait que j'écrives "en" ou "fr" est juste là pour connaître les langues de comparaison, même si c'est différent du fr-FR au fr-CA. Puis, pour lquotes, pareil, je sais qu'il est mieux d'utiliser les , même si JAMAIS l'utilisateur ne pourra envoyer ses propres traductions, donc le risque XSS est très peu probable pour les requêtes linguistiques ET jamais des requêtes ne seront établies pour avoir une traduction. Les fichiers HTML arriveront déjà traduit étant donné que le backend remplacera toutes les variables avant l'envoie de la réponse.@bleak rampart

quartz relic
#

Sorry for non fench speakers

bleak rampart
#

dans ce cas, utilise un fichier Locale properties pour Java

#

sinon XML Data, ou CSV UTF-8

#

sinon tu dois l'exporter et faire de la magie avec quelque regexp pour le convertir en JSON

#

sinon convertir le XML en JSON

#

dans la majorité des cas, l'information est en suffix pour le HTML

#

mais pour les courriel / rapport, tu vas avoir le genre de problème que tu parles

#
fr – La voiture de/d'{{name}} a cassée {{number}} mur(s)
        La voiture de Jame a cassée 4 murs
#
sentence={{sentence_1}}{{sentence_2_d|sentence_2_de}}{{sentence_3}}{{sentence_4_singular|sentence_4_plural}}
sentence_1=La voiture\u0020
sentence_2_regex=^[AEIOUYaeiouyåàâáäéêèëìíîïôóòöõùúûüÿÅÀÂÁÄÉÊÈËÌÍÎÏÔÓÒÖÕÙÚÛÜ]
sentence_2_d=d\u2019
sentence_2_de=de\u0020
sentence_3={{name}} a cassé {{number}}\u0020
sentence_4_singular=mur.
sentence_4_plural=murs.
#
en – The {{name}}'s car broke {{number}} wall(s)
         The Jame's car broke 4 walls