Crowdin failing to import all json files in project which was previously fine

I’m a member of an opensource project and one of our translators noticed that source files were not being updated. After enabling/disabling/re-creating the GitLab integration I ran a sync and every single (json) file is failing to import (the same happens when trying to manually import a file).

The project is: FVTT Cyberpunk RED - Core dashboard in Crowdin

The error (same for every file) is:

I have looked at each file and they are all valid JSON and running them through a JSONDiff tool the only differences are in the “description” key (as expected).

An example current source file already in Crowdin:

{
  "label": "Ammo",
  "mapping": {},
  "entries": {
    "Arasaka Acid": {
      "name": "Arasaka Acid",
      "description": "<p>Coating for Arasaka Weeping Reaver Katana only.</p>"
    },
    "Arasaka Fire": {
      "name": "Arasaka Fire",
      "description": "<p>Coating for Arasaka Weeping Reaver Katana only.</p>\n<p>Can set target on fire, details of which can be found on page 91.</p>"
    },
    "Arasaka Wound Salt": {
      "name": "Arasaka Wound Salt",
      "description": "<p>Coating for Arasaka Weeping Reaver Katana only.</p>\n<p>Able to apply a second a seconde Critical Injury, details of which can be found on page 91.</p>"
    },
    "Doberman 500 Marking Scent": {
      "name": "Doberman 500 Marking Scent",
      "description": "<p>Special Ammo Type for the Air Pistol. For more information, see Black Chrome Page 44.</p>"
    },
    "Grenade (Arachnid)": {
      "name": "Grenade (Arachnid)",
      "description": "<p>A very sticky grenade, details of which can be found on page 86.</p>"
    },
    "Grenade (Security)": {
      "name": "Grenade (Security)",
      "description": "<p>Armor piercing Grenade that doesn't damage cover. Full rules can be found on page 89.</p>"
    },
    "Grenade (Shuriken Tornado)": {
      "name": "Grenade (Shuriken Tornado)",
      "description": "<p>A literal explosion of shurikens. Can apply second Critical Injury, details of which can be found on page 87.</p>"
    },
    "Net": {
      "name": "Net",
      "description": "<p>Net for the net launcher that grapples the target on hit. (See Black Chrome Pg. 20-21 for more details)</p>"
    },
    "Rocks": {
      "name": "Rocks",
      "description": "<p>Ammunition for the Nomad Rocker.</p>"
    }
  }
}

The same example file with updates can be seen here:

{
  "label": "Ammo",
  "mapping": {},
  "entries": {
    "Arasaka Acid": {
      "name": "Arasaka Acid",
      "description": "<p>Coating for Arasaka Weeping Reaver Katana only. Improves ablation effect.</p>\n"
    },
    "Arasaka Fire": {
      "name": "Arasaka Fire",
      "description": "<p>\n  Coating for Arasaka Weeping Reaver Katana only. Ignites target. Multiple\n  effects do not stack.\n</p>\n"
    },
    "Arasaka Wound Salt": {
      "name": "Arasaka Wound Salt",
      "description": "<p>\n  Coating for Arasaka Weeping Reaver Katana only. Adds a second critical injury.\n  No additional damage.\n</p>\n"
    },
    "Doberman 500 Marking Scent": {
      "name": "Doberman 500 Marking Scent",
      "description": "<p>\n  Unique form of ammunition for the Air Pistol. Provides specialized scent\n  marking on target.\n</p>\n"
    },
    "Grenade (Arachnid)": {
      "name": "Grenade (Arachnid)",
      "description": "<p>\n  A very sticky grenade. Creates a sticky web that entangles target. Must be\n  destroyed or be torn by anyone in melee range making a\n  <strong>DV 15 Brawling Check</strong>.\n</p>\n"
    },
    "Grenade (Security)": {
      "name": "Grenade (Security)",
      "description": "<p>Armor piercing Grenade. Deals damage to targets but not to cover.</p>\n"
    },
    "Grenade (Shuriken Tornado)": {
      "name": "Grenade (Shuriken Tornado)",
      "description": "<p>\n  A literal explosion of shurikens. Armor Piercing grenade. Each shuriken from\n  explosion deals individual damage.\n</p>\n"
    },
    "Net": {
      "name": "Net",
      "description": "<p>Net for the net launcher that grapples the target on hit.</p>\n<p>\n  On hit, grapples target. Target can escape with a\n  <strong>DV13 Contortionist Check</strong> (net victim only) or a\n  <strong>DV13 Brawling Check</strong> which can be attempted by anyone. Net can\n  also be destroyed.\n</p>\n"
    },
    "Rocks": {
      "name": "Rocks",
      "description": "<p>\n  Ammunition that can be used with the Nomad Rocker if of small enough size.\n  Ammunition is considered free and available if small rocks are able to be\n  collected in the area the user is in.\n</p>\n"
    }
  }
}

Could you please advise why Crowdin may have stopped being able to import these files?

Hi @Twiglet

Thank you for sharing the detailed explanation! I will check it with the tech team and get back to you as soon as I have any news,

I discovered the issue with imports failing. We had the wrong type listed in crowdin.yml left over from some old plugin experiments from a few months ago.

Unfortunately even after a Sync with 0 errors the source files don’t appear to have updated (see example files above).

@Twiglet Thank you for letting me know. That’s indeed an interesting case.

I’ve noticed that you have the Json-HTML transformer app installed. I believe the app is causing the faulty import. Can you please uninstall it and force a sync once again?

Looking for your reply,

That was the app/plugin we were testing back in November but we had to drop it’s usage due to it being buggy and not working with any complex files (JSON HTML Integration failing on certian files - #12 by NataliaS).

It should have been uninstalled by the project owner @Zyzyx back in November.

I can’t see the json-html (JSON HTML - Crowdin Marketplace) app installed anywhere in the project pages, not in Integrations, Tools, or Settings. It does not even show as an option in Settings > Parser Configuration:

Are you able to get this removed from the project for us? I don’t know how we can remove it if it’s not showing up for us.

@Twiglet

Already uninstalled it from our side.

Also, just FYI, the apps can be uninstalled by a project owner in Account settings → Apps

Thanks. Unfortunately running further syncs from gitlab is still not updating the source files in Crowdin (same examples in my first post).

Hello @Twiglet

I see a few errors about “invalid file that can’t be processed” from our end, but they are related to the translation_upload action for the en.json file for almost every language. Still, in our database, there’s nothing unexpected or suspicious about the source file update or upload.

It seems like after you have configured the process to auto-import translation from GitLab.

Would you have a chance to disable this option and observe the integration behavior after that?

Hi @Dima,

It appears the updated source files have imported correctly at some point overnight by the looks of it. Not sure if you did anything or it things just took a while. So for now everything looks good.

Thank you all for you help.

1 Like