For a current project, I’ve been struggling with my language files. They’re all JSON files, and will always fallback to English if translations aren’t available.

My problem is that when a new key is required, I use my english file by default. This leads to situations where my client wants to translate new keys to other languages, and I have to spend time looking at all files, figuring out which keys i haven’t added there.

Essentially I want to get to a point where I can give all the translation files to my client, and he returns them with the translated content.

What do you guys use for managing this? And how would you solve the situation i’ve found myself in.

  • pinchcramp@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    1
    ·
    11 months ago

    Obviously I don’t know your codebase but couldn’t you do something like the following?

    function loadTranslations(locale) {
      const fallbackTranslations = require("/i18n/en.json");
      const translations = require(`/i18n/${locale}.json`);
      return {
         ...fallbackTranslations,
        ...translations
      };
    }
    
    • BetaSalmon@lemmy.worldOP
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      11 months ago

      That won’t work quite well because a lot of it is nested. But shouldn’t be too hard to account for that in a couple of lines of code.

      • pinchcramp@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        2
        ·
        edit-2
        11 months ago

        Yeah, I don’t know the exact structure of your translation files but a deep merge of your fallback files and the requested locale file should be enough.