1/* Temu+ marketing site â dependency-free client-side i18n. 2 * 3 * Mirrors the extension's i18n UX (see extension/src/lib/i18n.svelte.ts): 4 * effective language = explicit override (localStorage 'tplus-lang') 5 * ?? browser language (navigator.language) 6 * ?? English. 7 * English is the master; any missing key in another language falls back to it, 8 * so a partial catalogue never shows a blank. 9 * 10 * Markup contract: 11 * <el data-i18n="some.key">â¦</el> â el.innerHTML = STRINGS[lang]['some.key'] 12 * innerHTML (not textContent) so inline <em>/<strong>/<a>/<span> in a string 13 * survive. The catalogue is our own trusted content â no user input. 14 * 15 * Same no-build, vanilla approach as theme.js. Legal pages stay English-only. 16 */ 17(function () { 18 'use strict'; 19 20 var LANGS = ['en', 'sr', 'de', 'fr', 'es', 'it', 'uk']; 21 var NAMES = { 22 en: 'English', sr: 'Srpski', de: 'Deutsch', fr: 'Français', 23 es: 'Español', it: 'Italiano', uk: 'УкÑаÑнÑÑка' 24 }; 25 var KEY = 'tplus-lang'; 26 27 // === Translation catalogue =============================================== 28 // English is the master. Other languages are merged in below (I18N_ADD). 29 var STRINGS = { 30 en: { 31 'meta.title': 'Temu+ â See what you actually paid on Temu', 32 33 'nav.features': 'Features', 34 'nav.pro': 'Pro', 35 'nav.pricing': 'Pricing', 36 'nav.guides': 'Guides', 37 'nav.faq': 'FAQ', 38 'nav.waitlist': 'Join the waitlist', 39 'nav.install': 'Add to Chrome', 40 41 'banner': 'ð <strong>Temu+ is live</strong> â free on Chrome, or the full build <strong>with Pro</strong> on <a href="https://microsoftedge.microsoft.com/addons/detail/icghgpfdgbajbmegpjehihndfflfaako" target="_blank" rel="noopener">Edge</a>. Founder price <strong>â¬5/yr</strong>. <a href="https://chromewebstore.google.com/detail/iehnodlgkoimdohpcjjlhhfehblcfaea" target="_blank" rel="noopener">Add Lite to Chrome â</a>', 42 'disclaimer': 'Independent tool. Not affiliated with, endorsed by, or sponsored by Temu or PDD Holdings. âTemuâ is a trademark of its respective owner.', 43 44 'hero.pill': 'Lite free on Chrome · Pro available now', 45 'hero.h1': 'See what you <em>actually</em> paid on Temu.', 46 'hero.lede': 'Temu+ reads your own order history and shows the real per-item cost, honest refund accounting, and which items are now cheap enough to claim a price-adjustment refund â all processed locally in your browser. Nothing is ever uploaded.', 47 'hero.ctaWaitlist': 'Join the waitlist', 48 'hero.ctaInstall': 'Add Lite to Chrome â free', 49 'hero.ctaPro': 'See Pro', 50 'hero.note': 'Founder price â¬5/year · Free forever core · No account, no tracking', 51 52 'why.eyebrow': 'Why it exists', 53 'why.h2': 'Temuâs receipts are designed to confuse you.', 54 'why.sub': 'Cart-level coupons, store credit, and a marketing âdiscountâ off a price nobody pays all blur into one number. Temu+ pulls them apart.', 55 'why.c1t': 'Your real per-item cost', 56 'why.c1d': 'An orderâs checkout total is split across its items by listed sale price, so cart coupons and credit donât vanish into one bundled figure.', 57 'why.c2t': 'Credit isnât cash', 58 'why.c2d': 'Money-back refunds, credit returned to your balance, and promo credit are reported as separate categories â because store credit is not money back in your pocket.', 59 'why.c3t': 'No fake âsavingsâ', 60 'why.c3d': 'Temuâs âItem discountâ (MSRP â sticker) is a marketing anchor, so we donât count it as a real discount. Only actual cart-level reductions show up.', 61 62 'free.eyebrow': 'Temu+ Lite â free forever', 63 'free.h2': 'The honest dashboard', 64 'free.sub': 'Everything you need to understand your Temu spending â at no cost.', 65 'free.f1t': 'Period-aware summary', 66 'free.f1d': 'Money out, orders, items, refunds & cancellations, credit gained, and checkout discounts â each broken into its sources, for any period.', 67 'free.f2t': 'Full credit ledger', 68 'free.f2d': 'Captured from Temuâs wallet endpoint: credit-back promos, price-adjustment refunds, late-delivery compensation, and credit spent â all surfaced separately.', 69 'free.f3t': 'Coupon vs. credit split', 70 'free.f3d': 'Per order: the coupon code used, exclusive item promo, credit balance redeemed, and shipping line, broken out from the bundled total.', 71 'free.f4t': 'Gift vs. credit-paid', 72 'free.f4d': 'Both show as 0 in Temuâs UI. We flag genuine âTemu presentâ orders apart from ones credit or coupons simply brought to zero.', 73 'free.f5t': 'Wallet & coupons at a glance', 74 'free.f5d': 'Live credit balance plus usable coupons, sorted by expiry with one-click copy â right in the top bar.', 75 'free.f6t': 'Private mode', 76 'free.f6d': 'One tap masks every amount and blurs the chart â safe for screenshots and screen-sharing.', 77 'free.f7t': 'Export & import', 78 'free.f7d': 'Your data to CSV or JSON anytime, and restore from a backup. Itâs your data â it stays portable.', 79 'free.f8t': 'Health check', 80 'free.f8d': 'Built-in probes verify Temuâs data shapes still match â so you know the numbers are trustworthy.', 81 82 'pro.eyebrow': 'Temu+ Pro', 83 'pro.h2': 'For power shoppers', 84 'pro.sub': 'Everything in Lite, plus the power tools that pay for themselves.', 85 'pro.h1t': 'Multiple accounts', 86 'pro.h1d': 'Keep data fingerprinted per Temu account and switch or combine views, with per-account colors and custom names.', 87 'pro.h2t': 'Reseller', 88 'pro.h2d': 'Your true cost-per-item becomes a cost basis, with live profit and margin per product and a clean inventory view â for anyone who buys to sell again.', 89 'pro.h6t': 'Refund alerts', 90 'pro.h6d': 'Two ways to get money back: <strong>price adjustments</strong> flag items whose price dropped inside Temuâs 30-day window so you can claim the difference and keep the item, and <strong>returns closing soon</strong> reminds you which items leave their 90-day return window in the next 5 days â with the cash + credit youâd get back.', 91 'pro.h4t': 'Arriving today', 92 'pro.h4d': 'Reads the delivery status already in your orders to surface whatâs out for delivery today, plus whatâs in transit and shipped â no extra requests, just the data from your normal sync.', 93 'pro.h3t': 'Dark mode', 94 'pro.h3d': 'A full dark theme for the whole dashboard â easy on the eyes, day or night.', 95 'pro.h5t': 'Price tracker', 96 'pro.h5d': 'Import your Temu wishlist and follow any itemâs price over time, so you can spot a real drop before you rebuy.', 97 'pro.betaLabel': 'Also in Pro', 98 'pro.soonTag': 'Coming soon', 99 'pro.note': '<strong>An honest note on price adjustments:</strong> the amount shown is <em>Temuâs own calculated figure</em> for that item. You still submit the claim, Temu approves every price-adjustment request, and a refund is never guaranteed. We surface the opportunity â the rest is between you and Temu.', 100 101 'screens.eyebrow': 'See it in action', 102 'screens.h2': 'Honest numbers, clearly laid out', 103 'screens.sub': 'A look at the dashboard and the breakdowns Temu+ builds from your own data.', 104 'screens.c1t': 'Order breakdown', 105 'screens.c1d': 'One bundled total, pulled apart line by line â so you see the real cash you paid, with credit kept separate.', 106 'screens.c2t': 'Refund alerts', 107 'screens.c2d': 'Price adjustments you can claim inside Temuâs window, plus items whose return window is closing soon â each with the refund youâd get and an honest âTemu decidesâ note.', 108 109 'pricing.eyebrow': 'Pricing', 110 'pricing.h2': 'Simple, honest pricing', 111 'pricing.sub': 'The core stays free. Pro is a yearly license you renew yourself â no auto-charges.', 112 'pricing.freeTitle': 'Lite', 113 'pricing.freeSub': 'Free forever. No account required.', 114 'pricing.freeLi1': 'Full honest dashboard', 115 'pricing.freeLi2': 'Real per-item cost & credit ledger', 116 'pricing.freeLi3': 'Wallet, coupons & private mode', 117 'pricing.freeLi4': 'CSV / JSON export & import', 118 'pricing.freeLi5': 'Single Temu account', 119 'pricing.freeCta': 'Add to Chrome â free', 120 'pricing.proBadge': 'Founder price', 121 'pricing.proTitle': 'Pro', 122 'pricing.perYear': '/ year · VAT included', 123 'pricing.proSub': '<strong>Founder price while Pro is new</strong>
123 â <strong>rate-locked</strong> for as long as you keep renewing. Manual annual renewal, no auto-charges; it keeps working as Temu changes.', 124 'pricing.proLi1': 'Everything in Lite', 125 'pricing.proLi2': 'Multiple accounts', 126 'pricing.proLi3': 'Reseller', 127 'pricing.proLi4': 'Refund alerts â price adjustments & closing returns', 128 'pricing.proLi5': 'Arriving today', 129 'pricing.proLi6': 'Use on up to 3 devices â for the whole household', 130 'pricing.proLi7': 'Priority support', 131 'pricing.proLi8': 'Price tracker', 132 'pricing.proLi9': 'Dark mode', 133 'pricing.proCta': 'Get Pro â â¬5/year', 134 'pricing.proHelp': 'How to install & activate â', 135 'pricing.guarantee': '<strong>14-day money-back guarantee.</strong> Try Pro for two weeks and get a full refund â no questions asked. Payments and refunds are handled by <a href="https://www.lemonsqueezy.com/">Lemon Squeezy</a>, our merchant of record.', 136 137 'browsers.strip': 'Works on Chrome & Edge', 138 'browsers.eyebrow': 'Your browser', 139 'browsers.h2': 'Works on your browser', 140 'browsers.sub': 'Lite is one click on the Chrome Web Store. On Edge, the full build â with Pro â installs as an auto-updating add-on from the Edge Add-ons store, or do a manual install on any Chromium browser.', 141 'browsers.chrome': 'One-click Lite from the <a href="https://chromewebstore.google.com/detail/iehnodlgkoimdohpcjjlhhfehblcfaea" target="_blank" rel="noopener">Chrome Web Store</a>. For Pro, install the full build manually. Brave, Opera and Vivaldi work the same way.', 142 'browsers.edge': 'Install the auto-updating Temu+ add-on â including Pro â straight from the <a href="https://microsoftedge.microsoft.com/addons/detail/icghgpfdgbajbmegpjehihndfflfaako" target="_blank" rel="noopener">Edge Add-ons store</a>. You can also add Lite from the Chrome Web Store.', 143 'browsers.firefox': 'Not yet â Firefox support is on the roadmap.', 144 'browsers.soon': 'Soon', 145 'browsers.cta': 'See full install steps', 146 147 'privacy.eyebrow': 'Privacy by design', 148 'privacy.h2': 'Your data never leaves your browser.', 149 'privacy.body': 'Temu+ reads only your own Temu account data while youâre signed in, and stores everything in a local database on your device. There is no Temu+ server, no account, and no telemetry. We literally cannot see your orders.', 150 'privacy.link': 'Read the full privacy policy â', 151 152 'guides.eyebrow': 'Tips & tricks', 153 'guides.h2': 'Learn to shop Temu like you know the receipts', 154 'guides.sub': 'Plain-English guides on real prices, store credit, getting refunds, and getting more from Temu+.', 155 'guides.k1': 'Buyer guide <span class="read">· 7 min read</span>', 156 'guides.t1': 'How to shop smart on Temu', 157 'guides.d1': 'Read prices that mean something, use coupons and credit the right way, and ignore the fake MSRP discount.', 158 'guides.more': 'Read the guide â', 159 'guides.k2': 'Plans <span class="read">· 4 min read</span>', 160 'guides.t2': 'Temu+ Lite vs Pro', 161 'guides.d2': 'Everything thatâs free in Lite, what Pro adds, and how to decide â side by side.', 162 'guides.more2': 'Compare the plans â', 163 'guides.k3': 'Money back <span class="read">· 6 min read</span>', 164 'guides.t3': 'Getting your money back on Temu', 165 'guides.d3': 'Claim the difference when a price drops, and catch items whose return window is about to close â what Refund alerts surfaces for you.', 166 'guides.more3': 'Read the guide â', 167 'guides.all': 'Browse all guides', 168 169 'faq.h2': 'Frequently asked', 170 'faq.q1': 'Is Temu+ available yet?', 171 'faq.a1': 'Yes. <strong>Lite is live free on the Chrome Web Store</strong>, and <strong>Pro is available now</strong> at â¬5/year. Install the full build â on Edge itâs a one-click, auto-updating add-on from the Edge Add-ons store, and for Chrome you download it from us â then activate your license. See <a href="guides/how-to-get-pro.html">How to get Pro</a>.', 172 'faq.q2': 'Is Temu+ affiliated with Temu?', 173 'faq.a2': 'No. Temu+ is an independent tool built by a third-party developer. It is not affiliated with, endorsed by, or sponsored by Temu or PDD Holdings. It reads only your own account data, on your own device.', 174 'faq.q3': 'Are price-drop refunds guaranteed?', 175 'faq.a3': 'No. Temu+ shows Temuâs own calculated price-adjustment amount for eligible items inside the refund window, but you still submit the claim and Temu approves every request. Treat it as claimable, not a guaranteed promise.', 176 'faq.q4': 'How much is it and how does billing work?', 177 'faq.a4': 'The core is free forever. Pro is <strong>â¬5/year</strong> at the founder price â an annual license you renew manually, with no automatic recurring charge. Payment is handled by Lemon Squeezy, our merchant of record, who also handle VAT/tax â the â¬5 is VAT-inclusive, so nothing is added at checkout. You get a license key to activate Pro in the extension.', 178 'faq.q5': 'Can I get a refund?',
179 'faq.a5': 'Yes â thereâs a 14-day money-back guarantee. See our <a href="refund.html">refund policy</a> for details.', 180 'faq.q6': 'Where do I find my license key?', 181 'faq.a6': 'Your license key is in the purchase confirmation email from Lemon Squeezy (search your inbox for âTemu+ Proâ or âLemon Squeezyâ), and on the order receipt linked in that email. Canât find it? Email <a href="mailto:[email protected]">[email protected]</a> from the address you bought with and weâll resend it. A Pro license works on up to 3 devices â enough for the whole household. Use âRemove license from this deviceâ in the extension before switching devices to free a slot. If you ever hit the limit (reinstalling the extension or clearing your browser data can use one up), just email us and weâll reset it for you.', 182 'faq.q7': 'What data do you collect?', 183 'faq.a7': 'None on our side. All processing happens locally in your browser, stored in IndexedDB on your device. Nothing is transmitted to any server we control. See the <a href="privacy.html">privacy policy</a>.', 184 'faq.q8': 'Which browsers are supported?', 185 'faq.a8': 'Chrome works today: the free Lite build is in the Web Store, and Pro installs as the full build via manual download. On Edge, the full build is a one-click, auto-updating add-on in the Edge Add-ons store. Firefox is on the roadmap.', 186 187 'footer.features': 'Features', 188 'footer.pricing': 'Pricing', 189 'footer.guides': 'Guides', 190 'footer.privacy': 'Privacy', 191 'footer.terms': 'Terms', 192 'footer.refunds': 'Refunds', 193 'footer.contact': 'Contact', 194 'footer.disclaimer': 'Not affiliated with, endorsed by, or sponsored by Temu or PDD Holdings. âTemuâ is a trademark of its respective owner. Temu+ reads only your own account data, processed locally on your device.', 195 'footer.legal': 'Operated by <strong>Naska-IT</strong> â sole proprietorship registered in Serbia · MatiÄni broj 64294105 · PIB 109597755 · Äirinci 60, Gornji Striževac, 18330 BabuÅ¡nica, Serbia', 196 'footer.copy': '© 2026 Naska-IT. All rights reserved.' 197 } 198 }; 199 200 // Other-language catalogues live in i18n-translations.js (loaded first), which 201 // sets window.I18N_ADD = { sr: {â¦}, de: {â¦}, ⦠}. Each is a flat { key: value } 202 // object merged onto STRINGS[lang]. Missing keys still fall back to English. 203 var ADD = (typeof window !== 'undefined' && window.I18N_ADD) ? window.I18N_ADD : null; 204 if (ADD) { 205 for (var lc in ADD) { 206 if (Object.prototype.hasOwnProperty.call(ADD, lc)) STRINGS[lc] = ADD[lc]; 207 } 208 } 209 210 // === Engine ============================================================== 211 function detect() { 212 var o = null; 213 try { o = localStorage.getItem(KEY); } catch (e) { /* private mode */ } 214 if (o && LANGS.indexOf(o) >= 0) return o; 215 var n = (navigator.language || 'en').toLowerCase().split('-')[0]; 216 return LANGS.indexOf(n) >= 0 ? n : 'en'; 217 } 218 219 function tr(lang, key) { 220 var tbl = STRINGS[lang] || {}; 221 var v = tbl[key]; 222 return v != null ? v : STRINGS.en[key]; 223 } 224 225 function apply(lang) { 226 document.documentElement.lang = lang; 227 var nodes = document.querySelectorAll('[data-i18n]'); 228 for (var i = 0; i < nodes.length; i++) { 229 var el = nodes[i]; 230 var v = tr(lang, el.getAttribute('data-i18n')); 231 if (v != null) el.innerHTML = v; 232 } 233 var title = tr(lang, 'meta.title'); 234 if (title) document.title = title; 235 var sel = document.querySelector('.lang-select'); 236 if (sel) sel.value = lang; 237 } 238 239 function setLang(lang) { 240 if (LANGS.indexOf(lang) < 0) lang = 'en'; 241 try { localStorage.setItem(KEY, lang); } catch (e) { /* in-memory only */ } 242 apply(lang); 243 } 244 245 function buildSelect() { 246 var sel = document.querySelector('.lang-select'); 247 if (!sel || sel.options.length) return sel; // already populated in markup 248 for (var i = 0; i < LANGS.length; i++) { 249 var opt = document.createElement('option'); 250 opt.value = LANGS[i]; 251 opt.textContent = NAMES[LANGS[i]]; 252 sel.appendChild(opt); 253 } 254 return sel; 255 } 256
257 function init() { 258 var sel = buildSelect(); 259 if (sel) sel.addEventListener('change', function () { setLang(this.value); }); 260 apply(detect()); 261 } 262 263 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); 264 else init(); 265 266 window.TplusI18n = { setLang: setLang, lang: detect, langs: LANGS, names: NAMES }; 267})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.