{"id":17308,"date":"2026-09-22T22:21:05","date_gmt":"2026-09-22T14:21:05","guid":{"rendered":"https:\/\/tiffanysmandarin.com\/?p=17308"},"modified":"2026-10-14T22:50:52","modified_gmt":"2026-10-14T14:50:52","slug":"vegetable-practice","status":"publish","type":"post","link":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/","title":{"rendered":"Chinese vegetable vocabulary"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/#%F0%9F%93%9A_Vegetable_Flashcards_Click_to_Flip_%C2%B7_Click_%F0%9F%94%8A_to_Listen\" >\ud83d\udcda Vegetable Flashcards (Click to Flip \u00b7 Click \ud83d\udd0a to Listen)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/#%F0%9F%9B%92_Crazy_Market_Vegetable_Challenge\" >\ud83d\uded2 Crazy Market: Vegetable Challenge<\/a><\/li><\/ul><\/nav><\/div>\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Vegetable Flashcards &#038; Market Game<\/title>\n    <style>\n        :root {\n            --bg-color: #ffffff;\n            --card-bg: #ffffff;\n            --border-color: #eaeaea;\n            --accent-blue: #7a9cb5; \/* Morandi Blue *\/\n            --accent-hover: #65849d;\n            --text-main: #333333;\n            --text-sub: #777777;\n            --danger: #d9534f;\n            --success: #3c763d;\n        }\n\n        html {\n            scroll-behavior: smooth;\n        }\n\n        body {\n            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang TC', 'Microsoft JhengHei', sans-serif;\n            background-color: var(--bg-color);\n            color: var(--text-main);\n            margin: 0;\n            padding: 20px 15px 60px 15px;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n        }\n\n        .main-wrapper {\n            width: 100%;\n            max-width: 1050px;\n        }\n\n        \/* Top Global Toolbar *\/\n        #global-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            padding-bottom: 15px;\n            border-bottom: 2px solid var(--border-color);\n            margin-bottom: 25px;\n        }\n\n        .nav-links {\n            display: flex;\n            gap: 12px;\n        }\n\n        .btn-link {\n            text-decoration: none;\n            color: var(--accent-blue);\n            font-size: 15px;\n            font-weight: 500;\n            padding: 6px 14px;\n            border: 1px solid var(--accent-blue);\n            border-radius: 20px;\n            transition: all 0.2s;\n        }\n\n        .btn-link:hover {\n            background-color: var(--accent-blue);\n            color: #ffffff;\n        }\n\n        .btn-primary {\n            background-color: var(--card-bg);\n            border: 1px solid var(--accent-blue);\n            color: var(--accent-blue);\n            padding: 6px 16px;\n            border-radius: 20px;\n            cursor: pointer;\n            font-size: 14px;\n            font-weight: bold;\n            transition: all 0.2s;\n        }\n\n        .btn-primary:hover {\n            background-color: var(--accent-blue);\n            color: #ffffff;\n        }\n\n        \/* Section Headers *\/\n        .section-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 18px;\n            flex-wrap: wrap;\n            gap: 10px;\n        }\n\n        .section-title {\n            font-size: 22px;\n            font-weight: bold;\n            color: var(--accent-blue);\n            margin: 0;\n            display: flex;\n            align-items: center;\n            gap: 8px;\n        }\n\n        .header-actions {\n            display: flex;\n            gap: 8px;\n        }\n\n        \/* ================= Flashcard Section (3D Flip) ================= *\/\n        #flashcard-section {\n            margin-bottom: 45px;\n        }\n\n        #flashcard-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(145px, 1fr));\n            gap: 16px;\n            transition: all 0.3s ease;\n        }\n\n        .flashcard {\n            background-color: transparent;\n            perspective: 1000px;\n            height: 205px;\n            cursor: pointer;\n            user-select: none;\n        }\n\n        .card-inner {\n            position: relative;\n            width: 100%;\n            height: 100%;\n            text-align: center;\n            transition: transform 0.6s cubic-bezier(0.4, 0.2, 0.2, 1);\n            transform-style: preserve-3d;\n        }\n\n        .flashcard.is-flipped .card-inner {\n            transform: rotateY(180deg);\n        }\n\n        .card-front, .card-back {\n            position: absolute;\n            width: 100%;\n            height: 100%;\n            -webkit-backface-visibility: hidden;\n            backface-visibility: hidden;\n            border-radius: 12px;\n            box-sizing: border-box;\n            background-color: var(--card-bg);\n            border: 1px solid var(--border-color);\n            box-shadow: 0 2px 6px rgba(0,0,0,0.04);\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: space-between;\n            padding: 10px 8px 8px 8px;\n            transition: border-color 0.2s, box-shadow 0.2s;\n        }\n\n        .card-front:hover, .card-back:hover {\n            border-color: var(--accent-blue);\n            box-shadow: 0 6px 14px rgba(122,156,181,0.2);\n        }\n\n        .card-badge {\n            position: absolute;\n            top: 7px;\n            left: 7px;\n            font-size: 11px;\n            color: #ffffff;\n            background-color: var(--accent-blue);\n            border-radius: 50%;\n            width: 18px;\n            height: 18px;\n            line-height: 18px;\n            text-align: center;\n            font-weight: bold;\n        }\n\n        \/* Audio button *\/\n        .audio-btn {\n            position: absolute;\n            top: 7px;\n            right: 7px;\n            width: 22px;\n            height: 22px;\n            border-radius: 50%;\n            background-color: #ffffff;\n            border: 1px solid var(--accent-blue);\n            color: var(--accent-blue);\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-size: 11px;\n            cursor: pointer;\n            transition: all 0.2s ease;\n            z-index: 10;\n        }\n\n        .audio-btn:hover {\n            background-color: var(--accent-blue);\n            color: #ffffff;\n            transform: scale(1.15);\n        }\n\n        .audio-btn:active {\n            transform: scale(0.95);\n        }\n\n        .audio-btn-inline {\n            background: none;\n            border: none;\n            cursor: pointer;\n            color: var(--accent-blue);\n            font-size: 14px;\n            padding: 0 0 0 4px;\n            vertical-align: middle;\n            transition: transform 0.15s;\n        }\n\n        .audio-btn-inline:hover {\n            transform: scale(1.25);\n        }\n\n        \/* Card Front Layout *\/\n        .image-wrapper {\n            width: 76px;\n            height: 76px;\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            font-size: 44px;\n            margin-top: 10px;\n        }\n\n        .image-wrapper img {\n            max-width: 100%;\n            max-height: 100%;\n            object-fit: contain;\n            border-radius: 6px;\n            pointer-events: none;\n        }\n\n        .text-wrapper {\n            text-align: center;\n            width: 100%;\n            border-top: 1px dashed var(--border-color);\n            padding-top: 5px;\n        }\n\n        .hanzi {\n            font-size: 18px;\n            font-weight: bold;\n            color: var(--text-main);\n            margin-bottom: 2px;\n        }\n\n        .pinyin {\n            font-size: 12px;\n            color: var(--text-sub);\n            font-family: Arial, sans-serif;\n        }\n\n        .flip-hint {\n            font-size: 10px;\n            color: #aaaaaa;\n            margin-top: 2px;\n        }\n\n        \/* Card Back Layout (Translations) *\/\n        .card-back {\n            transform: rotateY(180deg);\n            background-color: #fafbfc;\n            justify-content: flex-start;\n            padding: 12px 8px 8px 8px;\n        }\n\n        .trans-list {\n            width: 100%;\n            display: flex;\n            flex-direction: column;\n            gap: 5px;\n            margin-top: 20px;\n            margin-bottom: 6px;\n            text-align: left;\n        }\n\n        .trans-item {\n            display: flex;\n            align-items: center;\n            gap: 5px;\n            font-size: 12px;\n            line-height: 1.25;\n        }\n\n        .lang-pill {\n            font-size: 9px;\n            font-weight: bold;\n            background-color: #edf2f7;\n            color: var(--accent-blue);\n            padding: 2px 4px;\n            border-radius: 4px;\n            flex-shrink: 0;\n        }\n\n        .trans-text {\n            font-weight: 600;\n            color: var(--text-main);\n            overflow: hidden;\n            text-overflow: ellipsis;\n            white-space: nowrap;\n        }\n\n        .back-sub {\n            font-size: 11px;\n            color: var(--text-sub);\n            margin-top: auto;\n            border-top: 1px dashed var(--border-color);\n            padding-top: 4px;\n            width: 100%;\n            text-align: center;\n        }\n\n        .divider {\n            border: 0;\n            height: 1px;\n            background: linear-gradient(to right, transparent, var(--accent-blue), transparent);\n            margin: 25px 0 40px 0;\n        }\n\n        \/* ================= Market Game Section ================= *\/\n        #game-section {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            text-align: center;\n        }\n\n        .game-panel {\n            width: 100%;\n            max-width: 820px;\n        }\n\n        #game-dashboard {\n            display: flex;\n            justify-content: space-between;\n            font-size: 20px;\n            font-weight: bold;\n            padding-bottom: 12px;\n            border-bottom: 2px solid var(--border-color);\n            margin-bottom: 18px;\n        }\n\n        #customer-bubble {\n            background-color: var(--card-bg);\n            border: 2px solid var(--accent-blue);\n            border-radius: 16px;\n            padding: 24px;\n            margin-bottom: 20px;\n            box-shadow: 0 4px 12px rgba(122,156,181,0.1);\n            min-height: 56px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n        }\n\n        #order-display {\n            font-size: 26px;\n            font-weight: bold;\n            color: var(--text-main);\n            width: 100%;\n        }\n\n        #order-display strong {\n            color: var(--accent-blue);\n            border-bottom: 2px solid var(--accent-blue);\n            padding-bottom: 2px;\n        }\n\n        \/* Game Over Layout *\/\n        .game-over-title {\n            font-size: 28px !important;\n            font-weight: bold !important;\n            color: var(--text-main) !important;\n            margin-bottom: 24px !important;\n            line-height: 1.4 !important;\n        }\n\n        .game-over-revenue {\n            font-size: 26px !important;\n            font-weight: bold !important;\n            color: var(--text-main) !important;\n            margin-top: 0 !important;\n            line-height: 1.4 !important;\n        }\n\n        #feedback-msg {\n            font-size: 18px;\n            height: 26px;\n            margin-bottom: 14px;\n            font-weight: bold;\n        }\n\n        #stall-grid {\n            display: grid;\n            grid-template-columns: repeat(6, 1fr);\n            gap: 10px;\n            margin-bottom: 22px;\n        }\n\n        .stall-item {\n            position: relative;\n            background-color: var(--card-bg);\n            border: 1px solid var(--border-color);\n            border-radius: 10px;\n            padding: 6px;\n            font-size: 34px;\n            cursor: pointer;\n            transition: all 0.15s ease;\n            box-shadow: 0 2px 5px rgba(0,0,0,0.03);\n            user-select: none;\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            height: 72px;\n            overflow: hidden;\n        }\n\n        .stall-item img {\n            max-width: 90%;\n            max-height: 90%;\n            object-fit: contain;\n            pointer-events: none;\n            border-radius: 4px;\n        }\n\n        .stall-item:hover, .stall-item:active {\n            background-color: var(--accent-blue);\n            border-color: var(--accent-blue);\n            color: #ffffff;\n            transform: scale(1.05);\n            box-shadow: 0 4px 10px rgba(122,156,181,0.25);\n        }\n\n        .stall-item .item-id {\n            position: absolute;\n            top: 3px;\n            left: 3px;\n            font-size: 11px;\n            color: #999999;\n            background: rgba(255,255,255,0.85);\n            border-radius: 50%;\n            width: 16px;\n            height: 16px;\n            line-height: 16px;\n            text-align: center;\n            z-index: 5;\n        }\n\n        .btn-action {\n            background-color: var(--accent-blue);\n            color: #ffffff;\n            border: none;\n            padding: 13px 32px;\n            font-size: 19px;\n            font-weight: bold;\n            border-radius: 30px;\n            cursor: pointer;\n            transition: background-color 0.2s, transform 0.1s;\n            box-shadow: 0 4px 8px rgba(122,156,181,0.25);\n        }\n\n        .btn-action:hover {\n            background-color: var(--accent-hover);\n            transform: scale(1.02);\n        }\n\n        @media (max-width: 768px) {\n            #stall-grid {\n                grid-template-columns: repeat(4, 1fr);\n            }\n            #order-display {\n                font-size: 20px;\n            }\n            .game-over-title {\n                font-size: 22px !important;\n                margin-bottom: 18px !important;\n            }\n            .game-over-revenue {\n                font-size: 20px !important;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n\n<div class=\"main-wrapper\">\n    <!-- Top Global Header -->\n    <header id=\"global-header\">\n        <div class=\"nav-links\">\n            <a href=\"#flashcard-section\" class=\"btn-link\">\ud83d\udcd6 Flashcards<\/a>\n            <a href=\"#game-section\" class=\"btn-link\">\ud83c\udfae Market Game<\/a>\n        <\/div>\n        <div>\n            <button class=\"btn-primary\" id=\"lang-btn\" onclick=\"toggleLanguage()\">Switch to Simplified<\/button>\n        <\/div>\n    <\/header>\n\n    <!-- Flashcard Section -->\n    <section id=\"flashcard-section\">\n        <div class=\"section-header\">\n            <h2 class=\"section-title\" id=\"fc-title\"><span class=\"ez-toc-section\" id=\"%F0%9F%93%9A_Vegetable_Flashcards_Click_to_Flip_%C2%B7_Click_%F0%9F%94%8A_to_Listen\"><\/span>\ud83d\udcda Vegetable Flashcards (Click to Flip \u00b7 Click \ud83d\udd0a to Listen)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n            <div class=\"header-actions\">\n                <button class=\"btn-primary\" id=\"flip-all-btn\" onclick=\"toggleFlipAll()\">\ud83d\udd04 Flip All<\/button>\n                <button class=\"btn-primary\" id=\"toggle-fc-btn\" onclick=\"toggleFlashcardDisplay()\">Hide Cards (Blind Mode)<\/button>\n            <\/div>\n        <\/div>\n        <div id=\"flashcard-grid\">\n            <!-- Cards generated dynamically -->\n        <\/div>\n    <\/section>\n\n    <hr class=\"divider\">\n\n    <!-- Market Game Section -->\n    <section id=\"game-section\">\n        <div class=\"game-panel\">\n            <div class=\"section-header\" style=\"justify-content: center; margin-bottom: 20px;\">\n                <h2 class=\"section-title\" id=\"gm-title\"><span class=\"ez-toc-section\" id=\"%F0%9F%9B%92_Crazy_Market_Vegetable_Challenge\"><\/span>\ud83d\uded2 Crazy Market: Vegetable Challenge<span class=\"ez-toc-section-end\"><\/span><\/h2>\n            <\/div>\n\n            <div id=\"game-dashboard\">\n                <div>\u23f3 <span id=\"time-label\">Time<\/span>: <span id=\"time\">90<\/span>s<\/div>\n                <div>\ud83d\udcb0 <span id=\"revenue-label\">Revenue<\/span>: $<span id=\"score\">0<\/span><\/div>\n            <\/div>\n\n            <div id=\"feedback-msg\"><\/div>\n\n            <div id=\"customer-bubble\">\n                <div id=\"order-display\">Click the button below to start!<\/div>\n            <\/div>\n\n            <div id=\"stall-grid\">\n                <!-- Stall cards generated dynamically -->\n            <\/div>\n\n            <div>\n                <button class=\"btn-action\" id=\"start-btn\" onclick=\"startGame()\">Start Game<\/button>\n                <button class=\"btn-action\" id=\"restart-btn\" onclick=\"startGame()\" style=\"display: none;\">Play Again<\/button>\n            <\/div>\n        <\/div>\n    <\/section>\n<\/div>\n\n<script>\n    \/\/ Full 31 Vegetables Database\n    const veggieDatabase = [\n        { id: 1, tc: \"\u9752\u6912\", sc: \"\u9752\u6912\", pinyin: \"q\u012bngji\u0101o\", en: \"Green Pepper\", ja: \"\u30d4\u30fc\u30de\u30f3\", ko: \"\ud53c\ub9dd\", emoji: \"\ud83e\uded1\" },\n        { id: 2, tc: \"\u5357\u74dc\", sc: \"\u5357\u74dc\", pinyin: \"n\u00e1ngu\u0101\", en: \"Pumpkin\", ja: \"\u304b\u307c\u3061\u3083\", ko: \"\ub2e8\ud638\ubc15\", emoji: \"\ud83c\udf83\" },\n        { id: 3, tc: \"\u7389\u7c73\", sc: \"\u7389\u7c73\", pinyin: \"y\u00f9m\u01d0\", en: \"Corn\", ja: \"\u3068\u3046\u3082\u308d\u3053\u3057\", ko: \"\uc625\uc218\uc218\", emoji: \"\ud83c\udf3d\" },\n        { id: 4, tc: \"\u756a\u85af\", sc: \"\u756a\u85af\", pinyin: \"f\u0101nsh\u01d4\", en: \"Sweet Potato\", ja: \"\u3055\u3064\u307e\u3044\u3082\", ko: \"\uace0\uad6c\ub9c8\", emoji: \"\ud83c\udf60\" },\n        { id: 5, tc: \"\u99ac\u9234\u85af\", sc: \"\u9a6c\u94c3\u85af\", pinyin: \"m\u01cel\u00edngsh\u01d4\", en: \"Potato\", ja: \"\u3058\u3083\u304c\u3044\u3082\", ko: \"\uac10\uc790\", emoji: \"\ud83e\udd54\" },\n        { id: 6, tc: \"\u828b\u982d\", sc: \"\u828b\u5934\", pinyin: \"y\u00f9tou\", en: \"Taro\", ja: \"\u91cc\u828b\", ko: \"\ud1a0\ub780\", emoji: \"\ud83e\udd54\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u828b\u5934.jpg\" }, \n        { id: 7, tc: \"\u84ee\u85d5\", sc: \"\u83b2\u85d5\", pinyin: \"li\u00e1n'\u01d2u\", en: \"Lotus Root\", ja: \"\u308c\u3093\u3053\u3093\", ko: \"\uc5f0\uadfc\", emoji: \"\ud83e\udeb7\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u83b2\u85d5.jpg\" },\n        { id: 8, tc: \"\u80e1\u863f\u8514\", sc: \"\u80e1\u841d\u535c\", pinyin: \"h\u00falu\u00f3bo\", en: \"Carrot\", ja: \"\u306b\u3093\u3058\u3093\", ko: \"\ub2f9\uadfc\", emoji: \"\ud83e\udd55\" },\n        { id: 9, tc: \"\u767d\u863f\u8514\", sc: \"\u767d\u841d\u535c\", pinyin: \"b\u00e1ilu\u00f3bo\", en: \"Radish\", ja: \"\u5927\u6839\", ko: \"\ubb34\", emoji: \"\u26c4\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u767d\u841d\u535c.jpg\" }, \n        { id: 10, tc: \"\u8304\u5b50\", sc: \"\u8304\u5b50\", pinyin: \"qi\u00e9zi\", en: \"Eggplant\", ja: \"\u306a\u3059\", ko: \"\uac00\uc9c0\", emoji: \"\ud83c\udf46\" },\n        { id: 11, tc: \"\u9ec3\u74dc\", sc: \"\u9ec4\u74dc\", pinyin: \"hu\u00e1nggu\u0101\", en: \"Cucumber\", ja: \"\u304d\u3085\u3046\u308a\", ko: \"\uc624\uc774\", emoji: \"\ud83e\udd52\" },\n        { id: 12, tc: \"\u7d72\u74dc\", sc: \"\u4e1d\u74dc\", pinyin: \"s\u012bgu\u0101\", en: \"Loofah\", ja: \"\u30d8\u30c1\u30de\", ko: \"\uc218\uc138\ubbf8\uc624\uc774\", emoji: \"\ud83e\uddfd\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u4e1d\u74dc.jpg\" },\n        { id: 13, tc: \"\u725b\u84a1\", sc: \"\u725b\u84a1\", pinyin: \"ni\u00fab\u00e0ng\", en: \"Burdock\", ja: \"\u3054\u307c\u3046\", ko: \"\uc6b0\uc5c9\", emoji: \"\ud83e\udeb5\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u725b\u84a1.jpg\" },\n        { id: 14, tc: \"\u7af9\u7b4d\", sc: \"\u7af9\u7b0b\", pinyin: \"zh\u00fas\u01d4n\", en: \"Bamboo Shoot\", ja: \"\u305f\u3051\u306e\u3053\", ko: \"\uc8fd\uc21c\", emoji: \"\ud83c\udf8d\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u7af9\u7b0b.jpg\" },\n        { id: 15, tc: \"\u8606\u7b4d\", sc: \"\u82a6\u7b0b\", pinyin: \"l\u00fas\u01d4n\", en: \"Asparagus\", ja: \"\u30a2\u30b9\u30d1\u30e9\u30ac\u30b9\", ko: \"\uc544\uc2a4\ud30c\u62c9\uac70\uc2a4\", emoji: \"\ud83c\udf8b\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u82a6\u7b0b.jpg\" },\n        { id: 16, tc: \"\u82b1\u6930\u83dc\", sc: \"\u82b1\u6930\u83dc\", pinyin: \"hu\u0101y\u00e9c\u00e0i\", en: \"Cauliflower\", ja: \"\u30ab\u30ea\u30d5\u30e9\u30ef\u30fc\", ko: \"\ucf5c\ub9ac\ud50c\ub77c\uc6cc\", emoji: \"\ud83e\udd66\" },\n        { id: 17, tc: \"\u751f\u83dc\", sc: \"\u751f\u83dc\", pinyin: \"sh\u0113ngc\u00e0i\", en: \"Lettuce\", ja: \"\u30ec\u30bf\u30b9\", ko: \"\uc591\uc0c1\ucd94\", emoji: \"\ud83e\udd6c\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u751f\u83dc.jpg\" },\n        { id: 18, tc: \"\u9ad8\u9e97\u83dc\", sc: \"\u9ad8\u4e3d\u83dc\", pinyin: \"g\u0101ol\u00ecc\u00e0i\", en: \"Cabbage\", ja: \"\u30ad\u30e3\u30d9\u30c4\", ko: \"\uc591\ubc30\ucd94\", emoji: \"\ud83e\udd57\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u9ad8\u4e3d\u83dc.jpg\" },\n        { id: 19, tc: \"\u5927\u767d\u83dc\", sc: \"\u5927\u767d\u83dc\", pinyin: \"d\u00e0b\u00e1ic\u00e0i\", en: \"Chinese Cabbage\", ja: \"\u767d\u83dc\", ko: \"\ubc30\ucd94\", emoji: \"\ud83e\udd6c\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u5927\u767d\u83dc.jpg\" },\n        { id: 20, tc: \"\u8c46\u82bd\u83dc\", sc: \"\u8c46\u82bd\u83dc\", pinyin: \"d\u00f2uy\u00e1c\u00e0i\", en: \"Bean Sprouts\", ja: \"\u3082\u3084\u3057\", ko: \"\ucf69\ub098\ubb3c\", emoji: \"\ud83c\udf31\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u8c46\u82bd\u83dc.jpg\" },\n        { id: 21, tc: \"\u83e0\u83dc\", sc: \"\u83e0\u83dc\", pinyin: \"b\u014dc\u00e0i\", en: \"Spinach\", ja: \"\u307b\u3046\u308c\u3093\u8349\", ko: \"\uc2dc\uae08\uce58\", emoji: \"\ud83c\udf3f\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u83e0\u83dc.jpg\" },\n        { id: 22, tc: \"\u7a7a\u5fc3\u83dc\", sc: \"\u7a7a\u5fc3\u83dc\", pinyin: \"k\u014dngx\u012bnc\u00e0i\", en: \"Water Spinach\", ja: \"\u7a7a\u5fc3\u83dc\", ko: \"\uacf5\uc2ec\ucc44\", emoji: \"\ud83c\udf43\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u7a7a\u5fc3\u83dc.jpg\" },\n        { id: 23, tc: \"\u8611\u83c7\", sc: \"\u8611\u83c7\", pinyin: \"m\u00f3g\u016b\", en: \"Mushroom\", ja: \"\u30de\u30c3\u30b7\u30e5\u30eb\u30fc\u30e0\", ko: \"\uc591\uc1a1\uc774\ubc84\uc12f\", emoji: \"\ud83c\udf44\" },\n        { id: 24, tc: \"\u756a\u8304\", sc: \"\u756a\u8304\", pinyin: \"f\u0101nqi\u00e9\", en: \"Tomato\", ja: \"\u30c8\u30de\u30c8\", ko: \"\ud1a0\ub9c8\ud1a0\", emoji: \"\ud83c\udf45\" },\n        { id: 25, tc: \"\u82b9\u83dc\", sc: \"\u82b9\u83dc\", pinyin: \"q\u00ednc\u00e0i\", en: \"Celery\", ja: \"\u30bb\u30ed\u30ea\", ko: \"\uc140\ub7ec\ub9ac\", emoji: \"\ud83e\udd6c\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u82b9\u83dc.jpg\" },\n        { id: 26, tc: \"\u6d0b\u8525\", sc: \"\u6d0b\u8471\", pinyin: \"y\u00e1ngc\u014dng\", en: \"Onion\", ja: \"\u7389\u306d\u304e\", ko: \"\uc591\ud30c\", emoji: \"\ud83e\uddc5\" },\n        { id: 27, tc: \"\u8525\", sc: \"\u8471\", pinyin: \"c\u014dng\", en: \"Green Onion\", ja: \"\u30cd\u30ae\", ko: \"\ud30c\", emoji: \"\ud83c\udf31\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u8471.jpg\" },\n        { id: 28, tc: \"\u849c\", sc: \"\u849c\", pinyin: \"su\u00e0n\", en: \"Garlic\", ja: \"\u306b\u3093\u306b\u304f\", ko: \"\ub9c8\ub298\", emoji: \"\ud83e\uddc4\" },\n        { id: 29, tc: \"\u8591\", sc: \"\u59dc\", pinyin: \"ji\u0101ng\", en: \"Ginger\", ja: \"\u751f\u59dc\", ko: \"\uc0dd\uac15\", emoji: \"\ud83e\udeda\" },\n        { id: 30, tc: \"\u4e5d\u5c64\u5854\", sc: \"\u4e5d\u5c42\u5854\", pinyin: \"ji\u01d4c\u00e9ngt\u01ce\", en: \"Basil\", ja: \"\u30d0\u30b8\u30eb\", ko: \"\ubc14\uc9c8\", emoji: \"\ud83c\udf3f\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u4e5d\u5c42\u5854-1.jpg\" },\n        { id: 31, tc: \"\u82a5\u85cd\", sc: \"\u82a5\u84dd\", pinyin: \"ji\u00e8l\u00e1n\", en: \"Chinese Broccoli\", ja: \"\u30ab\u30a4\u30e9\u30f3\", ko: \"\uac00\uc774\ub780\", emoji: \"\ud83e\udd6c\", imgUrl: \"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/\u82a5\u84dd.jpg\" }\n    ];\n\n    let isSimplified = false;\n    let areCardsVisible = true;\n    let isAllFlipped = false;\n\n    let score = 0;\n    let timeLeft = 90;\n    let timerInterval = null;\n    let currentTarget = null;\n    let isPlaying = false;\n    let currentAudio = null;\n\n    function getAudioUrl(veggie) {\n        return veggie.audioUrl || `https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2026\/09\/${encodeURIComponent(veggie.tc)}.m4a`;\n    }\n\n    function playAudio(url, event) {\n        if (event) {\n            event.stopPropagation();\n        }\n        if (currentAudio) {\n            currentAudio.pause();\n            currentAudio.currentTime = 0;\n        }\n        currentAudio = new Audio(url);\n        currentAudio.play().catch(e => {\n            console.warn(\"Audio playback failed:\", url, e);\n        });\n    }\n\n    const langBtn = document.getElementById('lang-btn');\n    const flashcardGrid = document.getElementById('flashcard-grid');\n    const toggleFcBtn = document.getElementById('toggle-fc-btn');\n    const flipAllBtn = document.getElementById('flip-all-btn');\n    const scoreEl = document.getElementById('score');\n    const timeEl = document.getElementById('time');\n    const orderDisplay = document.getElementById('order-display');\n    const feedbackEl = document.getElementById('feedback-msg');\n    const stallGrid = document.getElementById('stall-grid');\n    const startBtn = document.getElementById('start-btn');\n    const restartBtn = document.getElementById('restart-btn');\n\n    function checkCookieLang() {\n        const cookies = document.cookie.split(';');\n        for (let c of cookies) {\n            if (c.trim().startsWith(\"lang=sc\")) {\n                isSimplified = true;\n                break;\n            }\n        }\n    }\n\n    function updateUITexts() {\n        langBtn.innerText = isSimplified ? \"Switch to Traditional\" : \"Switch to Simplified\";\n        \n        toggleFcBtn.innerText = areCardsVisible \n            ? \"Hide Cards (Blind Mode)\"\n            : \"Show Cards\";\n\n        flipAllBtn.innerText = isAllFlipped\n            ? \"\ud83d\udd04 Reset Front\"\n            : \"\ud83d\udd04 Flip All\";\n\n        startBtn.innerText = \"Start Game\";\n        restartBtn.innerText = \"Play Again\";\n\n        if (!isPlaying) {\n            orderDisplay.innerHTML = \"Click the button below to start!\";\n        } else {\n            refreshOrderText();\n        }\n\n        veggieDatabase.forEach(v => {\n            const hanziEl = document.getElementById(`hanzi-${v.id}`);\n            const backHanziEl = document.getElementById(`back-hanzi-${v.id}`);\n            if (hanziEl) hanziEl.innerText = isSimplified ? v.sc : v.tc;\n            if (backHanziEl) backHanziEl.innerText = isSimplified ? v.sc : v.tc;\n        });\n    }\n\n    function toggleLanguage() {\n        isSimplified = !isSimplified;\n        document.cookie = \"lang=\" + (isSimplified ? \"sc\" : \"tc\") + \"; path=\/; max-age=31536000\";\n        updateUITexts();\n    }\n\n    function toggleFlashcardDisplay() {\n        areCardsVisible = !areCardsVisible;\n        flashcardGrid.style.display = areCardsVisible ? \"grid\" : \"none\";\n        toggleFcBtn.innerText = areCardsVisible \n            ? \"Hide Cards (Blind Mode)\"\n            : \"Show Cards\";\n    }\n\n    function toggleCardFlip(cardEl) {\n        cardEl.classList.toggle('is-flipped');\n    }\n\n    function toggleFlipAll() {\n        isAllFlipped = !isAllFlipped;\n        const cards = document.querySelectorAll('.flashcard');\n        cards.forEach(card => {\n            if (isAllFlipped) {\n                card.classList.add('is-flipped');\n            } else {\n                card.classList.remove('is-flipped');\n            }\n        });\n        flipAllBtn.innerText = isAllFlipped\n            ? \"\ud83d\udd04 Reset Front\"\n            : \"\ud83d\udd04 Flip All\";\n    }\n\n    function renderFlashcards() {\n        flashcardGrid.innerHTML = '';\n        veggieDatabase.forEach(v => {\n            const card = document.createElement('div');\n            card.className = 'flashcard';\n            card.onclick = () => toggleCardFlip(card);\n            \n            const media = v.imgUrl \n                ? `<img decoding=\"async\" src=\"${v.imgUrl}\" alt=\"${v.tc}\">` \n                : v.emoji;\n            const name = isSimplified ? v.sc : v.tc;\n            const audioUrl = getAudioUrl(v);\n\n            card.innerHTML = `\n                <div class=\"card-inner\">\n                    <!-- Front -->\n                    <div class=\"card-front\">\n                        <div class=\"card-badge\">${v.id}<\/div>\n                        <div class=\"audio-btn\" title=\"Listen\" onclick=\"playAudio('${audioUrl}', event)\">\ud83d\udd0a<\/div>\n                        <div class=\"image-wrapper\">${media}<\/div>\n                        <div class=\"text-wrapper\">\n                            <div class=\"hanzi\" id=\"hanzi-${v.id}\">${name}<\/div>\n                            <div class=\"pinyin\">${v.pinyin}<\/div>\n                            <div class=\"flip-hint\">\ud83d\udc46 Click to flip<\/div>\n                        <\/div>\n                    <\/div>\n                    <!-- Back (Translations) -->\n                    <div class=\"card-back\">\n                        <div class=\"card-badge\">${v.id}<\/div>\n                        <div class=\"audio-btn\" title=\"Listen\" onclick=\"playAudio('${audioUrl}', event)\">\ud83d\udd0a<\/div>\n                        <div class=\"trans-list\">\n                            <div class=\"trans-item\">\n                                <span class=\"lang-pill\">EN<\/span>\n                                <span class=\"trans-text\" title=\"${v.en}\">${v.en}<\/span>\n                            <\/div>\n                            <div class=\"trans-item\">\n                                <span class=\"lang-pill\">JA<\/span>\n                                <span class=\"trans-text\" title=\"${v.ja}\">${v.ja}<\/span>\n                            <\/div>\n                            <div class=\"trans-item\">\n                                <span class=\"lang-pill\">KO<\/span>\n                                <span class=\"trans-text\" title=\"${v.ko}\">${v.ko}<\/span>\n                            <\/div>\n                        <\/div>\n                        <div class=\"back-sub\">\n                            <span id=\"back-hanzi-${v.id}\">${name}<\/span> \u00b7 ${v.pinyin}\n                            <button class=\"audio-btn-inline\" title=\"Listen\" onclick=\"playAudio('${audioUrl}', event)\">\ud83d\udd0a<\/button>\n                        <\/div>\n                        <div class=\"flip-hint\">\u21ba Click to flip back<\/div>\n                    <\/div>\n                <\/div>\n            `;\n            flashcardGrid.appendChild(card);\n        });\n    }\n\n    function renderStall() {\n        stallGrid.innerHTML = '';\n        const shuffled = [...veggieDatabase].sort(() => 0.5 - Math.random());\n        \n        shuffled.forEach(v => {\n            const item = document.createElement('div');\n            item.className = 'stall-item';\n            \n            let content = `<span class=\"item-id\">${v.id}<\/span>`;\n            if (v.imgUrl) {\n                content += `<img decoding=\"async\" src=\"${v.imgUrl}\" alt=\"${v.tc}\">`;\n            } else {\n                content += v.emoji;\n            }\n            item.innerHTML = content;\n            item.onclick = () => checkAnswer(v.id);\n            stallGrid.appendChild(item);\n        });\n    }\n\n    function newOrder() {\n        if (!isPlaying) return;\n        const randomIdx = Math.floor(Math.random() * veggieDatabase.length);\n        currentTarget = veggieDatabase[randomIdx];\n        refreshOrderText();\n    }\n\n    function refreshOrderText() {\n        if (!currentTarget) return;\n        const vName = isSimplified ? currentTarget.sc : currentTarget.tc;\n        const audioUrl = getAudioUrl(currentTarget);\n        orderDisplay.innerHTML = `Customer: \"\u8001\u95c6\uff0c\u6211\u8981\u8cb7 <strong>\u3010${vName}\u3011<\/strong>\uff01\" <button class=\"audio-btn-inline\" style=\"font-size: 20px;\" title=\"Listen to Customer\" onclick=\"playAudio('${audioUrl}', event)\">\ud83d\udd0a<\/button>`;\n        orderDisplay.style.color = \"var(--text-main)\";\n    }\n\n    function checkAnswer(clickedId) {\n        if (!isPlaying) return;\n\n        if (clickedId === currentTarget.id) {\n            score += 10;\n            scoreEl.innerText = score;\n            feedbackEl.innerText = \"\u2705 Great job! Correct item! (+10)\";\n            feedbackEl.style.color = \"var(--success)\";\n            newOrder();\n        } else {\n            const correctName = isSimplified ? currentTarget.sc : currentTarget.tc;\n            feedbackEl.innerText = `\u274c Oops! The customer wanted ${correctName} (-3s)`;\n            feedbackEl.style.color = \"var(--danger)\";\n            timeLeft = Math.max(0, timeLeft - 3);\n            timeEl.innerText = timeLeft;\n        }\n\n        setTimeout(() => {\n            if (feedbackEl.innerText.includes(\"\u2705\")) feedbackEl.innerText = \"\";\n        }, 900);\n    }\n\n    function updateTimer() {\n        timeLeft--;\n        timeEl.innerText = timeLeft;\n        if (timeLeft <= 0) {\n            endGame();\n        }\n    }\n\n    function startGame() {\n        score = 0;\n        timeLeft = 90;\n        scoreEl.innerText = score;\n        timeEl.innerText = timeLeft;\n        feedbackEl.innerText = \"\";\n        isPlaying = true;\n\n        startBtn.style.display = 'none';\n        restartBtn.style.display = 'none';\n\n        renderStall();\n        newOrder();\n\n        if (timerInterval) clearInterval(timerInterval);\n        timerInterval = setInterval(updateTimer, 1000);\n    }\n\n    function endGame() {\n        isPlaying = false;\n        clearInterval(timerInterval);\n        \n        orderDisplay.innerHTML = `\n            <div class=\"game-over-title\">\u23f0 Time's up! Store is closed!<\/div>\n            <div class=\"game-over-revenue\">Total Revenue: <span style=\"color: var(--accent-blue);\">$${score}<\/span><\/div>\n        `;\n        \n        stallGrid.innerHTML = '';\n        restartBtn.style.display = 'inline-block';\n    }\n\n    checkCookieLang();\n    renderFlashcards();\n    updateUITexts();\n<\/script>\n\n<\/body>\n<\/html>\n\n\n\n<div style=\"height:140px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium is-resized\"><a href=\"https:\/\/tiffanysmandarin.com\/index.php\/students-only\/\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"86\" src=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png\" alt=\"\" class=\"wp-image-571\" style=\"width:150px;height:43px\" srcset=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png 300w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-600x171.png 600w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963.png 700w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Vegetable Flashcards &#038; Market Game \ud83d\udcd6 Flashcards \ud83c\udfae Market Game Switch to Simplified \ud83d\udcda Vegetable Flashcards (Click to Flip \u00b7 Click \ud83d\udd0a to Listen) \ud83d\udd04 Flip All Hide Cards (Blind Mode) \ud83d\uded2 Crazy Market: Vegetable Challenge \u23f3 Time: 90s \ud83d\udcb0 Revenue: $0 Click the button below to start! Start Game Play Again<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_wp_convertkit_post_meta":{"form":"-1","landing_page":"0","tag":"0","restrict_content":"0"},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1238],"tags":[],"class_list":["post-17308","post","type-post","status-publish","format-standard","hentry","category-food"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Chinese vegetable vocabulary - OneDotDot Chinese<\/title>\n<meta name=\"description\" content=\"Chinese vegetable vocabulary practice only for my students\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Chinese vegetable vocabulary - OneDotDot Chinese\" \/>\n<meta property=\"og:description\" content=\"Chinese vegetable vocabulary practice only for my students\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/\" \/>\n<meta property=\"og:site_name\" content=\"OneDotDot Chinese\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-22T14:21:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-14T14:50:52+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png\" \/>\n<meta name=\"author\" content=\"tiffany\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"tiffany\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/\"},\"author\":{\"name\":\"tiffany\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"headline\":\"Chinese vegetable vocabulary\",\"datePublished\":\"2026-09-22T14:21:05+00:00\",\"dateModified\":\"2026-10-14T14:50:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/\"},\"wordCount\":44,\"publisher\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"image\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/e68f92e59c963-300x86.png\",\"articleSection\":[\"food\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/\",\"name\":\"Chinese vegetable vocabulary - OneDotDot Chinese\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/e68f92e59c963-300x86.png\",\"datePublished\":\"2026-09-22T14:21:05+00:00\",\"dateModified\":\"2026-10-14T14:50:52+00:00\",\"description\":\"Chinese vegetable vocabulary practice only for my students\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/#primaryimage\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/e68f92e59c963.png\",\"contentUrl\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/e68f92e59c963.png\",\"width\":700,\"height\":200},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/tiffanysmandarin.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chinese vegetable vocabulary\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#website\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/\",\"name\":\"OneDotDot Chinese\",\"description\":\"Learn a little Chinese every day\",\"publisher\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tiffanysmandarin.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\",\"name\":\"tiffany\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"url\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"contentUrl\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\",\"width\":214,\"height\":214,\"caption\":\"tiffany\"},\"logo\":{\"@id\":\"http:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/cropped-logo_tiffany2-1.png\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/tiffanys_talk\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/tiffany-huang-mandarin\\\/\"],\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/author\\\/tiffany\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Chinese vegetable vocabulary - OneDotDot Chinese","description":"Chinese vegetable vocabulary practice only for my students","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:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/","og_locale":"en_US","og_type":"article","og_title":"Chinese vegetable vocabulary - OneDotDot Chinese","og_description":"Chinese vegetable vocabulary practice only for my students","og_url":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/","og_site_name":"OneDotDot Chinese","article_published_time":"2026-09-22T14:21:05+00:00","article_modified_time":"2026-10-14T14:50:52+00:00","og_image":[{"url":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png","type":"","width":"","height":""}],"author":"tiffany","twitter_card":"summary_large_image","twitter_misc":{"Written by":"tiffany","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/#article","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/"},"author":{"name":"tiffany","@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"headline":"Chinese vegetable vocabulary","datePublished":"2026-09-22T14:21:05+00:00","dateModified":"2026-10-14T14:50:52+00:00","mainEntityOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/"},"wordCount":44,"publisher":{"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"image":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/#primaryimage"},"thumbnailUrl":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png","articleSection":["food"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/","url":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/","name":"Chinese vegetable vocabulary - OneDotDot Chinese","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/#primaryimage"},"image":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/#primaryimage"},"thumbnailUrl":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963-300x86.png","datePublished":"2026-09-22T14:21:05+00:00","dateModified":"2026-10-14T14:50:52+00:00","description":"Chinese vegetable vocabulary practice only for my students","breadcrumb":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/#primaryimage","url":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963.png","contentUrl":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/e68f92e59c963.png","width":700,"height":200},{"@type":"BreadcrumbList","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/tiffanysmandarin.com\/"},{"@type":"ListItem","position":2,"name":"Chinese vegetable vocabulary"}]},{"@type":"WebSite","@id":"https:\/\/tiffanysmandarin.com\/#website","url":"https:\/\/tiffanysmandarin.com\/","name":"OneDotDot Chinese","description":"Learn a little Chinese every day","publisher":{"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tiffanysmandarin.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99","name":"tiffany","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","url":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","contentUrl":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png","width":214,"height":214,"caption":"tiffany"},"logo":{"@id":"http:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/cropped-logo_tiffany2-1.png"},"sameAs":["https:\/\/www.instagram.com\/tiffanys_talk\/","https:\/\/www.linkedin.com\/in\/tiffany-huang-mandarin\/"],"url":"https:\/\/tiffanysmandarin.com\/index.php\/author\/tiffany\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/17308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/comments?post=17308"}],"version-history":[{"count":9,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/17308\/revisions"}],"predecessor-version":[{"id":18182,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/17308\/revisions\/18182"}],"wp:attachment":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/media?parent=17308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/categories?post=17308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/tags?post=17308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}