{
  "version": 3,
  "sources": ["/cdn/shop/t/4/assets/mk-translate.js?nc=1792663713811"],
  "sourcesContent": ["/* MelkyPro \u2014 traduit en fran\u00E7ais les textes anglais du site (avis Judge.me compris).\n   1. Les avis connus sont traduits avec le dictionnaire ci-dessous (traductions relues, instantan\u00E9es).\n   2. Les nouveaux avis anglais sont traduits par le traducteur int\u00E9gr\u00E9 du navigateur, s'il est disponible.\n   Pour ajouter une traduction : copie le texte anglais exact \u00E0 gauche et sa traduction \u00E0 droite. */\n(() => {\n  const config = window.mkTranslate || {};\n\n  /* Avis clients : une ligne d'avis = une entr\u00E9e */\n  const REVIEWS = {\n    \"Works perfectly already..although u would need something to keep the heads but it's absolutely fine \uD83D\uDE42\":\n      \"Fonctionne d\u00E9j\u00E0 parfaitement\u2026 il faudrait juste quelque chose pour ranger les embouts, mais c'est absolument parfait \uD83D\uDE42\",\n    \"The irrigator works and does its job. But it's not a Karcher... I suppose the irrigator is for removing food between the teeth and for that purpose it works well.\":\n      \"L'hydropulseur fonctionne et fait son travail. Mais ce n'est pas un K\u00E4rcher\u2026 Je suppose qu'il sert \u00E0 retirer les restes d'aliments entre les dents, et pour \u00E7a il marche bien.\",\n    \"The description is good, and the device has been working well so far.\":\n      \"La description est fid\u00E8le, et l'appareil fonctionne bien jusqu'\u00E0 pr\u00E9sent.\",\n    \"Very nice but not too strong yet cheap so I recommend\":\n      \"Tr\u00E8s bien, pas trop puissant mais pas cher, donc je recommande\",\n    \"It works very well, my daughter is delighted!!!\":\n      \"Il fonctionne tr\u00E8s bien, ma fille est ravie !!!\",\n    \"Not very powerful, but it does the job.\":\n      \"Pas tr\u00E8s puissant, mais il fait le travail.\",\n    \"Very good looking. As big as any other water irrigator with the inconvenience of having to detach and attach the water tank everytime you use the irrigator. I keep it as a back up of my normal other irrigator\":\n      \"Tr\u00E8s joli. Aussi grand que n'importe quel autre hydropulseur, avec l'inconv\u00E9nient de devoir d\u00E9tacher et remettre le r\u00E9servoir \u00E0 chaque utilisation. Je le garde en secours de mon hydropulseur habituel.\",\n    \"Easy to use, works well, my gums look and feel well cleaned\":\n      \"Facile \u00E0 utiliser, fonctionne bien, mes gencives sont visiblement propres et je les sens bien nettoy\u00E9es\",\n    \"Thanks, all perfect. will buy again\":\n      \"Merci, tout est parfait. J'en rach\u00E8terai.\",\n    \"Has a very powerful oral cleaning speed that cleans like nothing else, at a good price to boot. highly recommend it!!\":\n      \"Un nettoyage buccal tr\u00E8s puissant, qui nettoie comme rien d'autre, et \u00E0 bon prix en plus. Je le recommande vivement !!\",\n    \"It has a good appearance, with accessories and a charging cable with a jack-to-USB connector (a mobile charger is needed). We will see its effectiveness and durability over time.\":\n      \"Il a une belle apparence, avec des accessoires et un c\u00E2ble de charge jack vers USB (il faut un chargeur de t\u00E9l\u00E9phone). On verra son efficacit\u00E9 et sa durabilit\u00E9 avec le temps.\",\n    \"exactly as described.\":\n      \"Exactement comme d\u00E9crit.\",\n    \"works well, withstands pressure as described in the advertisement, I am satisfied, the product is good, I recommend buying it...\":\n      \"Fonctionne bien, la pression est conforme \u00E0 l'annonce, je suis satisfait, le produit est bon, je recommande l'achat\u2026\",\n    \"It does its job correctly, let's hope it lasts.\":\n      \"Il fait correctement son travail, esp\u00E9rons qu'il dure.\",\n    \"Good little machine at great price.\":\n      \"Bonne petite machine \u00E0 un super prix.\",\n    \"IT WORKS PERFECTLY. IT IS PORTABLE SO THE TANK IS SMALL BUT IT HAS ENOUGH POWER TO CLEAN. AND IT IS RECHARGEABLE.\":\n      \"IL FONCTIONNE PARFAITEMENT. IL EST PORTABLE DONC LE R\u00C9SERVOIR EST PETIT, MAIS IL A ASSEZ DE PUISSANCE POUR NETTOYER. ET IL EST RECHARGEABLE.\",\n    \"Powerful and precise with four nozzles, it works very well and cleans effectively, highly recommended!\":\n      \"Puissant et pr\u00E9cis avec quatre embouts, il fonctionne tr\u00E8s bien et nettoie efficacement, je le recommande vivement !\",\n    \"everything is fine\":\n      \"Tout va bien\",\n    \"Very good it works fine, plenty of water pressure.\":\n      \"Tr\u00E8s bien, il fonctionne bien, beaucoup de pression d'eau.\",\n    \"It would improve the tips that look weak, but overall it looks very good and meets expectations.\":\n      \"Les embouts m\u00E9riteraient d'\u00EAtre am\u00E9lior\u00E9s, ils semblent fragiles, mais dans l'ensemble il a l'air tr\u00E8s bien et r\u00E9pond aux attentes.\",\n    \"very good, I recommend it\":\n      \"Tr\u00E8s bien, je le recommande\",\n    \"Works well \uD83D\uDE01\":\n      \"Fonctionne bien \uD83D\uDE01\",\n    \"a single button so you have to press it several times with the machine in your mouth until you reach the desired point, small cup high pressure\":\n      \"Un seul bouton, donc il faut appuyer plusieurs fois avec l'appareil en bouche jusqu'au r\u00E9glage voulu ; petit r\u00E9servoir, forte pression\",\n    \"Very good definitely worth buying\":\n      \"Tr\u00E8s bien, \u00E7a vaut vraiment le coup\",\n    \"Excellent device, good price, highly recommend purchasing it.\":\n      \"Excellent appareil, bon prix, je recommande vivement de l'acheter.\",\n    \"It has a lot of power to pump water, you need to know how to use it. Really good.\":\n      \"Il a beaucoup de puissance pour propulser l'eau, il faut savoir l'utiliser. Vraiment bien.\",\n    \"Very good quality, easy to use and clean. Practical to use. Recommended\":\n      \"Tr\u00E8s bonne qualit\u00E9, facile \u00E0 utiliser et \u00E0 nettoyer. Pratique. Recommand\u00E9\",\n    \"I am very happy with this item. I'm ordering it for the fifth time as a gift.\":\n      \"Je suis tr\u00E8s content de cet article. Je le commande pour la cinqui\u00E8me fois, pour l'offrir.\",\n    \"to delivery person: Thank you very much, good job.\":\n      \"Au livreur : merci beaucoup, bon travail.\",\n    \"Excellent, good quality materials\":\n      \"Excellent, mat\u00E9riaux de bonne qualit\u00E9\",\n    \"It meets its quality/price ratio expectations.\":\n      \"Il est \u00E0 la hauteur de son rapport qualit\u00E9/prix.\",\n    \"good quality\":\n      \"Bonne qualit\u00E9\",\n    \"Super powerful!! More than expected. Works great!!!\":\n      \"Super puissant !! Plus que pr\u00E9vu. Fonctionne tr\u00E8s bien !!!\",\n    \"I have tried it and it has quite a bit of pressure, very good product with a good quality-price ratio.\":\n      \"Je l'ai essay\u00E9 et il a pas mal de pression, tr\u00E8s bon produit avec un bon rapport qualit\u00E9-prix.\",\n    \"Good product, delivery times met, and reliability in purchase.\":\n      \"Bon produit, d\u00E9lais respect\u00E9s et achat fiable.\",\n    \"Useful and easy to use. Also, very effective.\":\n      \"Utile et facile \u00E0 utiliser. Et tr\u00E8s efficace.\",\n    \"Good pressure, compact and easy to use. I recommend something obvious, washing the container since it has an intense new smell that disappears over time.\":\n      \"Bonne pression, compact et facile \u00E0 utiliser. Un conseil \u00E9vident : lavez le r\u00E9servoir, il a une forte odeur de neuf qui dispara\u00EEt avec le temps.\",\n    \"Excellent product. Deep cleaning.\":\n      \"Excellent produit. Nettoyage en profondeur.\",\n    \"It doesn't apply pressure, it's not suitable for use.\":\n      \"Il n'a pas de pression, il n'est pas utilisable.\",\n    \"Not tested yet, but the product is as described and very nice.\":\n      \"Pas encore test\u00E9, mais le produit est conforme \u00E0 la description et tr\u00E8s joli.\",\n\n    /* Avis ajout\u00E9s le 22/10/2026 (anglais, portugais, espagnol, italien, russe, arabe) */\n    \"Very nice\": \"Tr\u00E8s bien\",\n    \"fantastic highly recommend\": \"Fantastique, je le recommande vivement\",\n    \"good\": \"Bien\",\n    \"Definitely powerful, Does what it\u2019s intended and doesn\u2019t disappoint in the water strength. Different modes and intensity as well.\":\n      \"Vraiment puissant, il fait ce qu'on attend de lui et ne d\u00E9\u00E7oit pas c\u00F4t\u00E9 puissance du jet. Plusieurs modes et intensit\u00E9s en plus.\",\n    \"This work like my expensive one \u2026 great little portable dental tool\":\n      \"Il fonctionne aussi bien que mon mod\u00E8le cher\u2026 super petit appareil dentaire portable\",\n    \"Perfect tool for water flossing.\":\n      \"L'outil parfait pour nettoyer entre les dents avec un jet d'eau.\",\n    \"Works great, has a lot of tops to change, nice quality\":\n      \"Fonctionne tr\u00E8s bien, beaucoup d'embouts \u00E0 changer, belle qualit\u00E9\",\n    \"Produto excelente, conforme especificado! Chegou antes do prazo previsto e muito bem embalado! Recomendo!\":\n      \"Produit excellent, conforme \u00E0 la description ! Arriv\u00E9 plus t\u00F4t que pr\u00E9vu et tr\u00E8s bien emball\u00E9 ! Je recommande !\",\n    \"Eu ameiii! Limpa muito bem e \u00E9 super f\u00E1cil de usar, veio tudo certo! Indico!!\":\n      \"J'ai ador\u00E9 ! Il nettoie tr\u00E8s bien et il est super facile \u00E0 utiliser, tout est arriv\u00E9 en bon \u00E9tat ! Je recommande !!\",\n    \"mto bom\": \"Tr\u00E8s bien\",\n    \"Estupendo\": \"Formidable\",\n    \"Stupendo\": \"Formidable\",\n    \"Super excelente! No duden en comprarlo!\": \"Super excellent ! N'h\u00E9sitez pas \u00E0 l'acheter !\",\n    \"\u0421\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043E\u043F\u0438\u0441\u0430\u043D\u0438\u044E.\u0422\u0430\u043A \u0436\u0435 \u0431\u044B\u0441\u0442\u0440\u0430\u044F \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0430.\u041D\u0430\u043F\u043E\u0440 \u0432\u043E\u0434\u044B \u0445\u043E\u0440\u043E\u0448\u0438\u0439,\u043D\u043E \u043E\u0447\u0435\u043D\u044C \u0431\u044B\u0441\u0442\u0440\u044B\u0439 \u0440\u0430\u0441\u0445\u043E\u0434 \u0432\u043E\u0434\u044B.\u0414\u043B\u044F \u044D\u0442\u043E\u0439 \u0446\u0435\u043D\u044B \u0445\u043E\u0440\u043E\u0448\u043E \uD83D\uDC4D\":\n      \"Conforme \u00E0 la description. Livraison rapide aussi. Bonne pression d'eau, mais l'eau s'\u00E9puise tr\u00E8s vite. Pour ce prix, c'est bien \uD83D\uDC4D\",\n    \"\u041E\u0442\u043B\u0438\u0447\u043D\u044B\u0439 \u0438\u0440\u0440\u0438\u0433\u0430\u0442\u043E\u0440 \u0438 \u043C\u043D\u043E\u0433\u043E \u0441\u043C\u0435\u043D\u043D\u044B\u0445 \u043D\u0430\u0441\u0430\u0434\u043E\u043A.\":\n      \"Excellent hydropulseur, avec beaucoup d'embouts de rechange.\",\n    \"\u0645\u0645\u062A\u0627\u0632\u0647 \u062E\u0627\u0645\u0633 \u0645\u0631\u0647 \u0627\u0637\u0644\u0628 \u0644\u0627\u0647\u0644\u064A \u064A\u0628\u0648\u0646 \u0645\u062B\u0644\u064A\":\n      \"Excellent. C'est la cinqui\u00E8me fois que j'en commande pour ma famille, ils veulent tous le m\u00EAme que moi.\",\n    \"Excelent. Livraison impeccable.\": \"Excellent. Livraison impeccable.\",\n    \"Excelent produit. Excelent prix.\": \"Excellent produit. Excellent prix.\"\n  };\n\n  /* Textes de l'interface Judge.me rest\u00E9s en anglais (ou au vouvoiement) */\n  const UI = {\n    \"You've already reviewed this product from this device. Do you want to write another review?\":\n      \"Tu as d\u00E9j\u00E0 laiss\u00E9 un avis sur ce produit depuis cet appareil. Veux-tu en \u00E9crire un autre ?\",\n    \"Write another review\": \"\u00C9crire un autre avis\",\n    \"Not now\": \"Pas maintenant\",\n    \"Close review form\": \"Fermer le formulaire d'avis\",\n    \"Review form pages\": \"\u00C9tapes du formulaire d'avis\",\n    \"Review form navigation\": \"Navigation du formulaire d'avis\",\n    \"Previous step\": \"\u00C9tape pr\u00E9c\u00E9dente\",\n    \"Next step\": \"\u00C9tape suivante\",\n    \"Rating\": \"Note\",\n    \"Privacy and Terms\": \"Confidentialit\u00E9 et conditions\",\n    \"View review image\": \"Voir la photo de l'avis\",\n    \"Pagination Navigation\": \"Pagination\",\n    \"Go to previous page\": \"Page pr\u00E9c\u00E9dente\",\n    \"Go to next page\": \"Page suivante\",\n    \"Thumbnail Navigation\": \"Navigation des miniatures\",\n    \"T\u00E9l\u00E9chargez une photo ou une vid\u00E9o pour \u00E9tayer votre avis.\":\n      \"Ajoute une photo ou une vid\u00E9o pour illustrer ton avis.\"\n  };\n\n  const UI_PATTERNS = [\n    [/^Sorted by (.+)$/, 'Tri\u00E9 par : $1'],\n    [/^(\\d) out of 5 stars$/, '$1 sur 5 \u00E9toiles'],\n    [/^1 star$/, '1 \u00E9toile'],\n    [/^(\\d) stars$/, '$1 \u00E9toiles'],\n    [/^Go to page (\\d+)$/, 'Aller \u00E0 la page $1'],\n    [/^Go to item (\\d+)$/, 'Aller \u00E0 l\\'\u00E9l\u00E9ment $1'],\n    [/^Thumbnails for (\\d+) items$/, 'Miniatures ($1 \u00E9l\u00E9ments)']\n  ];\n\n  const norm = (text) =>\n    text.replace(/[\u2018\u2019]/g, \"'\").replace(/[\u201C\u201D]/g, '\"').replace(/\\s+/g, ' ').trim();\n\n  const reviewMap = new Map(Object.entries(REVIEWS).map(([en, fr]) => [norm(en), fr]));\n  const uiMap = new Map(Object.entries(UI).map(([en, fr]) => [norm(en), fr]));\n\n  const SCOPE = '[class*=\"jdgm\"], [class*=\"jm-\"]';\n  const REVIEW_BODY = '.jdgm-review-content__body-content, .jdgm-rev__body, .jdgm-rev__title, .jm-review-content__body';\n  const ATTRS = ['aria-label', 'title', 'placeholder', 'alt'];\n\n  const translateUi = (text) => {\n    const key = norm(text);\n    if (uiMap.has(key)) return uiMap.get(key);\n    for (const [pattern, replacement] of UI_PATTERNS) {\n      if (pattern.test(key)) return key.replace(pattern, replacement);\n    }\n    return null;\n  };\n\n  const markTranslated = (node) => {\n    if (!config.label) return;\n    const body = node.parentElement?.closest(REVIEW_BODY);\n    if (body) body.setAttribute('data-mk-translated', '');\n  };\n\n  /* Traduction automatique des nouveaux avis anglais (traducteur int\u00E9gr\u00E9 du navigateur) */\n  const EN_WORDS = /\\b(the|and|is|it|it's|very|good|great|works?|with|but|not|this|my|you|for|of|to|was|has|have|easy|use|recommend|product|well|nice|quality)\\b/gi;\n  const looksEnglish = (text) => {\n    if (/[\u00E0\u00E2\u00E7\u00E9\u00E8\u00EA\u00EB\u00EE\u00EF\u00F4\u00FB\u00F9\u00FC\u00FF\u0153]/i.test(text)) return false;\n    const words = text.split(/\\s+/).length;\n    const hits = (text.match(EN_WORDS) || []).length;\n    return words >= 2 && hits >= Math.max(1, Math.round(words * 0.2));\n  };\n\n  let translatorPromise = null;\n  const getTranslator = () => {\n    if (translatorPromise) return translatorPromise;\n    translatorPromise = (async () => {\n      if (!config.auto || !('Translator' in self)) return null;\n      try {\n        const options = { sourceLanguage: 'en', targetLanguage: 'fr' };\n        if ((await self.Translator.availability(options)) !== 'available') return null;\n        return await self.Translator.create(options);\n      } catch (error) {\n        return null;\n      }\n    })();\n    return translatorPromise;\n  };\n\n  const autoTranslate = async (node, original) => {\n    const translator = await getTranslator();\n    if (!translator) return;\n    try {\n      const french = await translator.translate(original);\n      if (french && node.isConnected && norm(node.data) === original) {\n        node.data = french;\n        markTranslated(node);\n      }\n    } catch (error) {\n      /* On laisse le texte d'origine */\n    }\n  };\n\n  const translateTextNode = (node) => {\n    const parent = node.parentElement;\n    if (!parent || !parent.closest(SCOPE) || parent.closest('script, style')) return;\n    const original = norm(node.data);\n    if (original.length < 2) return;\n\n    /* Avis connus : traduits partout (liste, fen\u00EAtre \u00AB Plus \u00BB, carrousels) */\n    const knownReview = reviewMap.get(original);\n    if (knownReview) {\n      node.data = knownReview;\n      markTranslated(node);\n      return;\n    }\n\n    if (parent.closest(REVIEW_BODY)) {\n      if (looksEnglish(original)) autoTranslate(node, original);\n      return;\n    }\n\n    const french = translateUi(original);\n    if (french) node.data = french;\n  };\n\n  const translateAttributes = (element) => {\n    ATTRS.forEach((name) => {\n      const value = element.getAttribute(name);\n      if (!value) return;\n      const french = translateUi(value);\n      if (french && french !== value) element.setAttribute(name, french);\n    });\n  };\n\n  const translateTree = (root) => {\n    if (root.nodeType === Node.TEXT_NODE) {\n      translateTextNode(root);\n      return;\n    }\n    if (root.nodeType !== Node.ELEMENT_NODE) return;\n    if (root.matches(SCOPE)) translateAttributes(root);\n    root.querySelectorAll(SCOPE).forEach(translateAttributes);\n    const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);\n    let node;\n    while ((node = walker.nextNode())) translateTextNode(node);\n  };\n\n  /* Judge.me charge et redessine les avis \u00E0 la vol\u00E9e : on surveille la page */\n  const pending = new Set();\n  let scheduled = false;\n  const flush = () => {\n    scheduled = false;\n    pending.forEach((node) => node.isConnected && translateTree(node));\n    pending.clear();\n  };\n  const queue = (node) => {\n    pending.add(node);\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(flush, 30);\n    }\n  };\n\n  const start = () => {\n    if (config.label) document.documentElement.style.setProperty('--mk-tr-label', JSON.stringify(config.label));\n    translateTree(document.body);\n    new MutationObserver((mutations) => {\n      mutations.forEach((mutation) => {\n        if (mutation.type === 'characterData') queue(mutation.target);\n        else if (mutation.type === 'attributes') queue(mutation.target);\n        else mutation.addedNodes.forEach(queue);\n      });\n    }).observe(document.body, {\n      childList: true,\n      subtree: true,\n      characterData: true,\n      attributes: true,\n      attributeFilter: ATTRS\n    });\n  };\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', start);\n  else start();\n})();\n"],
  "mappings": "CAIC,IAAM,CACL,MAAM,OAAS,OAAO,aAAe,CAAC,EAGhC,QAAU,CACd,gHACE,4IACF,qKACE,+LACF,wEACE,qFACF,wDACE,oEACF,kDACE,qDACF,0CACE,iDACF,mNACE,0NACF,8DACE,gHACF,sCACE,+CACF,wHACE,+HACF,qLACE,gMACF,wBACE,8BACF,mIACE,+HACF,kDACE,4DACF,sCACE,2CACF,oHACE,kJACF,yGACE,6HACF,qBACE,eACF,qDACE,gEACF,mGACE,wJACF,4BACE,iCACF,uBACE,4BACF,kJACE,+IACF,oCACE,4CACF,gEACE,qEACF,oFACE,6FACF,0EACE,2FACF,gFACE,mGACF,qDACE,4CACF,oCACE,8CACF,iDACE,yDACF,eACE,mBACF,sDACE,mEACF,yGACE,0GACF,iEACE,uDACF,gDACE,sDACF,4JACE,+JACF,oCACE,8CACF,wDACE,mDACF,iEACE,yFAGF,YAAa,eACb,6BAA8B,yCAC9B,KAAQ,OACR,8IACE,kJACF,2EACE,+FACF,mCACE,mEACF,yDACE,6EACF,4GACE,oIACF,sFACE,qIACF,UAAW,eACX,UAAa,aACb,SAAY,aACZ,0CAA2C,sDAC3C,0mBACE,sJACF,uOACE,+DACF,6LACE,gHACF,kCAAmC,mCACnC,mCAAoC,oCACtC,EAGM,GAAK,CACT,8FACE,yGACF,uBAAwB,0BACxB,UAAW,iBACX,oBAAqB,8BACrB,oBAAqB,iCACrB,yBAA0B,kCAC1B,gBAAiB,4BACjB,YAAa,oBACb,OAAU,OACV,oBAAqB,mCACrB,oBAAqB,0BACrB,wBAAyB,aACzB,sBAAuB,wBACvB,kBAAmB,gBACnB,uBAAwB,4BACxB,yEACE,2DACJ,EAEM,YAAc,CAClB,CAAC,mBAAoB,kBAAe,EACpC,CAAC,wBAAyB,qBAAkB,EAC5C,CAAC,WAAY,aAAU,EACvB,CAAC,eAAgB,eAAY,EAC7B,CAAC,qBAAsB,uBAAoB,EAC3C,CAAC,qBAAsB,+BAAuB,EAC9C,CAAC,+BAAgC,gCAA0B,CAC7D,EAEM,KAAQ,MACZ,KAAK,QAAQ,QAAS,GAAG,EAAE,QAAQ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",
  "names": []
}
