For each - find, replace, then rebuild the file

Trying to pass a file through some APIs, then rebuild that file with updated data

Good day my fellow n8n folks! I turn to you once more for help with building this POC that I’m working on.
My goal is to:

  1. Fetch a file via a webhook
  2. Send that file through an API to convert it into a format I can work with (in this case an XLIFF file for translation)
  3. Parse the XML (XLIFF is more or less an XML file) into a JSON object
  4. Then for each item of text in the JSON object, get another API to translate the string.
  5. Store the translated string as a “target” and somehow get it back into the XML/XLIFF file.
  6. Send that XLIFF back into the conversion API to receive a fully translated document.
  7. Respond to webhook with the translated document or a link to S3 where the user can download it.

I can do most of these steps quite easily, but I’m stuck at the part where I have the translated segments, but don’t know how to replace the “target” section with a translated version.

This is my current prototype (only the files are being passed so far)

Output returned by the last node

[
    {
    "status": 200,
    "data": {
    "translation": "Das ist eine Word-Datei.",
    "billedCharacters": 18,
    "characters": 18,
    "billed": true
    }
},
    {
    "status": 200,
    "data": {
    "translation": "Bitte erwarten Sie eine vollständige MT-Übersetzung.",
    "billedCharacters": 42,
    "characters": 42,
    "billed": true
    }
}
]

Information on my n8n setup

  • n8n version: 0.188.0
  • Database you’re using: default: SQLite
  • Running n8n with the execution process: own
  • Running n8n via: Docker

I would kindly like to ask for help regarding how to take the translated strings I receive with the flow shared above, and inject them back into the original XLIFF file.

Thank you in advance for any advice.

Hey @Matija_Kovac,

Can you share the output of the XML to JSON node? That will give us the data you are trying to replace the values in.

Hey Jon, thanks so much for looking into this.

So here’s the output of the XML to JSON:

[
  {
    "xliff": {
      "xmlns": "urn:oasis:names:tc:xliff:document:1.2",
      "xmlns:its": "http://www.w3.org/2005/11/its",
      "xmlns:itsxlf": "http://www.w3.org/ns/its-xliff/",
      "xmlns:okp": "okapi-framework:xliff-extensions",
      "its:version": "2.0",
      "version": "1.2",
      "file": [
        {
          "datatype": "x-docx",
          "filter": "com.matecat.filters.DefaultFilter",
          "original": "test_mt.docx",
          "source-language": "en-GB",
          "target-language": "de-DE",
          "tool-id": "matecat-converter 1.3.14",
          "header": {
            "reference": {
              "internal-file": {
                "_": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0\nlMtuwjAQRfeV+g+Rt1Vi6KKqKgKLPpYtUukHGHsCVv2Sx7z+vhMCUVUBkQpsIiUz994zVsaD0dqabAkRtXcl6xc9loGTXmk3K9nX5C1/ZBkm4ZQw3kHJNoBsNLy9GUw2ATAjtcOSzVMKT5yjnIMVWPgA\njiqVj1Ykeo0zHoT8FjPg973eA5feJXApT7UHGw5eoBILk7LXNX1uSCIYZNlz01hnlUyEYLQUiep86dSflHyXUJBy24NzHfCOGhg/mFBXjgfsdB90NFEryMYipndhqYuvfFRcebmwpCxO2xzg9FWlJbT6\n2i1ELwGRztyaoq1Yod2e/ygHpo0BvDxF49sdDymR4BoAO+dOhBVMP69G8cu8E6Si3ImYGrg8RmvdCZFoA6F59s/m2NqciqTOcfQBaaPjP8ber2ytzmngADHp039dm0jWZ88H9W2gQB3I5tv7bfgDAAD/\n/wMAUEsDBBQABgAIAAAAIQAekRq37wAAAE4CAAALAAgCX3JlbHMvLnJlbHMgogQCKKAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArJLBasMw\nDEDvg/2D0b1R2sEYo04vY9DbGNkHCFtJTBPb2GrX/v082NgCXelhR8vS05PQenOcRnXglF3wGpZVDYq9Cdb5XsNb+7x4AJWFvKUxeNZw4gyb5vZm/cojSSnKg4tZFYrPGgaR+IiYzcAT5SpE9uWnC2ki\nKc/UYySzo55xVdf3mH4zoJkx1dZqSFt7B6o9Rb6GHbrOGX4KZj+xlzMtkI/C3rJdxFTqk7gyjWop9SwabDAvJZyRYqwKGvC80ep6o7+nxYmFLAmhCYkv+3xmXBJa/ueK5hk/Nu8hWbRf4W8bnF1B8wEA\nAP//AwBQSwMEFAAGAAgAAAAhAEcF2k9kAwAAYQ0AABEAAAB3b3JkL2RvY3VtZW50LnhtbMyXS2/jNhCA7wX6HwTdE0qW7ShC7MU2ThY5LGA0WfRMU5RFLB8CSb/66zukJMu72qaycilgmOJjvhnODIfS\nw6ej4MGeasOUXITxbRQGVBKVM7ldhN/enm/SMDAWyxxzJekiPFETflr+/tvDIcsV2QkqbQAIabJDRRZhaW2VIWRISQU2t4IRrYwq7C1RAqmiYISig9I5mkRx5J8qrQg1BvQ9YrnHJmxw5DiMlmt8AGEH\nnCJSYm3psWPEV0Nm6B6lfdBkBAh2OIn7qORq1Bw5q3qg6SgQWNUjzcaRfrG5+TjSpE+6G0dK+qR0HKmXTqKf4KqiEiYLpQW20NVbJLD+vqtuAFxhyzaMM3sCZjRvMZjJ7yMsAqkzQST51YQ7JFROeZK3\nFLUId1pmjfzNWd6ZntXyTXOWoHyYWlB3j+jRcmNbWT3Ed7X4qiks3mtIUw5+VNKUrDpXBzGWBpNlC9m/54C94O26QxUPPGr/VtpWdRg64BDzm9gJXlv+PjGOBkTTIc4SQ0z4UWdriYAM7hSPcs2Fc+OB\nxacFTHqAOaEDL4uWkTYMRLrT7Ths4LFqOXVUHId1jo0H1sCfjbkAmNzm5VWUSetX5GSxxSU250R3RHqdUbMz7iQufFRtP3YQvmi1qzoa+xjtpSuJB/dycgWrOVCXh9x8zJjXEldQKQXJXrZSabzhYBEc\njwAyPPARcP+QKK7xj/Tox12sA1djwiW8VW1UfnJtBXPTrMIav0BSxqvPafr8RxL6UbiTrB+Nnp5mqzncLIcM3uDyPxdhFE1Xk+RzdB5a0QLvuL2Y8fS1do2uG47lFtbvMZR3Km++vYZo+YCaadStHipy\nyPxLYWYqTMAJlaaG6j0Nl28lMwH83Epbr/8ZvEH+/9H4dpwaY0+c5u9p+S/u8i+IbVAwTm9/oDhn9KMzSdL4Mb53Tr+ITrJ6ilaPs+f3orPW/5+QLdecYshSeqwosQEOih3nwde3wGosTX0JB6oImP21\nTwxIrfXQzfotbV//hkm4imLwnk9jqHrxPE1SZ5tb8BU7olVwY8bTac1i29J23Y2yVomuz2lxMVtSnFPQexelrlsoZS+625313ahWRxQ3MNrkk1vjh+FD54t25zbjTNI1swSsTOZeCLX79o/14UXdt9Hy\nHwAAAP//AwBQSwMEFAAGAAgAAAAhANZks1H0AAAAMQMAABwACAF3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzIKIEASigAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArJLLasMwEEX3hf6D\nmH0tO31QQuRsSiHb1v0ARR4/qCwJzfThv69ISevQYLrwcq6Yc8+ANtvPwYp3jNR7p6DIchDojK971yp4qR6v7kEQa1dr6x0qGJFgW15ebJ7Qak5L1PWBRKI4UtAxh7WUZDocNGU+oEsvjY+D5jTGVgZt\nXnWLcpXndzJOGVCeMMWuVhB39TWIagz4H7Zvmt7ggzdvAzo+UyE/cP+MzOk4SlgdW2QFkzBLRJDnRVZLitAfi2Myp1AsqsCjxanAYZ6rv12yntMu/rYfxu+wmHO4WdKh8Y4rvbcTj5/oKCFPPnr5BQAA\n//8DAFBLAwQUAAYACAAAACEAtvRnmNIGAADJIAAAFQAAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbOxZS4sbRxC+B/IfhrnLes3oYaw10kjya9c23rWDj71Sa6atnmnR3dq1MIZgn3IJBJyQQwy55RBCDDHE\n5JIfY7BJnB+R6h5JMy31xI9dgwm7glU/vqr+uqq6ujRz4eL9mDpHmAvCko5bPVdxHZyM2JgkYce9fTAstVxHSJSMEWUJ7rgLLNyLO59/dgGdlxGOsQPyiTiPOm4k5ex8uSxGMIzEOTbDCcxNGI+RhC4P\ny2OOjkFvTMu1SqVRjhFJXCdBMai9MZmQEXYOlEp3Z6V8QOFfIoUaGFG+r1RjQ0Jjx9Oq+hILEVDuHCHacWGdMTs+wPel61AkJEx03Ir+c8s7F8prISoLZHNyQ/23lFsKjKc1LcfDw7Wg5/leo7vWrwFU\nbuMGzUFj0Fjr0wA0GsFOUy6mzmYt8JbYHChtWnT3m/161cDn9Ne38F1ffQy8BqVNbws/HAaZDXOgtOlv4f1eu9c39WtQ2mxs4ZuVbt9rGngNiihJplvoit+oB6vdriETRi9b4W3fGzZrS3iGKueiK5VP\nZFGsxege40MAaOciSRJHLmZ4gkaACxAlh5w4uySMIPBmKGEChiu1yrBSh//q4+mW9ig6j1FOOh0aia0hxccRI05msuNeBa1uDvLqxYuXj56/fPT7y8ePXz76dbn2ttxllIR5uTc/ffPP0y+dv3/78c2T\nb+14kce//uWr13/8+V/qpUHru2evnz979f3Xf/38xALvcnSYhx+QGAvnOj52brEYNmhZAB/y95M4iBDJS3STUKAEKRkLeiAjA319gSiy4HrYtOMdDunCBrw0v2cQ3o/4XBIL8FoUG8A9xmiPceuerqm1\n8laYJ6F9cT7P424hdGRbO9jw8mA+g7gnNpVBhA2aNym4HIU4wdJRc2yKsUXsLiGGXffIiDPBJtK5S5weIlaTHJBDI5oyocskBr8sbATB34Zt9u44PUZt6vv4yETC2UDUphJTw4yX0Fyi2MoYxTSP3EUy\nspHcX/CRYXAhwdMhpswZjLEQNpkbfGHQvQZpxu72PbqITSSXZGpD7iLG8sg+mwYRimdWziSJ8tgrYgohipybTFpJMPOEqD74ASWF7r5DsOHut5/t25CG7AGiZubcdiQwM8/jgk4Qtinv8thIsV1OrNHR\nm4dGaO9iTNExGmPs3L5iw7OZYfOM9NUIssplbLPNVWTGquonWECtpIobi2OJMEJ2H4esgM/eYiPxLFASI16k+frUDJkBXHWxNV7paGqkUsLVobWTuCFiY3+FWm9GyAgr1Rf2eF1ww3/vcsZA5t4HyOD3\nloHE/s62OUDUWCALmAMEVYYt3YKI4f5MRB0nLTa3yk3MQ5u5obxR9MQkeWsFtFH7+B+v9oEK49UPTy3Y06l37MCTVDpFyWSzvinCbVY1AeNj8ukXNX00T25iuEcs0LOa5qym+d/XNEXn+aySOatkzioZ\nu8hHqGSy4kU/Alo96NFa4sKnPhNC6b5cULwrdNkj4OyPhzCoO1po/ZBpFkFzuZyBCznSbYcz+QWR0X6EZrBMVa8QiqXqUDgzJqBw0sNW3WqCzuM9Nk5Hq9XVc00QQDIbh8JrNQ5lmkxHG83sAd5ave6F\n+kHrioCSfR8SucVMEnULieZq8C0k9M5OhUXbwqKl1Bey0F9Lr8Dl5CD1SNz3UkYQbhDSY+WnVH7l3VP3dJExzW3XLNtrK66n42mDRC7cTBK5MIzg8tgcPmVftzOXGvSUKbZpNFsfw9cqiWzkBpqYPecY\nzlzdBzUjNOu4E/jJBM14BvqEylSIhknHHcmloT8ks8y4kH0kohSmp9L9x0Ri7lASQ6zn3UCTjFu11lR7/ETJtSufnuX0V97JeDLBI1kwknVhLlVinT0hWHXYHEjvR+Nj55DO+S0EhvKbVWXAMRFybc0x\n4bngzqy4ka6WR9F435IdUURnEVreKPlknsJ1e00ntw/NdHNXZn+5mcNQOenEt+7bhdRELmkWXCDq1rTnj493yedYZXnfYJWm7s1c117luqJb4uQXQo5atphBTTG2UMtGTWqnWBDklluHZtEdcdq3wWbU\nqgtiVVfq3taLbXZ4DyK/D9XqnEqhqcKvFo6C1SvJNBPo0VV2uS+dOScd90HF73pBzQ9KlZY/KHl1r1Jq+d16qev79erAr1b6vdpDMIqM4qqfrj2EH/t0sXxvr8e33t3Hq1L73IjFZabr4LIW1u/uq7Xi\nd/cOAcs8aNSG7Xq71yi1691hyev3WqV20OiV+o2g2R/2A7/VHj50nSMN9rr1wGsMWqVGNQhKXqOi6LfapaZXq3W9Zrc18LoPl7aGna++V+bVvHb+BQAA//8DAFBLAwQUAAYACAAAACEAWw/FSwwEAACl\nCwAAEQAAAHdvcmQvc2V0dGluZ3MueG1stFbbbts4EH1fYP/B0PM6smTZTYU6hR3XmxTxdlFlsc+USNlEeANJ+dJi/32HlGg5TVEkLfJik3NmzgyHwxm9e3/gbLAj2lApZlFyMYoGRFQSU7GZRf/cr4aX\n0cBYJDBiUpBZdCQmen/1+2/v9rkh1oKaGQCFMDmvZtHWWpXHsam2hCNzIRURANZSc2RhqzcxR/qhUcNKcoUsLSmj9hino9E06mjkLGq0yDuKIaeVlkbW1pnksq5pRbq/YKGf47c1Wcqq4URY7zHWhEEM\nUpgtVSaw8Z9lA3AbSHY/OsSOs6C3T0bPOO5eanyyeE54zkBpWRFj4II4CwFS0TvOnhCdfF+A7+6IngrMk5FfnUc+eRlB+oRgWpHDyzguO44YLM95KH4Zz/TEQ/vEJtOfC+aMwGCLty9iSUNeY2eLLNoi\nc6oix0heFtTkRHfkfY4Me07VtNAdLTXS7ZvsSoZX+e1GSI1KBuFA6Qzg9gc+OvcLSXR/fkkOXu7yEF1Bj/giJR/sc0V0BQ8FGsxoFMUOgPKUdWGRBYrcKMKY7zgVI0i0GpjUqGH2HpWFlQq0dgiO8Sbt\nCKot0qiyRBcKVWB7LYXVkgU9LP+S9hq6jIZH0Fn4ntOvirZ/gYVAHA72qCetJYYGs88bTZ9/A87Ae08m5y6/dSSh32qKyb1LaGGPjKwg+IJ+IXOBPzbGUmD0nekXIvhRAEQ4z5+gBO6PiqwIsg2k6ZWc\n+ZtYMarWVGupbwWGSng1Z7SuiQYHFCprDeVDtdz7PN8QhGHMvZLfxpB/QRle4PgeyvJhIa2V/OaotpDrX7tJX+/xefnCsMYmLD5LaU+qo2yZjufdC3Ho95D4xMBzN7T+1mHlynDAW4trxEtN0WDtxlrs\nNEr9sKAi4CWB3kHOkaIpAzgctoDhiLEVJCQAPgCeY2rUktR+zdZIb3reTkN/Vwo94eOJy3UUov/UslEtutdIteUVVJIs6yypsHeUB7lpyiJYCeh2Z1Aj8Ked9nnq07PPLVyXf6Z3yF+71yViWNx2ZcF0\n4a6UrJFSbWWUm2QWMbrZ2sRdpoUdhq8fvyk3aYelHktbzG9Q5U4G2t2il6VBdqY3DrJxL8uCLOtlkyCb9LJpkE2dbAu9QEMbfoAiDUsnryVjck/wTY8/EbVJMFukyLLt21BeshV0jdwMdjk5wAwgmFr4\nqFQUc3RwIyGdOvNOm6GjbOwjXYc5ZfWYwY3L7lnGj4x9iX8Ti5snFYVyLI687MfEH23gjBp40gomipX6MZZkOZbVrRtxWSvPstX16vrNqoUnfhJZ/+rh3j+TeoEMwR0WTCet6df5cjxdzhfz4ejtcjHM\n3ibp8DIdj4bpPEmWH9JF9uEy/a97pOH7+up/AAAA//8DAFBLAwQUAAYACAAAACEA6d0ny4YLAAAPcwAADwAAAHdvcmQvc3R5bGVzLnhtbLydW3PbuhHH3zvT78DRU/uQyFc58RznjOMktad2jk/kNM8Q\nCVmoQULlxZd++gIgJUFeguKCW78k1mV/APHHf4nlTb/9/pzK6JHnhVDZ2Wj//d4o4lmsEpHdn41+3n1792EUFSXLEiZVxs9GL7wY/f7pr3/57em0KF8kLyINyIrTND4bLcpyeToeF/GCp6x4r5Y80x/O\nVZ6yUr/M78cpyx+q5btYpUtWipmQonwZH+ztTUYNJu9DUfO5iPkXFVcpz0obP8651ESVFQuxLFa0pz60J5Uny1zFvCj0Rqey5qVMZGvM/hEApSLOVaHm5Xu9MU2PLEqH7+/Zv1K5ARzjAAcAMIn5M47x\noWGMdaTLEQmOM1lzROJwwjrjAIqkTBYoysFqXMcmlpVswYqFS+S4Th2vcS+pGaM0Pr26z1TOZlKTtOqRFi6yYPOv3n7zn/2TP9v3zSaMPmkvJCr+wueskmVhXua3efOyeWX/+6aysoieTlkRC3GnO6hb\nSYVu8PI8K8RIf8JZUZ4XgrV+uDB/tH4SF6Xz9meRiNHYtFj8V3/4yOTZ6OBg9c6F6cHWe5Jl96v3ePZueuX2xL71c2remmnu2Yjl76bnJnDcbFj9v7O5y9evbMNLFgvbDpuXXNt8f7JnoFKYrHJw/HH1\n4kdlBp9VpWoasYD6/zV2DEZcu1/ngmmdkvSnfH6t4geeTEv9wdnItqXf/Hl1mwuV67RzNvpo29RvTnkqLkWS8Mz5YrYQCf+14NnPgieb9//8ZlNH80asqkz/fXgysbNAFsnX55gvTSLSn2bMaPLdBEjz\n7UpsGrfh/1nB9hsl2uIXnJlsHO2/RtjuoxAHJqJwtradWb3advstVEOHb9XQ0Vs1dPxWDU3eqqGTt2row1s1ZDH/z4ZElujEb78PmwHUXRyPG9Ecj9nQHI+X0ByPVdAcjxPQHM9ER3M88xjN8UxTBKdU\nsW8WOpP90DPbu7m79xFh3N27hDDu7j1AGHd3wg/j7s7vYdzd6TyMuzt7h3F3J2s8t15qRVfaZlk52GVzpcpMlTwq+fNwGss0y5aoNDyz0+M5yUYSYOrM1uyIB9NiZl/vniHWpOH789JUepGaR3NxX+W8\nGNxxnj1yqZY8YkmieYTAnJdV7hmRkDmd8znPeRZzyolNBzWVYJRV6Yxgbi7ZPRmLZwnx8K2IJElhPaF1/bwwJhEEkzplca6Gd00xsvxwLYrhY2Ug0edKSk7E+k4zxSxreG1gMcNLA4sZXhlYzPDCwNGM\naogaGtFINTSiAWtoRONWz0+qcWtoROPW0IjGraENH7c7UUqb4t1Vx37/Y3cXUpmTCoP7MRX3GdMLgOG7m+aYaXTLcnafs+UiMkel27HuNmPb+aySl+iOYp+2JlGt6+0UudBbLbJq+IBu0ajMteYR2WvN\nIzLYmjfcYjd6mWwWaJc09cy0mpWtprWkXqadMlnVC9rhbmPl8Bm2McA3kRdkNmjHEszg72Y5a+SkyHybXg7v2IY13FavsxJp9xokQS+lih9o0vDly5Lnuix7GEz6pqRUTzyhI07LXNVzzbX8gZWkl+W/\npssFK4StlbYQ/Xf1q8sRohu2HLxBt5KJjEa3r+9SJmREt4K4vLu5ju7U0pSZZmBogJ9VWaqUjNkcCfzbLz77O00Hz3URnL0Qbe050eEhC7sQBDuZmqQSIpJeZopMkOxDLe+f/GWmWJ7Q0G5zXl8BVHIi\n4pSly3rRQeAtnRefdP4hWA1Z3r9YLsxxISpT3ZHAnMOGRTX7N4+Hp7rvKiI5MvRHVdrjj3apa6PpcMOXCVu44UsEq6bePZj5S7CxW7jhG7uFo9rYC8mKQnhPoQbzqDZ3xaPe3uHFX8NTUuXzStIN4ApI\nNoIrINkQKlmlWUG5xZZHuMGWR729hFPG8ggOyVneP3KRkIlhYVRKWBiVDBZGpYGFkQow/AodBzb8Mh0HNvxanRpGtARwYFTzjHT3T3SWx4FRzTMLo5pnFkY1zyyMap4dfon4fK4XwXS7GAdJNeccJN2O\nJit5ulQ5y1+IkF8lv2cEB0hr2m2u5ubWEJXVF3ETIM0xakm42K5xVCL/4jOyrhkWZb8IjogyKZUiOra22eHYyO1r13aF2Ts5BnfhVrKYL5RMeO7ZJn+srpen9W0Zr7tvu9HrsOe1uF+U0XSxPtrvYiZ7\nOyNXBftW2O4G28Z8srqfpS3shieiSlcdhTdTTA77B9sZvRV8tDt4s5LYijzuGQnbnOyO3KyStyJPekbCNj/0jLQ+3Yrs8sMXlj+0ToSTrvmzrvE8k++kaxatg1ub7ZpI68i2KXjSNYu2rBKdx7E5WwDV\n6ecZf3w/8/jjMS7yUzB28lN6+8qP6DLYD/4ozJ4dkzRte+urJ0Det4voXpnzz0rVx+23Tjj1v6nrSi+csoJHrZzD/ieutrKMfxx7pxs/onfe8SN6JyA/olcm8oajUpKf0js3+RG9k5Qfgc5WcI+Ay1Yw\nHpetYHxItoKUkGw1YBXgR/ReDvgRaKNCBNqoA1YKfgTKqCA8yKiQgjYqRKCNChFoo8IFGM6oMB5nVBgfYlRICTEqpKCNChFoo0IE2qgQgTYqRKCNGri294YHGRVS0EaFCLRRIQJtVLteHGBUGI8zKowP\nMSqkhBgVUtBGhQi0USECbVSIQBsVItBGhQiUUUF4kFEhBW1UiEAbFSLQRq1vNQw3KozHGRXGhxgVUkKMCiloo0IE2qgQgTYqRKCNChFoo0IEyqggPMiokII2KkSgjQoRaKPak4UDjArjcUaF8SFGhZQQ\no0IK2qgQgTYqRKCNChFoo0IE2qgQgTIqCA8yKqSgjQoRaKNCRNf8bE5R+i6z38cf9fResd//1FXTqR/urdwu6rA/atUrP6v/vQiflXqIWm88PLT1Rj+ImEmh7CFqz2l1l2sviUCd+PzjovsOH5c+8KFL\nzb0Q9pwpgB/1jQTHVI66prwbCYq8o66Z7kaCVedRV/Z1I8Fu8Kgr6Vpfri5K0bsjENyVZpzgfU94V7Z2wuEQd+VoJxCOcFdmdgLhAHflYyfwODLJ+XX0cc9xmqyvLwWErunoEE78hK5pCbVapWNojL6i\n+Ql91fMT+sroJ6D09GLwwvpRaIX9qDCpoc2wUocb1U/ASg0JQVIDTLjUEBUsNUSFSQ0TI1ZqSMBKHZ6c/YQgqQEmXGqICpYaosKkhrsyrNSQgJUaErBSD9whezHhUkNUsNQQFSY1XNxhpYYErNSQgJUa\nEoKkBphwqSEqWGqICpMaVMloqSEBKzUkYKWGhCCpASZcaogKlhqiuqS2R1G2pEYp7ITjFmFOIG6H7ATikrMTGFAtOdGB1ZJDCKyWoFYrzXHVkiuan9BXPT+hr4x+AkpPLwYvrB+FVtiPCpMaVy21SR1u\nVD8BKzWuWvJKjauWOqXGVUudUuOqJb/UuGqpTWpctdQmdXhy9hOCpMZVS51S46qlTqlx1ZJfaly11CY1rlpqkxpXLbVJPXCH7MWES42rljqlxlVLfqlx1VKb1LhqqU1qXLXUJjWuWvJKjauWOqXGVUud\nUuOqJb/UuGqpTWpctdQmNa5aapMaVy15pcZVS51S46qlTqlx1dKNDhEEj4CapiwvI7rnxV2yYlGy4Q8n/JnlvFDykScR7aZeo7Zy/LT181eGbX+bT3+/1GNmnoDu3K6U1E+AbYD2i1fJ+meqTLDpSdT8\nIFjztu1wc7q2btEGwqbihW4rbp5d5WmqeQbt+iYq+wTa1w17HlRrO7KZgKtvN0O6Ga/6e1uj1dnv0kz4jj5bQ3SOUe0ZXwc/NklgVw91f2ay/sk0/cdVlmjAU/NzYXVPk2dWo/TnF1zKG1Z/Wy39X5V8\nXtaf7u/ZRxa8+nxWP33PG5/bNO0FjLc7U79sfrbNM9718/ib6we8U9LkopbhthezDB3pTd9WfxWf/gcAAP//AwBQSwMEFAAGAAgAAAAhAO8KKU5OAQAAfgMAABQAAAB3b3JkL3dlYlNldHRpbmdzLnht\nbJzTX2vCMBAA8PfBvkPJu6bKFClWYQzHXsZg2weI6dWGJbmSi6vu0+/aqXP4YveS//fjLiHz5c7Z5BMCGfS5GA1TkYDXWBi/ycX722owEwlF5Qtl0UMu9kBiubi9mTdZA+tXiJFPUsKKp8zpXFQx1pmU\npCtwioZYg+fNEoNTkadhI50KH9t6oNHVKpq1sSbu5ThNp+LAhGsULEuj4QH11oGPXbwMYFlET5Wp6ag112gNhqIOqIGI63H2x3PK+BMzuruAnNEBCcs45GIOGXUUh4/SbuTsLzDpB4wvgKmGXT9jdjAk\nR547pujnTE+OKc6c/yVzBlARi6qXMj7eq2xjVVSVoupchH5JTU7c3rV35HT2tPEY1NqyxK+e8MMlHdy2XH/bdUPYdettCWLBHwLraJz5ghWG+4ANQZDtsrIWm5fnR57IP79m8Q0AAP//AwBQSwMEFAAG\nAAgAAAAhAL8v13/vAQAAegYAABIAAAB3b3JkL2ZvbnRUYWJsZS54bWzck8GOmzAQhu+V+g7I9w2GhGyKlqzUdiNVqnqotg/gGAPWYht5nJC8fceGsJGilZYeelgOxv7H83nmxzw8nlQbHYUFaXRBkgUl\nkdDclFLXBfnzvLvbkAgc0yVrjRYFOQsgj9vPnx76vDLaQYT5GnLFC9I41+VxDLwRisHCdEJjsDJWMYdLW8eK2ZdDd8eN6piTe9lKd45TStdkxNj3UExVSS6+G35QQruQH1vRItFoaGQHF1r/HlpvbNlZ\nwwUA9qzagaeY1BMmWd2AlOTWgKncApsZKwooTE9omKn2FZDNA6Q3gDUXp3mMzciIMfOaI8t5nPXEkeUV59+KuQJA6cpmFiW9+Br7XOZYw6C5Jop5RWUT7qy8R4rnP2ptLNu3SMKvHuGHiwLYj9i/f4Wp\nOAXdt0C2468Q9blmCjO/sVburQyBjmkDIsHYkbUFwR52NKO+l5Su6NKPJPYbecMsCA8ZNtJBrpiS7fmiQi8BhkAnHW8u+pFZ6aseQiBrDBxgTwvytKI0fdrtyKAkWB1FZXX/dVRSf1Z4vozKclKoV3jg\nhGUycHjgTHvwzHhw4MaJZ6kERL9EH/02iuk3HEnpGp3I0A/vzHKWIzZwZzni+79x5H6T/RdHxrsR/ZR14968If5efNAbMk5g+xcAAP//AwBQSwMEFAAGAAgAAAAhAK8LBhRvAQAA+QIAABEACAFkb2NQ\ncm9wcy9jb3JlLnhtbCCiBAEooAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJySUU+DMBDH3038DqTv0MISMwmwRM2eXGIiRuNbbW9bHbRN243x7S2wMYl78u2u97v/Xf9ttjjWVXAAY4WSOYoj\nggKQTHEhNzl6K5fhHAXWUclppSTkqAWLFsXtTcZ0ypSBF6M0GCfABl5J2pTpHG2d0ynGlm2hpjbyhPTFtTI1dT41G6wp29EN4ISQO1yDo5w6ijvBUI+K6CTJ2Sip96bqBTjDUEEN0lkcRzG+sA5Mba82\n9JVfZC1cq+Eqei6O9NGKEWyaJmpmPer3j/HH6vm1v2ooZOcVA1RknKVOuAqKDF9CH9n91zcwNxyPiY+ZAeqUKUoqaFAaKm1FnX8V25Pnauf7DtpGGW69xiTzGAfLjNBd3zBhcuDpilq38s+7FsAf2mvD\n/kJdn4GD6P5IEffEmGYnw4cFgQfeqHSw9Vx5nz0+lUtUJCRJQjIP43lJ7tMkSQn57Hac9F8E69MC/1Y8Cww2TT9r8QMAAP//AwBQSwMEFAAGAAgAAAAhAJPtA69tAQAAwwIAABAACAFkb2NQcm9wcy9h\ncHAueG1sIKIEASigAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnFLLbsIwELxX6j9EuYNDpSKKFqMKVPXQl0SAs+VsEquObdkGwd93Q0qaqrfmtDO7O5qdGJanRidH9EFZs0gn4yxN0EhbKFMt\n0m3+NJqlSYjCFEJbg4v0jCFd8tsb+PDWoY8KQ0ISJizSOkY3ZyzIGhsRxtQ21Cmtb0Qk6Ctmy1JJXFt5aNBEdpdlU4aniKbAYuR6wbRTnB/jf0ULK1t/YZefHelxyLFxWkTkb+2mBtYTkNsodK4a5BnR\nPYAPUWHgE2BdAXvrC8I01FWwqoUXMlJ2/P4B2ADCo3NaSREpVP6qpLfBljF5vzhN2nVgwxEg9xuUB6/iuXUxhPCiTOejK8iXF5UXrv421yPYSKFxRXfzUuiAwH4IWNnGCUNyrK9I7zNsXW7XbQ7fK7/J\nwY17FeuNE5IsTGfDawcN2BCLBdnvHfQEPNOv8LqVp11TYXGd+dto89t1b5JPpuOMvktgV47O7h8L/wIAAP//AwBQSwECLQAUAAYACAAAACEA36TSbFoBAAAgBQAAEwAAAAAAAAAAAAAAAAAAAAAAW0Nv\nbnRlbnRfVHlwZXNdLnhtbFBLAQItABQABgAIAAAAIQAekRq37wAAAE4CAAALAAAAAAAAAAAAAAAAAJMDAABfcmVscy8ucmVsc1BLAQItABQABgAIAAAAIQBHBdpPZAMAAGENAAARAAAAAAAAAAAAAAAA\nALMGAAB3b3JkL2RvY3VtZW50LnhtbFBLAQItABQABgAIAAAAIQDWZLNR9AAAADEDAAAcAAAAAAAAAAAAAAAAAEYKAAB3b3JkL19yZWxzL2RvY3VtZW50LnhtbC5yZWxzUEsBAi0AFAAGAAgAAAAhALb0\nZ5jSBgAAySAAABUAAAAAAAAAAAAAAAAAfAwAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbFBLAQItABQABgAIAAAAIQBbD8VLDAQAAKULAAARAAAAAAAAAAAAAAAAAIETAAB3b3JkL3NldHRpbmdzLnhtbFBL\nAQItABQABgAIAAAAIQDp3SfLhgsAAA9zAAAPAAAAAAAAAAAAAAAAALwXAAB3b3JkL3N0eWxlcy54bWxQSwECLQAUAAYACAAAACEA7wopTk4BAAB+AwAAFAAAAAAAAAAAAAAAAABvIwAAd29yZC93ZWJT\nZXR0aW5ncy54bWxQSwECLQAUAAYACAAAACEAvy/Xf+8BAAB6BgAAEgAAAAAAAAAAAAAAAADvJAAAd29yZC9mb250VGFibGUueG1sUEsBAi0AFAAGAAgAAAAhAK8LBhRvAQAA+QIAABEAAAAAAAAAAAAA\nAAAADicAAGRvY1Byb3BzL2NvcmUueG1sUEsBAi0AFAAGAAgAAAAhAJPtA69tAQAAwwIAABAAAAAAAAAAAAAAAAAAtCkAAGRvY1Byb3BzL2FwcC54bWxQSwUGAAAAAAsACwDBAgAAVywAAAAA",
                "form": "base64"
              }
            }
          },
          "body": ""
        },
        {
          "datatype": "x-rkm",
          "filter": "com.matecat.filters.DefaultFilter",
          "original": "manifest.rkm",
          "source-language": "en-GB",
          "target-language": "de-DE",
          "tool-id": "matecat-converter 1.3.14",
          "header": {
            "reference": {
              "internal-file": {
                "_": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+Cjwh\nLS1QTEVBU0UsIERPIE5PVCBSRU5BTUUsIE1PVkUsIE1PRElGWSBPUiBBTFRFUiBJTiBBTlkgV0FZIFRISVMgRklMRS0tPgo8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09\nPT09PT09PT09PT09PT09PT09PT09PT09PT0tLT4KPG1hbmlmZXN0IHZlcnNpb249IjIiIGxpYlZlcnNpb249IjEuNDAuNC1UUkFOU0xBVEVEIiBwcm9qZWN0SWQ9Ik5FMTE3OUYwNyIgcGFja2FnZUlk\nPSI5OTY3YmMxMC1hYTY0LTQ0M2MtYTA0My03N2QwMmM1MjZlODciIHNvdXJjZT0iZW4tR0IiIHRhcmdldD0iZGUtREUiIG9yaWdpbmFsU3ViRGlyPSJvcmlnaW5hbCIgc2tlbGV0b25TdWJEaXI9InNr\nZWxldG9uIiBzb3VyY2VTdWJEaXI9IndvcmsiIHRhcmdldFN1YkRpcj0id29yayIgbWVyZ2VTdWJEaXI9ImRvbmUiIHRtU3ViRGlyPSIiIGRhdGU9IjIwMjMtMDEtMTkgMTU6MTI6MDArMDAwMCIgdXNl\nQXBwcm92ZWRPbmx5PSIwIiB1cGRhdGVBcHByb3ZlZEZsYWc9IjAiPgo8Y3JlYXRvclBhcmFtZXRlcnM+STNZeENuQnNZV05sYUc5c1pHVnlUVzlrWlM1aVBYUnlkV1VLYVc1amJIVmtaVTV2VkhKaGJu\nTnNZWFJsTG1JOWRISjFaUXB6WlhSQmNIQnliM1psWkVGelRtOVVjbUZ1YzJ4aGRHVXVZajFtWVd4elpRcGpiM0I1VTI5MWNtTmxMbUk5ZEhKMVpRcHBibU5zZFdSbFFXeDBWSEpoYm5NdVlqMTBjblZs\nQ21sdVkyeDFaR1ZEYjJSbFFYUjBjbk11WWoxbVlXeHpaUXBwYm1Oc2RXUmxTWFJ6TG1JOWRISjFaUXBsYzJOaGNHVkhWQzVpUFhSeWRXVT08L2NyZWF0b3JQYXJhbWV0ZXJzPgo8ZG9jIHhtbDpzcGFj\nZT0icHJlc2VydmUiIGRvY0lkPSIxIiBleHRyYWN0aW9uVHlwZT0ieGxpZmYiIHJlbGF0aXZlSW5wdXRQYXRoPSJ0ZXN0X210LmRvY3giIGZpbHRlcklkPSJva2Zfb3BlbnhtbCIgaW5wdXRFbmNvZGlu\nZz0iVVRGLTgiIHJlbGF0aXZlVGFyZ2V0UGF0aD0idGVzdF9tdC5vdXQuZG9jeCIgdGFyZ2V0RW5jb2Rpbmc9IlVURi04IiBzZWxlY3RlZD0iMSI+STNZeENtSlFjbVZtWlhKbGJtTmxWSEpoYm5Oc1lY\nUmxSRzlqVUhKdmNHVnlkR2xsY3k1aVBXWmhiSE5sQ21KUWNtVm1aWEpsYm1ObFZISmhibk5zWVhSbFEyOXRiV1Z1ZEhNdVlqMW1ZV3h6WlFwaVVISmxabVZ5Wlc1alpWUnlZVzV6YkdGMFpWQnZkMlZ5\nY0c5cGJuUk9iM1JsY3k1aVBYUnlkV1VLWWxCeVpXWmxjbVZ1WTJWVWNtRnVjMnhoZEdWUWIzZGxjbkJ2YVc1MFRXRnpkR1Z5Y3k1aVBXWmhiSE5sQ21KUWNtVm1aWEpsYm1ObFNXZHViM0psVUd4aFky\nVm9iMnhrWlhKelNXNVFiM2RsY25CdmFXNTBUV0Z6ZEdWeWN5NWlQV1poYkhObENtSlFjbVZtWlhKbGJtTmxWSEpoYm5Oc1lYUmxWMjl5WkVobFlXUmxjbk5HYjI5MFpYSnpMbUk5ZEhKMVpRcGlVSEps\nWm1WeVpXNWpaVlJ5WVc1emJHRjBaVmR2Y21SSWFXUmtaVzR1WWoxbVlXeHpaUXBpVUhKbFptVnlaVzVqWlZSeVlXNXpiR0YwWlZkdmNtUkZlR05zZFdSbFIzSmhjR2hwWTAxbGRHRkVZWFJoTG1JOWRI\nSjFaUXBpVUhKbFptVnlaVzVqWlZSeVlXNXpiR0YwWlZCdmQyVnljRzlwYm5SSWFXUmtaVzR1WWoxbVlXeHpaUXBpVUhKbFptVnlaVzVqWlZSeVlXNXpiR0YwWlVWNFkyVnNTR2xrWkdWdUxtSTlabUZz\nYzJVS1lsQnlaV1psY21WdVkyVlVjbUZ1YzJ4aGRHVkZlR05sYkVWNFkyeDFaR1ZEYjJ4dmNuTXVZajFtWVd4elpRcGlVSEpsWm1WeVpXNWpaVlJ5WVc1emJHRjBaVVY0WTJWc1JYaGpiSFZrWlVOdmJI\nVnRibk11WWoxbVlXeHpaUXBpVUhKbFptVnlaVzVqWlZSeVlXNXpiR0YwWlVWNFkyVnNVMmhsWlhST1lXMWxjeTVpUFdaaGJITmxDbUpRY21WbVpYSmxibU5sUVdSa1RHbHVaVk5sY0dGeVlYUnZja0Z6\nUTJoaGNtRmpkR1Z5TG1JOVptRnNjMlVLYzFCeVpXWmxjbVZ1WTJWTWFXNWxVMlZ3WVhKaGRHOXlVbVZ3YkdGalpXMWxiblE5SkRCaEpBcGlVSEpsWm1WeVpXNWpaVkpsY0d4aFkyVk9iMEp5WldGclNI\nbHdhR1Z1VkdGbkxtSTlkSEoxWlFwaVVISmxabVZ5Wlc1alpVbG5ibTl5WlZOdlpuUkllWEJvWlc1VVlXY3VZajEwY25WbENtSlFjbVZtWlhKbGJtTmxRV1JrVkdGaVFYTkRhR0Z5WVdOMFpYSXVZajEw\nY25WbENtSlFjbVZtWlhKbGJtTmxRV2RuY21WemMybDJaVU5zWldGdWRYQXVZajEwY25WbENtSlFjbVZtWlhKbGJtTmxRWFYwYjIxaGRHbGpZV3hzZVVGalkyVndkRkpsZG1semFXOXVjeTVpUFdaaGJI\nTmxDbUpRY21WbVpYSmxibU5sVUc5M1pYSndiMmx1ZEVsdVkyeDFaR1ZrVTJ4cFpHVk9kVzFpWlhKelQyNXNlUzVpUFdaaGJITmxDbUpRY21WbVpYSmxibU5sVkhKaGJuTnNZWFJsUlhoalpXeEVhV0Zu\nY21GdFJHRjBZUzVpUFdaaGJITmxDbUpRY21WbVpYSmxibU5sVkhKaGJuTnNZWFJsUlhoalpXeEVjbUYzYVc1bmN5NWlQV1poYkhObENuTjFZbVpwYkhSbGNqMEtZa2x1UlhoamJIVmtaVTF2WkdVdVlq\nMTBjblZsQ21KSmJrVjRZMngxWkdWSWFXZG9iR2xuYUhSTmIyUmxMbUk5ZEhKMVpRcGlVSEpsWm1WeVpXNWpaVlJ5WVc1emJHRjBaVmR2Y21SRmVHTnNkV1JsUTI5c2IzSnpMbUk5Wm1Gc2MyVUtZbEps\nYjNKa1pYSlFiM2RsY25CdmFXNTBUbTkwWlhOQmJtUkRiMjF0Wlc1MGN5NWlQV1poYkhObENtOTFkSEIxZEZObFoyMWxiblJoZEdsdmJsUjVjR1V1YVQwekNuUnpRMjl0Y0d4bGVFWnBaV3hrUkdWbWFX\nNXBkR2x2Ym5OVWIwVjRkSEpoWTNRdWFUMHhDbU5tWkRBOVNGbFFSVkpNU1U1TENuUnpSWGhqWld4RmVHTnNkV1JsWkVOdmJHOXljeTVwUFRBS2RITkZlR05sYkVWNFkyeDFaR1ZrUTI5c2RXMXVjeTVw\nUFRBS2RITkZlR05zZFdSbFYyOXlaRk4wZVd4bGN5NXBQVEFLZEhOWGIzSmtTR2xuYUd4cFoyaDBRMjlzYjNKekxtazlNQXAwYzFkdmNtUkZlR05zZFdSbFpFTnZiRzl5Y3k1cFBUQUtkSE5RYjNkbGNu\nQnZhVzUwU1c1amJIVmtaV1JUYkdsa1pVNTFiV0psY25NdWFUMHc8L2RvYz4KPC9tYW5pZmVzdD4=",
                "form": "base64"
              }
            }
          },
          "body": ""
        },
        {
          "datatype": "x-undefined",
          "original": "word/document.xml",
          "source-language": "en-GB",
          "target-language": "de-DE",
          "body": {
            "trans-unit": [
              {
                "id": "NFDBB2FA9-tu1",
                "xml:space": "preserve",
                "source": {
                  "_": "This is Word file.",
                  "xml:lang": "en-GB",
                  "g": {
                    "_": "styled ",
                    "id": "1"
                  }
                },
                "seg-source": {
                  "mrk": {
                    "_": "This is Word file.",
                    "mid": "0",
                    "mtype": "seg",
                    "g": {
                      "_": "styled ",
                      "id": "1"
                    }
                  }
                },
                "target": {
                  "xml:lang": "de-DE",
                  "mrk": {
                    "_": "This is Word file.",
                    "mid": "0",
                    "mtype": "seg",
                    "g": {
                      "_": "styled ",
                      "id": "1"
                    }
                  }
                }
              },
              {
                "id": "NFDBB2FA9-tu2",
                "xml:space": "preserve",
                "source": {
                  "_": "Please expect a full MT translation of it.",
                  "xml:lang": "en-GB"
                },
                "seg-source": {
                  "mrk": {
                    "_": "Please expect a full MT translation of it.",
                    "mid": "0",
                    "mtype": "seg"
                  }
                },
                "target": {
                  "xml:lang": "de-DE",
                  "mrk": {
                    "_": "Please expect a full MT translation of it.",
                    "mid": "0",
                    "mtype": "seg"
                  }
                }
              }
            ]
          }
        },
        {
          "datatype": "x-undefined",
          "original": "word/settings.xml",
          "source-language": "en-GB",
          "target-language": "de-DE",
          "body": "\n"
        }
      ]
    }
  }
]

I then proceed splitting the xliff.file.2.body.trans-unit to items, to get this:

[
  {
    "id": "NFDBB2FA9-tu1",
    "xml:space": "preserve",
    "source": {
      "_": "This is Word file.",
      "xml:lang": "en-GB",
      "g": {
        "_": "styled ",
        "id": "1"
      }
    },
    "seg-source": {
      "mrk": {
        "_": "This is Word file.",
        "mid": "0",
        "mtype": "seg",
        "g": {
          "_": "styled ",
          "id": "1"
        }
      }
    },
    "target": {
      "xml:lang": "de-DE",
      "mrk": {
        "_": "This is Word file.",
        "mid": "0",
        "mtype": "seg",
        "g": {
          "_": "styled ",
          "id": "1"
        }
      }
    }
  },
  {
    "id": "NFDBB2FA9-tu2",
    "xml:space": "preserve",
    "source": {
      "_": "Please expect a full MT translation of it.",
      "xml:lang": "en-GB"
    },
    "seg-source": {
      "mrk": {
        "_": "Please expect a full MT translation of it.",
        "mid": "0",
        "mtype": "seg"
      }
    },
    "target": {
      "xml:lang": "de-DE",
      "mrk": {
        "_": "Please expect a full MT translation of it.",
        "mid": "0",
        "mtype": "seg"
      }
    }
  }
]

Which allows me to grab my “target” segments with {{$json["target"]["mrk"]["_"]}} and send them to the machine translation.

I’m at a loss though on how to get these back into the original XLIFF.

Thanks for helping me out!

Hey @Jon
sorry to bother here, was just wondering if you have any pointers to show me the right path?
Patiently hoping for help here :slight_smile:

Hey @Matija_Kovac,

Sadly I have not had time to take another look at this one, I will try and fit it in this week though.

Hey @Jon, no worries, I’m not in a hurry here. Thanks for helping out!

Hi @Jon,
I was hoping you might have found the time to look into this and help me figure out how to approach this?

Hey @Matija_Kovac,

Just checked my notes and it looks like I started checking it and realised it is going to be a bit more than a quick 10 minute thing to work out so I need to aside some proper time and get a test account created with the translation service you are using.

Hi Jon,

I understand. Perhaps you can ignore the translation service entirely, or use any you already have set up, as my main question is how to insert the translated data back into the xml/xliff file. So in essence, maybe we could just set a string using the Set node at this PoC stage, if it saves you some trouble.

Thanks again for taking the time!

Hi Jon,

In the meantime I tried a ton of other approaches, like trying to submit the entire xliff to one of the MT APIs out there, but even that never worked for me. If you ever happen to find a couple of minutes to look into this, that would be totally awesome.

Here are my findings:

  • Google translate does not support full Xliff files
  • DeepL is supposed to support them but only V2.1, which is not a very common xliff format and some restructuring is required. I tried to write a script to convert 1.2. to 2.1 but was not entirely successful.
  • ModernMT is supposed to accept whole Xliff files but is limited in request size, also the documentation does not state if the file should be submitted as Base64, text or binary.
1 Like

Hey @Matija_Kovac,

It is still on my list of things but as it is more of a how to than an issue it is a bit lower down on it, It is going to be a case of using the code node to loop over everything to do the swapping.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.