{"id":1279,"date":"2026-04-03T22:49:08","date_gmt":"2026-04-03T22:49:08","guid":{"rendered":"http:\/\/sofapiano.com\/?page_id=1279"},"modified":"2026-05-18T18:50:08","modified_gmt":"2026-05-18T18:50:08","slug":"word-context-search","status":"publish","type":"page","link":"https:\/\/sofapiano.com\/es\/word-context-search\/","title":{"rendered":"Palabras en Contexto"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1279\" class=\"elementor elementor-1279\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f144499 e-con-full e-flex e-con e-parent\" data-id=\"f144499\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;none&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-0a6674d e-con-full animated-slow e-flex elementor-invisible e-con e-child\" data-id=\"0a6674d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;slideInLeft&quot;,&quot;animation_delay&quot;:500}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0d9b87e elementor-widget elementor-widget-heading\" data-id=\"0d9b87e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Word Context Search<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4dbbfbe elementor-widget__width-auto premium-modal-dismissible-yes elementor-widget elementor-widget-premium-addon-modal-box\" data-id=\"4dbbfbe\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;premium_modal_box_animation&quot;:&quot;slideInLeft&quot;}\" data-widget_type=\"premium-addon-modal-box.default\">\n\t\t\t\t\t\n\t\t<div class=\"premium-modal-box-container\" data-settings=\"{&quot;trigger&quot;:&quot;button&quot;,&quot;show_on_exit&quot;:false}\">\n\t\t\t<div class=\"premium-modal-trigger-container\">\n\t\t\t\t\t\t\t\t\t<button data-toggle=\"premium-modal\" data-target=\"#premium-modal-4dbbfbe\" type=\"button\" class=\"premium-modal-trigger-btn premium-btn-lg premium-button-none \" data-text=\"\">\n\n\t\t\t\t\t\t<svg class=\"svg-inline--fas-fa-info-circle premium-svg-nodraw\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 512 512\"><path d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"><\/path><\/svg>\n\t\t\t\t\t\t<div class=\"premium-button-text-icon-wrapper\">\n\t\t\t\t\t\t\t<span><\/span>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t<\/button>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t<div id=\"premium-modal-4dbbfbe\" class=\"premium-modal-box-modal\"\n\t\t\trole=\"dialog\"\n\t\t\tstyle=\"display: none\"\n\t\t\t>\n\t\t\t\t<div class=\"premium-modal-box-modal-dialog\" data-delay-animation=\"\" data-modal-animation=\"slideInLeft animated-\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-modal-box-modal-header\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-modal-box-close-button-container\">\n\t\t\t\t\t\t\t\t\t<button type=\"button\" class=\"premium-modal-box-modal-close\" data-dismiss=\"premium-modal\">&times;<\/button>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"premium-modal-box-modal-body\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 data-path-to-node=\"12\"><b data-path-to-node=\"12\" data-index-in-node=\"0\">How to Use the Synonym Finder<\/b><\/h2><p data-path-to-node=\"13\">Level up your German vocabulary in three easy steps:<\/p><ol start=\"1\" data-path-to-node=\"14\"><li><p data-path-to-node=\"14,0,0\"><b data-path-to-node=\"14,0,0\" data-index-in-node=\"0\">Search:<\/b> Enter any German word (noun, verb, or adjective) into the search bar.<\/p><\/li><li><p data-path-to-node=\"14,1,0\"><b data-path-to-node=\"14,1,0\" data-index-in-node=\"0\">Explore Meanings:<\/b> Look at the <b data-path-to-node=\"14,1,0\" data-index-in-node=\"30\">Bedeutung<\/b> (Meaning) section to find the context that matches what you want to say.<\/p><\/li><li><p data-path-to-node=\"14,2,0\"><b data-path-to-node=\"14,2,0\" data-index-in-node=\"0\">Select:<\/b> Choose from the <b data-path-to-node=\"14,2,0\" data-index-in-node=\"24\">Synonyme<\/b> tags to find the perfect new word for your sentence.<\/p><\/li><\/ol><p data-path-to-node=\"15\"><b data-path-to-node=\"15\" data-index-in-node=\"0\">Tip:<\/b> Check the <b data-path-to-node=\"15\" data-index-in-node=\"15\">Category Badge<\/b> in the top right of each block to see if a word is formal, slang, or general!<\/p>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-96a99f9 e-con-full e-flex e-con e-child\" data-id=\"96a99f9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-666f9b4 elementor-widget elementor-widget-html\" data-id=\"666f9b4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"trainer-wrapper-fixed\">\n<div id=\"trainer-container-final\" class=\"trainer-app-scoped\">\n\n<style>\n#trainer-wrapper-fixed { all: initial; display: block; width: 100%; clear: both; }\n#trainer-container-final.trainer-app-scoped { display: block !important; text-align: center !important; max-width: 650px !important; margin: 20px auto !important; padding: 25px !important; font-family: 'Segoe UI', Roboto, Arial, sans-serif !important; background-color: #F4FEFF !important; border: 1px solid #d0eef0 !important; border-radius: 30px !important; box-shadow: 0 10px 30px rgba(0,0,0,0.05) !important; box-sizing: border-box !important; }\n\n\/* Obere Kontrollzeile *\/\n#trainer-container-final .top-row { display: flex !important; gap: 8px !important; align-items: center !important; margin-bottom: 20px !important; width: 100% !important; }\n\n\/* Suchbereich *\/\n#trainer-container-final .search-section-main { display: flex !important; gap: 8px !important; flex-grow: 1 !important; }\n#trainer-container-final .search-wrapper-inner { position: relative !important; flex-grow: 1 !important; }\n#trainer-container-final .input-area { width: 100% !important; height: 50px !important; font-size: 16px !important; padding: 12px 35px 12px 15px !important; border-radius: 16px !important; border: 1px solid #c9e4e6 !important; background: #fff !important; text-align: left !important; box-sizing: border-box !important; outline: none !important; transition: border-color 0.2s !important; }\n#trainer-container-final .input-area:focus { border-color: #2d7ef7 !important; }\n\n\/* Reset-Button im Suchfeld *\/\n#trainer-container-final .resetBtn-inline { position: absolute !important; right: 12px !important; top: 50% !important; transform: translateY(-50%) !important; background: none !important; border: none !important; cursor: pointer !important; font-size: 14px !important; color: #999 !important; padding: 0 !important; }\n\n\/* GARANTIERT FUNKTIONIERENDER CSS-TOOLTIP HIER *\/\n#trainer-container-final .tooltip-wrapper {\n  position: relative !important;\n  display: inline-block !important;\n}\n\n\/* Der Tooltip-Kasten (Standardm\u00e4\u00dfig unsichtbar) *\/\n#trainer-container-final .tooltip-wrapper::after {\n  content: attr(data-tooltip) !important;\n  position: absolute !important;\n  bottom: 125% !important;\n  left: 50% !important;\n  transform: translateX(-50%) scale(0.8) !important;\n  background-color: #333333 !important;\n  color: #ffffff !important;\n  padding: 6px 10px !important;\n  border-radius: 8px !important;\n  font-size: 12px !important;\n  font-family: sans-serif !important;\n  white-space: nowrap !important;\n  opacity: 0 !important;\n  pointer-events: none !important;\n  transition: all 0.15s ease-in-out !important;\n  z-index: 99999 !important;\n  box-shadow: 0 4px 10px rgba(0,0,0,0.15) !important;\n}\n\n\/* Kleiner Pfeil unter dem Tooltip *\/\n#trainer-container-final .tooltip-wrapper::before {\n  content: \"\" !important;\n  position: absolute !important;\n  bottom: 110% !important;\n  left: 50% !important;\n  transform: translateX(-50%) !important;\n  border-width: 5px !important;\n  border-style: solid !important;\n  border-color: #333 transparent transparent transparent !important;\n  opacity: 0 !important;\n  transition: all 0.15s ease-in-out !important;\n  pointer-events: none !important;\n  z-index: 99999 !important;\n}\n\n\/* Hover-Effekt: Zeige Tooltip *\/\n#trainer-container-final .tooltip-wrapper:hover::after,\n#trainer-container-final .tooltip-wrapper:hover::before {\n  opacity: 1 !important;\n  transform: translateX(-50%) scale(1) !important;\n}\n\n\/* Einheitlicher Button-Stil *\/\n#trainer-container-final .btn-icon { \n  width: 50px !important; \n  height: 50px !important; \n  border-radius: 16px !important; \n  font-size: 18px !important; \n  cursor: pointer !important; \n  background: #fff !important; \n  display: flex !important; \n  align-items: center !important; \n  justify-content: center !important; \n  border: 1px solid #c9e4e6 !important; \n  transition: background-color 0.1s, transform 0.1s, border-color 0.2s !important; \n  color: #444 !important; \n  outline: none !important; \n  box-shadow: 0 2px 5px rgba(0,0,0,0.03) !important; \n  padding: 0 !important;\n  box-sizing: border-box !important;\n}\n#trainer-container-final .btn-icon:hover { background-color: #f5f5f5 !important; border-color: #b0dcde !important; }\n#trainer-container-final .btn-icon:active { transform: scale(0.95) !important; }\n\n\/* Spezialzustand f\u00fcr aktiven Blur-Button *\/\n#trainer-container-final .btn-blur-toggle.active { background-color: #ffb300 !important; color: white !important; border-color: #ffb300 !important; }\n#trainer-container-final .btn-blur-toggle.active:hover { background-color: #ffa000 !important; }\n\n\/* Statusmeldung *\/\n#trainer-container-final .status-text-info { font-size: 11px !important; color: #6a8b8d !important; font-weight: bold !important; text-align: left !important; margin-top: -5px !important; margin-bottom: 15px !important; text-transform: uppercase !important; letter-spacing: 0.5px !important; }\n\n\/* S\u00e4tze-Ausgabebereich *\/\n#trainer-container-final .sentenceArea { max-height: 55vh !important; overflow-y: auto !important; margin-top: 10px !important; padding-right: 5px !important; }\n#trainer-container-final .sentence-block { margin-bottom: 12px !important; padding: 18px !important; border: 1px solid #d0eef0 !important; border-radius: 18px !important; background-color: white !important; text-align: left !important; box-shadow: 0 3px 8px rgba(0,0,0,0.02) !important; }\n\n\/* Sprachzeilen im Block *\/\n#trainer-container-final .lang-row-main { font-size: 17px !important; font-weight: 600 !important; color: #333 !important; margin-bottom: 6px !important; display: flex !important; align-items: flex-start !important; justify-content: space-between !important; }\n#trainer-container-final .lang-row-sub { font-size: 15px !important; color: #5d7d7f !important; display: flex !important; margin-top: 8px !important; border-top: 1px solid #f0fbfc !important; padding-top: 8px !important; }\n#trainer-container-final .lang-label { min-width: 35px !important; font-weight: bold !important; color: #8da4a6 !important; font-size: 10px !important; margin-top: 4px !important; flex-shrink: 0 !important; text-transform: uppercase !important; }\n#trainer-container-final .txt-content { flex-grow: 1 !important; padding-right: 10px !important; line-height: 1.4 !important; transition: filter 0.2s ease !important; }\n\n\/* Der Blur-Effekt f\u00fcr den deutschen Text *\/\n#trainer-container-final .blur-active .lang-row-main .txt-content {\n    filter: blur(6px) !important;\n    user-select: none !important; \n}\n\n\/* Suchtreffer markieren *\/\n#trainer-container-final mark { \n  background-color: #fff176 !important; \n  color: inherit !important;\n  padding: 0 !important; \n  margin: 0 !important; \n  border-radius: 0 !important; \n  box-shadow: none !important;\n  display: inline !important;\n}\n\n\/* Vorlesebutton *\/\n#trainer-container-final .speak-btn { background: none !important; border: none !important; cursor: pointer !important; font-size: 20px !important; opacity: 0.3 !important; padding: 0 !important; transition: opacity 0.2s !important; }\n#trainer-container-final .speak-btn:hover { opacity: 0.9 !important; }\n\n@media (max-width: 600px) {\n  #trainer-container-final .top-row { flex-wrap: wrap !important; }\n  #trainer-container-final .search-section-main { width: 100% !important; }\n}\n<\/style>\n\n<div class=\"unified-box\">\n  <div class=\"top-row\">\n    <div class=\"search-section-main\">\n      <div class=\"search-wrapper-inner\">\n        <input type=\"text\" id=\"search-input-field\" class=\"input-area\" placeholder=\"Loading...\" disabled>\n        <button class=\"resetBtn-inline\" id=\"clearSearchBtn\" title=\"Clear\">\u2715<\/button>\n      <\/div>\n      <div class=\"tooltip-wrapper\" data-tooltip=\"Search\">\n        <button class=\"btn-icon\" id=\"main-search-btn\" disabled>\ud83d\udd0d<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"tooltip-wrapper\" data-tooltip=\"Learn sentences\">\n      <button class=\"btn-icon btn-blur-toggle\" id=\"blur-toggler\">\ud83d\udc41\ufe0f<\/button>\n    <\/div>\n    \n    <div class=\"tooltip-wrapper\" data-tooltip=\"Change language\">\n      <button class=\"btn-icon\" id=\"language-toggler\">\n        <span id=\"toggler-icon\">\ud83c\uddea\ud83c\uddf8<\/span>\n      <\/button>\n    <\/div>\n  <\/div>\n\n  <div id=\"status-msg\" class=\"status-text-info\">Connecting...<\/div>\n\n  <div class=\"sentenceArea\"><\/div>\n<\/div>\n\n<\/div>\n<\/div>\n\n<script>\n(function(){\n    const container = document.getElementById('trainer-container-final');\n    if (!container) return;\n\n    \/\/ Google-Sheet ID\n    const sheetId = '1w0VPGjhREhzB5DEE1C11t3Ys2IuMi8N3G7SGqcZ5ZDQ';\n    \n    \/\/ GIDs der beiden Tabellenbl\u00e4tter\n    const gidEN = '0';            \n    const gidES = '1398568784';   \n\n    let currentMode = 'en'; \n    let allSentences = [];\n    let filtered = [];\n    let isBlurred = false; \n    const MAX_RESULTS = 100; \n\n    \/\/ Mehrsprachige Texte f\u00fcr das Interface\n    const translations = {\n        en: {\n            loadingData: \"Loading language data...\",\n            updating: \"Updating sentences...\",\n            placeholder: \"Search sentence or word...\",\n            ready: \"Ready for search.\",\n            loaded: \" sentences loaded.\",\n            typing: \"Keep typing (at least 3 characters)...\",\n            limitInfo: \" matches. Showing first 100.\",\n            matches: \" matches found.\"\n        },\n        es: {\n            loadingData: \"Cargando datos de idioma...\",\n            updating: \"Actualizando frases...\",\n            placeholder: \"Buscar frase o palabra...\",\n            ready: \"Listo para buscar.\",\n            loaded: \" frases cargadas.\",\n            typing: \"Sigue escribiendo (m\u00ednimo 3 caracteres)...\",\n            limitInfo: \" coincidencias. Mostrando las primeras 100.\",\n            matches: \" coincidencias encontradas.\"\n        }\n    };\n\n    \/\/ DOM-Elemente\n    const input = container.querySelector(\"#search-input-field\");\n    const area = container.querySelector(\".sentenceArea\");\n    const statusMsg = container.querySelector(\"#status-msg\");\n    const resetBtn = container.querySelector(\"#clearSearchBtn\");\n    const searchBtn = container.querySelector(\"#main-search-btn\");\n    const languageToggler = container.querySelector(\"#language-toggler\");\n    const togglerIcon = container.querySelector(\"#toggler-icon\");\n    const blurToggler = container.querySelector(\"#blur-toggler\");\n\n    \/\/ Sicherer CSV-Parser\n    function parseCSV(text) {\n        const lines = [];\n        let row = [\"\"];\n        let inQuotes = false;\n\n        for (let i = 0; i < text.length; i++) {\n            const current = text[i];\n            const next = text[i + 1];\n\n            if (current === '\"') {\n                if (inQuotes && next === '\"') {\n                    row[row.length - 1] += '\"';\n                    i++;\n                } else {\n                    inQuotes = !inQuotes;\n                }\n            } else if (current === ',' && !inQuotes) {\n                row.push('');\n            } else if ((current === '\\r' || current === '\\n') && !inQuotes) {\n                if (current === '\\r' && next === '\\n') { i++; }\n                lines.push(row);\n                row = [\"\"];\n            } else {\n                row[row.length - 1] += current;\n            }\n        }\n        if (row.length > 1 || row[0] !== \"\") {\n            lines.push(row);\n        }\n        return lines;\n    }\n\n    \/\/ Aktualisiert das UI beim Sprachwechsel\n    function updateTogglerUI(mode) {\n        if (mode === 'en') {\n            togglerIcon.innerText = \"\ud83c\uddea\ud83c\uddf8\";\n        } else {\n            togglerIcon.innerText = \"\ud83c\uddec\ud83c\udde7\";\n        }\n    }\n\n    \/\/ L\u00e4dt die Tabellendaten\n    async function loadSheetData(mode) {\n        currentMode = mode;\n        updateTogglerUI(mode);\n        \n        const gid = (mode === 'es') ? gidES : gidEN;\n        const base = `https:\/\/docs.google.com\/spreadsheets\/d\/${sheetId}\/gviz\/tq?tqx=out:csv&gid=${gid}`;\n        \n        const langPack = translations[currentMode];\n\n        input.disabled = true;\n        searchBtn.disabled = true;\n        input.placeholder = langPack.loadingData;\n        statusMsg.innerText = langPack.updating;\n        area.innerHTML = \"\";\n\n        try {\n            const response = await fetch(base);\n            if (!response.ok) throw new Error('Network error');\n            \n            const data = await response.text();\n            const parsedRows = parseCSV(data);\n            \n            const dataRows = parsedRows.slice(1); \n\n            allSentences = dataRows.map(cells => {\n                return {\n                    de: (cells[0] || \"\").trim(),\n                    foreign: (cells[1] || \"\").trim()\n                };\n            }).filter(s => s.de !== \"\" && s.foreign !== \"\"); \n            \n            input.disabled = false;\n            searchBtn.disabled = false;\n            input.placeholder = langPack.placeholder;\n            statusMsg.innerText = `${allSentences.length}${langPack.loaded}`;\n            \n            if (input.value.length >= 3) {\n                performSearch(false);\n            }\n        } catch (error) { \n            console.error(\"Fehler beim Abrufen der Daten:\", error);\n            statusMsg.innerText = \"Error loading data. Please check spreadsheet share settings.\"; \n        }\n    }\n\n    \/\/ Vorlesefunktion\n    function speakText(text) {\n        window.speechSynthesis.cancel();\n        const msg = new SpeechSynthesisUtterance(text);\n        msg.lang = 'de-DE';\n        window.speechSynthesis.speak(msg);\n    }\n\n    \/\/ Suchtreffer markieren\n    function highlight(text, query) {\n        if (!query) return text;\n        const escapedQuery = query.replace(\/[.*+?^${}()|[\\]\\\\]\/g, '\\\\$&');\n        return text.replace(new RegExp(`(${escapedQuery})`, \"gi\"), '<mark>$1<\/mark>');\n    }\n\n    \/\/ Filtersuche ausf\u00fchren\n    function performSearch(force = false) {\n        const query = input.value.toLowerCase(); \n        const langPack = translations[currentMode];\n        \n        if (!force && query.length > 0 && query.length < 3) {\n            area.innerHTML = \"\";\n            statusMsg.innerText = langPack.typing;\n            return;\n        }\n\n        if (query.length === 0) {\n            filtered = [];\n            area.innerHTML = \"\";\n            statusMsg.innerText = langPack.ready;\n            return;\n        }\n        \n        const matches = allSentences.filter(s => \n            s.de.toLowerCase().includes(query) || \n            s.foreign.toLowerCase().includes(query)\n        );\n\n        if (matches.length > MAX_RESULTS) {\n            filtered = matches.slice(0, MAX_RESULTS);\n            statusMsg.innerText = `${matches.length}${langPack.limitInfo}`;\n        } else {\n            filtered = matches;\n            statusMsg.innerText = `${filtered.length}${langPack.matches}`;\n        }\n        \n        render();\n    }\n\n    \/\/ Generiert die S\u00e4tze auf dem Bildschirm\n    function render() {\n        const query = input.value; \n        const secondLangLabel = currentMode.toUpperCase();\n\n        area.innerHTML = \"\";\n        filtered.forEach(s => {\n            const div = document.createElement(\"div\");\n            div.className = \"sentence-block\";\n            div.innerHTML = `\n                <div class=\"lang-row-main\">\n                    <span class=\"lang-label\">DE<\/span>\n                    <div class=\"txt-content\">${highlight(s.de, query)}<\/div>\n                    <button class=\"speak-btn\" data-txt=\"${s.de.replace(\/\"\/g, '&quot;')}\" title=\"Vorlesen\">\ud83d\udd0a<\/button>\n                <\/div>\n                <div class=\"lang-row-sub\">\n                    <span class=\"lang-label\">${secondLangLabel}<\/span>\n                    <div class=\"txt-content\">${highlight(s.foreign, query)}<\/div>\n                <\/div>\n            `;\n            \n            const speakBtn = div.querySelector(\".speak-btn\");\n            if (speakBtn) {\n                speakBtn.onclick = function() {\n                    speakText(this.getAttribute('data-txt'));\n                };\n            }\n\n            area.appendChild(div);\n        });\n    }\n\n    \/\/ Event-Listener f\u00fcr den Blur-Button\n    blurToggler.addEventListener(\"click\", function() {\n        isBlurred = !isBlurred;\n        if (isBlurred) {\n            area.classList.add(\"blur-active\");\n            blurToggler.classList.add(\"active\");\n            blurToggler.innerText = \"\ud83d\ude48\"; \n        } else {\n            area.classList.remove(\"blur-active\");\n            blurToggler.classList.remove(\"active\");\n            blurToggler.innerText = \"\ud83d\udc41\ufe0f\";\n        }\n    });\n\n    \/\/ Sprachumschalter binden\n    languageToggler.addEventListener(\"click\", function() {\n        const nextMode = (currentMode === 'en') ? 'es' : 'en';\n        loadSheetData(nextMode);\n    });\n\n    \/\/ Suchmasken-Eventlistener\n    input.addEventListener(\"input\", () => performSearch(false));\n    searchBtn.onclick = () => performSearch(true);\n    input.addEventListener(\"keypress\", (e) => { if (e.key === \"Enter\") performSearch(true); });\n\n    resetBtn.onclick = () => { \n        input.value = \"\"; \n        performSearch(false); \n        input.focus(); \n    };\n\n    \/\/ Direkt beim Start starten\n    loadSheetData('en');\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Word Context Search &times; How to Use the Synonym Finder Level up your German vocabulary in three easy steps: Search: Enter any German word (noun, verb, or adjective) into the search bar. Explore Meanings: Look at the Bedeutung (Meaning) section to find the context that matches what you want to say. Select: Choose from the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1279","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Word Context Search - sofapiano<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sofapiano.com\/es\/word-context-search\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Word Context Search - sofapiano\" \/>\n<meta property=\"og:description\" content=\"Word Context Search &times; How to Use the Synonym Finder Level up your German vocabulary in three easy steps: Search: Enter any German word (noun, verb, or adjective) into the search bar. Explore Meanings: Look at the Bedeutung (Meaning) section to find the context that matches what you want to say. Select: Choose from the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sofapiano.com\/es\/word-context-search\/\" \/>\n<meta property=\"og:site_name\" content=\"sofapiano\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-18T18:50:08+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sofapiano.com\\\/word-context-search\\\/\",\"url\":\"https:\\\/\\\/sofapiano.com\\\/word-context-search\\\/\",\"name\":\"Word Context Search - sofapiano\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sofapiano.com\\\/#website\"},\"datePublished\":\"2026-04-03T22:49:08+00:00\",\"dateModified\":\"2026-05-18T18:50:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sofapiano.com\\\/word-context-search\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sofapiano.com\\\/word-context-search\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sofapiano.com\\\/word-context-search\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start\",\"item\":\"https:\\\/\\\/sofapiano.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Word Context Search\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sofapiano.com\\\/#website\",\"url\":\"https:\\\/\\\/sofapiano.com\\\/\",\"name\":\"sofapiano\",\"description\":\"Learn German through translation\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sofapiano.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Word Context Search - sofapiano","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sofapiano.com\/es\/word-context-search\/","og_locale":"es_ES","og_type":"article","og_title":"Word Context Search - sofapiano","og_description":"Word Context Search &times; How to Use the Synonym Finder Level up your German vocabulary in three easy steps: Search: Enter any German word (noun, verb, or adjective) into the search bar. Explore Meanings: Look at the Bedeutung (Meaning) section to find the context that matches what you want to say. Select: Choose from the [&hellip;]","og_url":"https:\/\/sofapiano.com\/es\/word-context-search\/","og_site_name":"sofapiano","article_modified_time":"2026-05-18T18:50:08+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sofapiano.com\/word-context-search\/","url":"https:\/\/sofapiano.com\/word-context-search\/","name":"Word Context Search - sofapiano","isPartOf":{"@id":"https:\/\/sofapiano.com\/#website"},"datePublished":"2026-04-03T22:49:08+00:00","dateModified":"2026-05-18T18:50:08+00:00","breadcrumb":{"@id":"https:\/\/sofapiano.com\/word-context-search\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sofapiano.com\/word-context-search\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sofapiano.com\/word-context-search\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/sofapiano.com\/"},{"@type":"ListItem","position":2,"name":"Word Context Search"}]},{"@type":"WebSite","@id":"https:\/\/sofapiano.com\/#website","url":"https:\/\/sofapiano.com\/","name":"sofapiano","description":"Aprende alem\u00e1n a trav\u00e9s de la traducci\u00f3n","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sofapiano.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"_links":{"self":[{"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/pages\/1279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/comments?post=1279"}],"version-history":[{"count":0,"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/pages\/1279\/revisions"}],"wp:attachment":[{"href":"https:\/\/sofapiano.com\/es\/wp-json\/wp\/v2\/media?parent=1279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}