{"id":8345,"date":"2026-07-21T07:44:44","date_gmt":"2026-07-21T07:44:44","guid":{"rendered":"https:\/\/www.tiwish.net\/?page_id=8345"},"modified":"2026-07-24T19:04:37","modified_gmt":"2026-07-24T19:04:37","slug":"%da%af%d9%89%d8%b1%d9%85%d8%a7%d9%86%da%86%db%95-%d8%a6%db%90%d8%ba%d9%89%d8%b2-%d8%aa%d9%89%d9%84%d9%89-%d9%85%db%95%d8%b4%d9%89%d9%82%d9%89","status":"publish","type":"page","link":"https:\/\/www.tiwish.net\/?page_id=8345","title":{"rendered":"\u06af\u0649\u0631\u0645\u0627\u0646 \u062a\u0649\u0644\u0649 \u064a\u0627\u0631\u062f\u06d5\u0645\u0686\u0649\u0633\u0649"},"content":{"rendered":"\n<script data-wp-block-html=\"js\">\n<!-- 1. \u0643\u06c6\u0631\u06c8\u0646\u06c8\u0634 (UI) \u0642\u0649\u0633\u0645\u0649 -->\n<div style=\"font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 600px; margin: auto; padding: 15px; background: #f7f7f7; border-radius: 16px;\">\n    <h2 style=\"text-align: center; color: #58cc02; font-size: 20px; margin-bottom: 5px;\">&#x1f1e9;&#x1f1ea; AI \u06af\u06d0\u0631\u0645\u0627\u0646\u0686\u06d5 \u0633\u06c6\u0632\u0644\u06c8\u0643<\/h2>\n    <div id=\"wpAiTimer\" style=\"text-align: center; font-weight: bold; color: #ff9600; margin-bottom: 10px; font-size: 15px;\">&#x1f916; \u0633\u06c8\u0646\u0626\u0649\u064a \u0626\u06d5\u0642\u0649\u0644 \u062a\u06d5\u064a\u064a\u0627\u0631<\/div>\n    \n    <div style=\"background: white; border-radius: 16px; padding: 15px; box-shadow: 0 4px 10px rgba(0,0,0,0.05); margin-bottom: 15px;\">\n        <div id=\"wpAiContent\" style=\"height: 45vh; overflow-y: auto; display: flex; flex-direction: column; gap: 12px; padding-right: 5px;\">\n            <div style=\"padding: 14px 16px; border-radius: 16px; line-height: 1.5; font-size: 15px; background: #e8f4fd; color: #0d3b66; border-left: 4px solid #1cb0f6;\">\n                &#x1f44b; \u062e\u06c7\u0634 \u0643\u06d5\u067e\u0633\u0649\u0632! \u062a\u06c6\u06cb\u06d5\u0646\u062f\u0649\u0643\u0649 \u0643\u06c7\u0646\u06c7\u067e\u0643\u0649\u0646\u0649 \u0628\u0627\u0633\u0633\u0649\u06ad\u0649\u0632\u060c \u0633\u06c8\u0646\u0626\u0649\u064a \u0626\u06d5\u0642\u0649\u0644 B1\/B2 \u0633\u06d5\u06cb\u0649\u064a\u06d5\u0633\u0649\u062f\u0649\u0643\u0649 <b>15 \u064a\u06d0\u06ad\u0649 \u0633\u06c6\u0632 \u06cb\u06d5 \u0633\u06c6\u0632 \u0628\u0649\u0631\u0649\u0643\u0645\u0649\u0633\u0649\u0646\u0649<\/b> \u0645\u06d5\u0646\u0649\u0644\u0649\u0631\u0649 \u06cb\u06d5 \u0645\u0649\u0633\u0627\u0644\u0644\u0649\u0631\u0649 \u0628\u0649\u0644\u06d5\u0646 \u062f\u06d5\u0631\u06be\u0627\u0644 \u062a\u06d5\u064a\u064a\u0627\u0631\u0644\u0627\u067e \u0628\u06d0\u0631\u0649\u062f\u06c7.\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div style=\"display: flex; gap: 10px; flex-direction: column;\">\n        <button type=\"button\" id=\"vocabBtn\" style=\"padding: 15px; font-size: 17px; font-weight: bold; border-radius: 14px; border: none; cursor: pointer; color: white; background: #58cc02; box-shadow: 0 4px 0 #46a302;\">&#x1f680; 15 \u0633\u06c6\u0632\u0646\u0649 \u0686\u0649\u0642\u0649\u0631\u0649\u0634<\/button>\n        <button type=\"button\" id=\"summaryBtn\" style=\"padding: 15px; font-size: 17px; font-weight: bold; border-radius: 14px; border: none; cursor: pointer; color: white; background: #ff4b4b; box-shadow: 0 4px 0 #cc3c3c;\">&#x1f3c1; \u0645\u06d5\u0634\u0649\u0642\u0646\u0649 \u0626\u0627\u062e\u0649\u0631\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634 \u06cb\u06d5 \u06af\u0649\u0631\u0627\u0645\u0645\u0627\u062a\u0649\u0643\u0627<\/button>\n    <\/div>\n<\/div>\n\n<!-- 2. \u062c\u0627\u06cb\u0627\u0633\u0643\u0649\u0631\u0649\u067e\u0bcd\u0b9f\u0bcd (JavaScript) \u0642\u0649\u0633\u0645\u0649 \u0626\u0627\u064a\u0631\u0649\u0645 \u06cb\u06d5 \u0645\u06c7\u0633\u062a\u06d5\u0642\u0649\u0644 -->\n<\/script>\n\n<div id=\"vocabAppBox\" dir=\"rtl\" style=\"font-family: 'UKIJ Tuz Tom', 'ALKATIP Basma Tom', Tahoma, -apple-system, sans-serif; max-width: 650px; margin: auto; padding: 20px; background: #f9f9f9; border-radius: 18px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); text-align: right;\">\n    <h2 style=\"text-align: center; color: #4F46E5; font-size: 22px; margin-bottom: 5px;\">&#x2728; OpenRouter \u0628\u0649\u0644\u06d5\u0646 &#x1f1e9;&#x1f1ea; B1\/B2 \u06af\u06d0\u0631\u0645\u0627\u0646\u0686\u06d5 \u0633\u06c6\u0632\u0644\u06c8\u0643<\/h2>\n    <div id=\"appStatus\" style=\"text-align: center; font-weight: bold; color: #059669; margin-bottom: 15px; font-size: 15px;\">&#x1f31f; \u06af\u06d0\u0631\u0645\u0627\u0646 \u062a\u0649\u0644\u0649 \u0626\u06c6\u06af\u0649\u0646\u0649\u0634 \u0633\u06d5\u067e\u0649\u0631\u0649\u06ad\u0649\u0632\u06af\u06d5 \u062a\u06d5\u064a\u064a\u0627\u0631!<\/div>\n    \n    <div style=\"background: white; border-radius: 16px; padding: 18px; box-shadow: 0 4px 12px rgba(0,0,0,0.05); margin-bottom: 15px;\">\n        <div id=\"appScreen\" style=\"height: 55vh; overflow-y: auto; display: flex; flex-direction: column; gap: 15px; padding-left: 5px; line-height: 1.8; font-size: 15px; color: #2c3e50;\">\n            <div style=\"padding: 16px; border-radius: 14px; background: #e0e7ff; color: #3730a3; border-right: 5px solid #4F46E5;\">\n                &#x1f44b; \u062e\u06c7\u0634 \u0643\u06d5\u067e\u0633\u0649\u0632! <b>&#x00AB;&#x2728; OpenRouter \u062f\u0649\u0646 15 \u064a\u06d0\u06ad\u0649 \u0633\u06c6\u0632 \u0626\u0649\u0632\u062f\u06d5\u0634&#x00BB;<\/b> \u0643\u06c7\u0646\u06c7\u067e\u0643\u0649\u0633\u0649\u0646\u0649 \u0628\u0627\u0633\u0633\u0649\u06ad\u0649\u0632\u060c B1\/B2 \u062f\u06d5\u0631\u0649\u062c\u0649\u0644\u0649\u0643 \u0633\u06c6\u0632\u0644\u06d5\u0631 \u0686\u0649\u0642\u0649\u062f\u06c7. &#x1f50a; \u0646\u0649 \u0628\u06d0\u0633\u0649\u067e \u0626\u0627\u06ad\u0644\u0649\u064a\u0627\u0644\u0627\u064a\u0633\u0649\u0632 \u06cb\u06d5 \u064a\u06d0\u0632\u0649\u067e \u0645\u06d5\u0634\u0649\u0642 \u0642\u0649\u0644\u0627\u0644\u0627\u064a\u0633\u0649\u0632.\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div style=\"display: flex; gap: 12px; flex-direction: column;\">\n        <button type=\"button\" id=\"btnVocab\" style=\"padding: 16px; font-size: 17px; font-weight: bold; border-radius: 14px; border: none; cursor: pointer; color: white; background: #4F46E5; box-shadow: 0 4px 0 #3730a3; width: 100%;\">&#x2728; OpenRouter \u062f\u0649\u0646 15 \u064a\u06d0\u06ad\u0649 \u0633\u06c6\u0632 \u0626\u0649\u0632\u062f\u06d5\u0634<\/button>\n        <button type=\"button\" id=\"btnQuiz\" style=\"display: none; padding: 16px; font-size: 17px; font-weight: bold; border-radius: 14px; border: none; cursor: pointer; color: white; background: #D97706; box-shadow: 0 4px 0 #b45309; width: 100%;\">&#x270d;&#xfe0f; \u064a\u06d0\u0632\u0649\u0642\u0686\u06d5 \u0645\u06d5\u0634\u0649\u0642\u0646\u0649 \u0628\u0627\u0634\u0644\u0627\u0634<\/button>\n    <\/div>\n<\/div>\n\n<script>\n(function() {\n    const OPENROUTER_API_KEY = \"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\"; \n    const API_URL = \"https:\/\/openrouter.ai\/api\/v1\/chat\/completions\";\n\n    let aiData = null;\n    window.quizAttempts = {}; \n\n    const btnV = document.getElementById('btnVocab');\n    const btnQ = document.getElementById('btnQuiz');\n    const screen = document.getElementById('appScreen');\n    const status = document.getElementById('appStatus');\n\n    window.speakGerman = function(text) {\n        if ('speechSynthesis' in window) {\n            window.speechSynthesis.cancel();\n            let msg = new SpeechSynthesisUtterance(text);\n            msg.lang = 'de-DE'; \n            msg.rate = 0.9; \n            window.speechSynthesis.speak(msg);\n        } else {\n            alert(\"\u062a\u0648\u0631\u0643\u06c6\u0631\u06af\u06c8\u0686\u0649\u06ad\u0649\u0632 \u0626\u0627\u06cb\u0627\u0632 \u0628\u06d0\u0631\u0649\u0634\u0646\u0649 \u0642\u0648\u0644\u0644\u0649\u0645\u0627\u064a\u062f\u0649\u0643\u06d5\u0646.\");\n        }\n    };\n\n    btnV.onclick = async function() {\n        btnV.disabled = true;\n        btnV.style.opacity = \"0.7\";\n        btnV.textContent = \"&#x1f52e; OpenRouter \u0633\u06c6\u0632\u0644\u06d5\u0631\u0646\u0649 \u062a\u06d5\u064a\u064a\u0627\u0631\u0644\u0627\u06cb\u0627\u062a\u0649\u062f\u06c7...\";\n        status.textContent = \"&#x2728; \u0633\u06c8\u0646\u0626\u0649\u064a \u0626\u0649\u062f\u0631\u0627\u0643 \u0628\u0649\u0644\u06d5\u0646 \u0626\u0627\u0644\u0627\u0642\u0649\u0644\u0649\u0634\u0649\u06cb\u0627\u062a\u0649\u062f\u06c7...\";\n        btnQ.style.display = 'none';\n        window.quizAttempts = {}; \n\n        const promptText = `You are a German B1\/B2 level language teacher for Uyghur native speakers. \nGenerate a strict JSON object with:\n1. \"vocabularies\": Array of 15 distinct B1 or B2 level German words\/phrases. Each item has:\n   - \"de\": German word with article and plural (e.g., \"die Veranstaltung, -en\")\n   - \"clean\": German word only without article or plural (e.g., \"die Veranstaltung\")\n   - \"uz\": Correct Uyghur translation in proper Uyghur Arabic Script (Perso-Arabic) (e.g., \"\u067e\u0627\u0626\u0627\u0644\u0649\u064a\u06d5\u062a\")\n   - \"ex\": German example sentence\n2. \"quiz\": Array of 3 items from the vocabularies above for typing practice. Each item:\n   - \"uzPrompt\": Uyghur translation from vocabularies\n   - \"correct\": The correct \"clean\" German word (e.g. \"die Veranstaltung\")\n3. \"complexSentence\": One B2 level German complex sentence using grammar like obwohl, weil, wenn, damit, je...desto, etc.\n   - \"sent\": German complex sentence\n   - \"uz\": Correct Uyghur translation in proper Uyghur Arabic Script\n   - \"grammar\": Short Uyghur grammar explanation highlighting verb position and sentence structure in Uyghur Arabic Script.\n\nCRITICAL: All Uyghur text MUST be valid Uyghur language in proper Uyghur Arabic script (Perso-Arabic). Reply ONLY with a valid JSON object. Do not include markdown tags or any extra text outside the JSON.`;\n\n        try {\n            const response = await fetch(API_URL, {\n                method: \"POST\",\n                headers: { \n                    \"Content-Type\": \"application\/json\",\n                    \"Authorization\": `Bearer ${OPENROUTER_API_KEY}`,\n                    \"HTTP-Referer\": window.location.href,\n                    \"X-Title\": \"Uyghur German Vocab App\"\n                },\n                body: JSON.stringify({\n                    model: \"google\/gemini-1.5-flash:free\",\n                    messages: [{ role: \"user\", content: promptText }],\n                    response_format: { type: \"json_object\" },\n                    temperature: 0.7\n                })\n            });\n\n            const data = await response.json();\n\n            if (!response.ok || data.error) {\n                let errMsg = data.error ? data.error.message : response.status;\n                throw new Error(\"OpenRouter \u062e\u0627\u062a\u0627\u0644\u0649\u0642\u0649: \" + errMsg);\n            }\n\n            let aiContent = data.choices[0].message.content;\n            \n            \/\/ Clean up markdown code blocks if any\n            aiContent = aiContent.replace(\/```json\/g, \"\").replace(\/\n<\/script>","protected":false},"excerpt":{"rendered":"<p>&#x2728; OpenRouter \u0628\u0649\u0644\u06d5\u0646 &#x1f1e9;&#x1f1ea; B1\/B2 \u06af\u06d0\u0631\u0645\u0627\u0646\u0686\u06d5 \u0633\u06c6\u0632\u0644\u06c8\u0643 &#x1f31f; \u06af\u06d0\u0631\u0645\u0627\u0646 \u062a\u0649\u0644\u0649 \u0626\u06c6\u06af\u0649\u0646\u0649\u0634 \u0633\u06d5\u067e\u0649\u0631\u0649\u06ad\u0649\u0632\u06af\u06d5 \u062a\u06d5\u064a\u064a\u0627\u0631! &#x1f44b; \u062e\u06c7\u0634 \u0643\u06d5\u067e\u0633\u0649\u0632! &#x00AB;&#x2728; OpenRouter \u062f\u0649\u0646 15 \u064a\u06d0\u06ad\u0649 \u0633\u06c6\u0632 \u0626\u0649\u0632\u062f\u06d5\u0634&#x00BB; \u0643\u06c7\u0646\u06c7\u067e\u0643\u0649\u0633\u0649\u0646\u0649 \u0628\u0627\u0633\u0633\u0649\u06ad\u0649\u0632\u060c B1\/B2 \u062f\u06d5\u0631\u0649\u062c\u0649\u0644\u0649\u0643 \u0633\u06c6\u0632\u0644\u06d5\u0631 \u0686\u0649\u0642\u0649\u062f\u06c7. &#x1f50a; \u0646\u0649 \u0628\u06d0\u0633\u0649\u067e \u0626\u0627\u06ad\u0644\u0649\u064a\u0627\u0644\u0627\u064a\u0633\u0649\u0632 \u06cb\u06d5 \u064a\u06d0\u0632\u0649\u067e \u0645\u06d5\u0634\u0649\u0642 \u0642\u0649\u0644\u0627\u0644\u0627\u064a\u0633\u0649\u0632. &#x2728; OpenRouter \u062f\u0649\u0646 15 \u064a\u06d0\u06ad\u0649 \u0633\u06c6\u0632 \u0626\u0649\u0632\u062f\u06d5\u0634 &#x270d;&#xfe0f; \u064a\u06d0\u0632\u0649\u0642\u0686\u06d5 \u0645\u06d5\u0634\u0649\u0642\u0646\u0649 \u0628\u0627\u0634\u0644\u0627\u0634<\/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-8345","page","type-page","status-publish","hentry"],"blocksy_meta":{"page_structure_type":"type-3","has_hero_section":"enabled","styles_descriptor":{"styles":{"desktop":"[data-prefix=\"single_page\"] .entry-header .page-title {--theme-font-size:30px;} [data-prefix=\"single_page\"] .entry-header .entry-meta {--theme-font-weight:600;--theme-text-transform:uppercase;--theme-font-size:12px;--theme-line-height:1.3;}","tablet":"","mobile":""},"google_fonts":{"Scheherazade New":["n4","n6"]},"version":7},"vertical_spacing_source":"custom","content_area_spacing":"none"},"_links":{"self":[{"href":"https:\/\/www.tiwish.net\/index.php?rest_route=\/wp\/v2\/pages\/8345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tiwish.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.tiwish.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.tiwish.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tiwish.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8345"}],"version-history":[{"count":34,"href":"https:\/\/www.tiwish.net\/index.php?rest_route=\/wp\/v2\/pages\/8345\/revisions"}],"predecessor-version":[{"id":8380,"href":"https:\/\/www.tiwish.net\/index.php?rest_route=\/wp\/v2\/pages\/8345\/revisions\/8380"}],"wp:attachment":[{"href":"https:\/\/www.tiwish.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}