{"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-01T10:03:40","modified_gmt":"2026-10-01T02:03:40","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_88 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","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.5 - 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-01T02:03:40+00:00\" \/>\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-01T02:03:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2026\\\/09\\\/22\\\/vegetable-practice\\\/\"},\"wordCount\":44,\"publisher\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"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\"},\"datePublished\":\"2026-09-22T14:21:05+00:00\",\"dateModified\":\"2026-10-01T02:03:40+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\":\"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-01T02:03:40+00:00","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-01T02:03:40+00:00","mainEntityOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2026\/09\/22\/vegetable-practice\/"},"wordCount":44,"publisher":{"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"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"},"datePublished":"2026-09-22T14:21:05+00:00","dateModified":"2026-10-01T02:03:40+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":"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":8,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/17308\/revisions"}],"predecessor-version":[{"id":17727,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/17308\/revisions\/17727"}],"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}]}}