{"id":12895,"date":"2025-07-17T18:53:20","date_gmt":"2025-07-17T10:53:20","guid":{"rendered":"https:\/\/tiffanysmandarin.com\/?p=12895"},"modified":"2026-09-08T05:33:12","modified_gmt":"2026-09-07T21:33:12","slug":"contemporary-chinese-vocabulary-practice-b1l4","status":"publish","type":"post","link":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/","title":{"rendered":"B1 L4 Vocabulary and Practice"},"content":{"rendered":"\n<div style=\"height:33px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!--\n  \u7576\u4ee3\u4e2d\u6587 Book 1 \u00b7 Lesson 4 \u300c\u8acb\u554f\u4e00\u5171\u591a\u5c11\u9322\uff1f\u300d Excuse Me. How Much Does That Cost in Total? \u2014 Vocabulary Embed\n  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  Same technical pattern as the L1\/L2\/L3 embeds \u2014 see those files' comments\n  for the fuller rationale. Key points repeated here:\n    - No <!DOCTYPE>\/<html>\/<head>\/<body>; CSS scoped under\n      .dangdai-b1l4-vocab-embed with its own --db4-* variables\n    - Ruby: lang-zh-TW \/ lang-zh-CN written consecutively, word-by-word\n      segmentation in every example\/dialogue sentence, punctuation as\n      plain text\n    - Root lookup by id (#dangdai-b1l4-vocab-embed-1), not currentScript\n    - No literal `&&` inside <script> (WordPress mangles it) \u2014 nested\n      `if` blocks used instead in Match It\n    - Vocabulary I and II transcribed word-for-word from the textbook's\n      \u751f\u8a5e\u4e00 \/ \u751f\u8a5e\u4e8c pages (including the Phrases sections), with the\n      part-of-speech tags shown in the book. No new named characters are\n      introduced in this lesson's vocab list (the dialogue uses \u8001\u95c6\n      \"store owner\" as a role, plus \u660e\u83ef\/\u6708\u7f8e from earlier lessons), so\n      there is no separate \u4eba\u7269 section this time.\n    - The dialogue in section 04 is an ORIGINAL conversation (not from the\n      textbook) built only from vocabulary confirmed to appear in Lesson 1\n      through Lesson 4, so it doesn't reproduce the copyrighted textbook\n      dialogue.\n-->\n<div class=\"dangdai-b1l4-vocab-embed\" id=\"dangdai-b1l4-vocab-embed-1\">\n<style>\n.dangdai-b1l4-vocab-embed {\n  --db4-oxblood: #7b2d26;\n  --db4-oxblood-dark: #5e211c;\n  --db4-mustard: #c9922b;\n  --db4-sage: #7c8b6f;\n  --db4-bone: #f7f1e6;\n  --db4-ink: #2c2620;\n  --db4-line: #e4d9c4;\n  font-family: 'Work Sans', -apple-system, sans-serif;\n  color: var(--db4-ink);\n  background: #fff;\n  max-width: 760px;\n  margin: 0 auto;\n  padding: 8px 4px 24px;\n  line-height: 1.6;\n}\n.dangdai-b1l4-vocab-embed * { box-sizing: border-box; }\n.dangdai-b1l4-vocab-embed h1,\n.dangdai-b1l4-vocab-embed h2,\n.dangdai-b1l4-vocab-embed h3 {\n  font-family: 'Bitter', Georgia, serif;\n  color: var(--db4-oxblood-dark);\n  margin: 0 0 8px;\n}\n.dangdai-b1l4-vocab-embed .db4-support-note {\n  font-size: 0.85rem;\n  color: var(--db4-sage);\n  border-bottom: 1px solid var(--db4-line);\n  padding-bottom: 12px;\n  margin: 0 0 16px;\n}\n.dangdai-b1l4-vocab-embed .db4-lede {\n  margin: 0 0 24px;\n  padding: 14px 16px;\n  background: var(--db4-bone);\n  border-left: 4px solid var(--db4-mustard);\n  border-radius: 4px;\n  font-size: 0.98rem;\n}\n.dangdai-b1l4-vocab-embed .db4-lede b { color: var(--db4-oxblood-dark); }\n.dangdai-b1l4-vocab-embed .db4-sec-eyebrow {\n  display: inline-block;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.75rem;\n  letter-spacing: 0.08em;\n  color: #fff;\n  background: var(--db4-oxblood);\n  padding: 3px 9px;\n  border-radius: 3px;\n  margin: 32px 0 10px;\n}\n.dangdai-b1l4-vocab-embed .db4-word-card {\n  border: 1px solid var(--db4-line);\n  border-radius: 8px;\n  padding: 12px 14px;\n  margin-bottom: 10px;\n  background: #fff;\n}\n.dangdai-b1l4-vocab-embed .db4-word-top {\n  display: flex;\n  align-items: baseline;\n  gap: 10px;\n  flex-wrap: wrap;\n}\n.dangdai-b1l4-vocab-embed .db4-num {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.75rem;\n  color: var(--db4-mustard);\n  min-width: 22px;\n}\n.dangdai-b1l4-vocab-embed .db4-hanzi { font-size: 1.35rem; font-weight: 600; }\n.dangdai-b1l4-vocab-embed .db4-pos {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.7rem;\n  color: #fff;\n  background: var(--db4-sage);\n  padding: 2px 7px;\n  border-radius: 10px;\n}\n.dangdai-b1l4-vocab-embed ruby {\n  ruby-position: over;\n  margin-right: 2px;\n  color: var(--db4-ink) !important;\n  font-size: inherit !important;\n}\n.dangdai-b1l4-vocab-embed .rb {\n  color: var(--db4-ink) !important;\n  font-size: inherit !important;\n}\n.dangdai-b1l4-vocab-embed rt {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.6rem !important;\n  color: var(--db4-sage) !important;\n  font-weight: 400;\n}\n.dangdai-b1l4-vocab-embed .db4-meaning { font-style: italic; color: #6b5f52; font-size: 0.92rem; }\n.dangdai-b1l4-vocab-embed .db4-speaker {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  flex: 0 0 26px;\n  width: 26px;\n  height: 26px;\n  padding: 0;\n  border: none;\n  background: var(--db4-bone);\n  color: var(--db4-oxblood);\n  border-radius: 50%;\n  cursor: pointer;\n  margin-left: auto;\n}\n.dangdai-b1l4-vocab-embed .db4-speaker:hover { background: var(--db4-mustard); color: #fff; }\n.dangdai-b1l4-vocab-embed .db4-example {\n  margin-top: 8px;\n  padding-top: 8px;\n  border-top: 1px dashed var(--db4-line);\n  font-size: 0.95rem;\n}\n.dangdai-b1l4-vocab-embed .db4-example .db4-sent-word { display: inline-flex; }\n.dangdai-b1l4-vocab-embed .db4-example .db4-punct { margin-right: 2px; }\n.dangdai-b1l4-vocab-embed .db4-example .db4-en {\n  display: block;\n  color: #6b5f52;\n  font-size: 0.85rem;\n  margin-top: 4px;\n}\n.dangdai-b1l4-vocab-embed .db4-dialogue-note { font-size: 0.85rem; color: #6b5f52; margin: 0 0 10px; }\n.dangdai-b1l4-vocab-embed .db4-dialogue {\n  background: var(--db4-bone);\n  border-radius: 8px;\n  padding: 16px 18px;\n  margin-top: 8px;\n}\n.dangdai-b1l4-vocab-embed .db4-line {\n  display: flex;\n  gap: 8px;\n  margin-bottom: 12px;\n  align-items: flex-start;\n  flex-wrap: wrap;\n}\n.dangdai-b1l4-vocab-embed .db4-speaker-tag {\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.72rem;\n  color: var(--db4-oxblood);\n  min-width: 46px;\n  padding-top: 3px;\n}\n.dangdai-b1l4-vocab-embed .db4-line-body { flex: 1; min-width: 200px; }\n.dangdai-b1l4-vocab-embed .db4-line-en { display: block; color: #6b5f52; font-size: 0.82rem; margin-top: 2px; }\n\n.dangdai-b1l4-vocab-embed .db4-fc-hint { font-size: 0.85rem; color: #6b5f52; margin: 0 0 12px; text-align: center; }\n.dangdai-b1l4-vocab-embed .db4-flashcard-wrap { max-width: 320px; margin: 0 auto 14px; perspective: 1200px; }\n.dangdai-b1l4-vocab-embed .db4-flashcard {\n  position: relative;\n  width: 100%;\n  height: 230px;\n  cursor: pointer;\n  transform-style: preserve-3d;\n  transition: transform 0.5s;\n}\n.dangdai-b1l4-vocab-embed .db4-flashcard.db4-flipped { transform: rotateY(180deg); }\n.dangdai-b1l4-vocab-embed .db4-fc-face {\n  position: absolute;\n  inset: 0;\n  backface-visibility: hidden;\n  border: 1px solid var(--db4-line);\n  border-radius: 12px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  padding: 16px;\n  background: #fff;\n  text-align: center;\n}\n.dangdai-b1l4-vocab-embed .db4-fc-back { transform: rotateY(180deg); background: var(--db4-bone); }\n.dangdai-b1l4-vocab-embed .db4-fc-front .db4-hanzi { font-size: 4rem !important; }\n.dangdai-b1l4-vocab-embed .db4-flashcard-wrap rt { font-size: 1.2rem !important; }\n.dangdai-b1l4-vocab-embed .db4-fc-back .db4-meaning { font-style: italic; color: var(--db4-oxblood-dark); font-size: 1.725rem; }\n.dangdai-b1l4-vocab-embed .db4-fc-back .db4-pos { margin-top: 8px; }\n.dangdai-b1l4-vocab-embed .db4-flashcard-controls { display: flex; align-items: center; justify-content: center; gap: 14px; margin-bottom: 28px; }\n.dangdai-b1l4-vocab-embed .db4-game-btn {\n  font-family: 'Work Sans', sans-serif;\n  font-size: 0.85rem;\n  border: 1px solid var(--db4-oxblood);\n  color: var(--db4-oxblood);\n  background: #fff;\n  padding: 6px 14px;\n  border-radius: 20px;\n  cursor: pointer;\n}\n.dangdai-b1l4-vocab-embed .db4-game-btn:hover { background: var(--db4-oxblood); color: #fff; }\n.dangdai-b1l4-vocab-embed .db4-game-bar { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }\n.dangdai-b1l4-vocab-embed .db4-game-status { font-family: 'IBM Plex Mono', monospace; font-size: 0.82rem; color: var(--db4-sage); }\n.dangdai-b1l4-vocab-embed .db4-game-board { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }\n.dangdai-b1l4-vocab-embed .db4-game-col { display: flex; flex-direction: column; gap: 8px; }\n.dangdai-b1l4-vocab-embed .db4-tile {\n  font-family: 'Work Sans', sans-serif;\n  text-align: left;\n  border: 1px solid var(--db4-line);\n  background: #fff;\n  border-radius: 6px;\n  padding: 10px 12px;\n  cursor: pointer;\n  font-size: 0.95rem;\n  color: var(--db4-ink);\n  transition: background 0.15s, border-color 0.15s, transform 0.1s;\n}\n.dangdai-b1l4-vocab-embed .db4-tile .db4-tile-py {\n  display: block;\n  font-family: 'IBM Plex Mono', monospace;\n  font-size: 0.7rem;\n  color: var(--db4-sage);\n  margin-top: 2px;\n}\n.dangdai-b1l4-vocab-embed .db4-tile:hover:not(.db4-matched):not(.db4-selected) { border-color: var(--db4-mustard); }\n.dangdai-b1l4-vocab-embed .db4-tile.db4-selected { border-color: var(--db4-oxblood); background: var(--db4-bone); }\n.dangdai-b1l4-vocab-embed .db4-tile.db4-matched { border-color: var(--db4-sage); background: #eef2e9; color: var(--db4-sage); cursor: default; }\n.dangdai-b1l4-vocab-embed .db4-tile.db4-wrong { border-color: #b5453d; background: #fbeceb; animation: db4-shake 0.3s; }\n@keyframes db4-shake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } }\n.dangdai-b1l4-vocab-embed .db4-game-win { text-align: center; padding: 14px; font-family: 'Bitter', serif; color: var(--db4-oxblood-dark); display: none; }\n.dangdai-b1l4-vocab-embed .db4-game-win.db4-show { display: block; }\n@media (max-width: 480px) { .dangdai-b1l4-vocab-embed .db4-game-board { grid-template-columns: 1fr; } }\n.dangdai-b1l4-vocab-embed .db4-quiz { background: #fff; border: 1px solid var(--db4-line); border-radius: 12px; padding: 20px 22px; margin-top: 8px; }\n.dangdai-b1l4-vocab-embed .db4-quiz-progress { font-size: 0.82rem; color: var(--db4-sage); margin: 0 0 10px; font-family: 'IBM Plex Mono', monospace; }\n.dangdai-b1l4-vocab-embed .db4-quiz-prompt { font-size: 1.1rem; margin: 0 0 14px; }\n.dangdai-b1l4-vocab-embed .db4-quiz-options { display: flex; flex-direction: column; gap: 8px; margin: 0 0 10px; }\n.dangdai-b1l4-vocab-embed .db4-quiz-opt { text-align: left; border: 1px solid var(--db4-line); background: var(--db4-bone); border-radius: 8px; padding: 10px 14px; cursor: pointer; font-size: 0.98rem; color: var(--db4-ink); }\n.dangdai-b1l4-vocab-embed .db4-quiz-opt:hover { background: #f0e6d2; }\n.dangdai-b1l4-vocab-embed .db4-quiz-opt.correct { background: #e3efdd; border-color: #7fae6d; color: #3d5c34; }\n.dangdai-b1l4-vocab-embed .db4-quiz-opt.incorrect { background: #f5e0dc; border-color: var(--db4-oxblood); color: var(--db4-oxblood-dark); }\n.dangdai-b1l4-vocab-embed .db4-quiz-opt[disabled] { cursor: default; }\n.dangdai-b1l4-vocab-embed .db4-quiz-input-row { display: flex; gap: 8px; margin: 0 0 10px; flex-wrap: wrap; }\n.dangdai-b1l4-vocab-embed .db4-quiz-input { flex: 1 1 200px; border: 1px solid var(--db4-line); border-radius: 8px; padding: 9px 12px; font-size: 0.98rem; }\n.dangdai-b1l4-vocab-embed .db4-quiz-submit, .dangdai-b1l4-vocab-embed .db4-quiz-next, .dangdai-b1l4-vocab-embed .db4-quiz-retake { border: none; background: var(--db4-oxblood); color: #fff; border-radius: 20px; padding: 8px 18px; font-size: 0.9rem; cursor: pointer; }\n.dangdai-b1l4-vocab-embed .db4-quiz-submit:hover, .dangdai-b1l4-vocab-embed .db4-quiz-next:hover, .dangdai-b1l4-vocab-embed .db4-quiz-retake:hover { background: var(--db4-oxblood-dark); }\n.dangdai-b1l4-vocab-embed .db4-quiz-feedback { font-size: 0.95rem; margin: 0 0 10px; min-height: 1.4em; }\n.dangdai-b1l4-vocab-embed .db4-quiz-feedback.correct { color: #3d5c34; }\n.dangdai-b1l4-vocab-embed .db4-quiz-feedback.incorrect { color: var(--db4-oxblood-dark); }\n.dangdai-b1l4-vocab-embed .db4-quiz-score { text-align: center; }\n.dangdai-b1l4-vocab-embed .db4-quiz-score .db4-quiz-score-num { font-size: 2.2rem; font-weight: 700; color: var(--db4-oxblood-dark); display: block; margin-bottom: 8px; font-family: 'Bitter', serif; }\n<\/style>\n\n<p class=\"db4-support-note\"><em>A note before you start: I&#8217;d love for you to support the official textbook \u2014 this page is only meant as a review tool for people who already own a copy, not a replacement for it.<\/em><\/p>\n\n<p class=\"db4-lede\">\n<b><span class=\"lang-zh-TW\">\u7576\u4ee3\u4e2d\u6587\u8ab2\u7a0b<\/span><span class=\"lang-zh-CN\">\u5f53\u4ee3\u4e2d\u6587\u8bfe\u7a0b<\/span> Book 1 \u00b7 Lesson 4\u300c<span class=\"lang-zh-TW\">\u8acb\u554f\u4e00\u5171\u591a\u5c11\u9322\uff1f<\/span><span class=\"lang-zh-CN\">\u8bf7\u95ee\u4e00\u5171\u591a\u5c11\u94b1\uff1f<\/span>\u300dExcuse Me. How Much Does That Cost in Total?<\/b> \u2014 every word from \u751f\u8a5e\u4e00 and \u751f\u8a5e\u4e8c (Vocabulary I &amp; II), transcribed from the textbook, with pinyin, part of speech, meaning, and an original example sentence for every word (built only from Lesson 1\u20134 vocabulary), segmented word by word.\n<\/p>\n\n<div class=\"db4-sec-eyebrow\">01 \u2014 VOCABULARY I \u751f\u8a5e\u4e00<\/div>\n<div id=\"db4-word-list-1\"><\/div>\n\n<div class=\"db4-sec-eyebrow\">02 \u2014 PHRASES I \u8a5e\u7d44<\/div>\n<div id=\"db4-word-list-2\"><\/div>\n\n<div class=\"db4-sec-eyebrow\">03 \u2014 VOCABULARY II \u751f\u8a5e\u4e8c<\/div>\n<div id=\"db4-word-list-3\"><\/div>\n\n<div class=\"db4-sec-eyebrow\">04 \u2014 PUT IT TOGETHER \u5c0d\u8a71\u7df4\u7fd2<\/div>\n<p class=\"db4-dialogue-note\"><em>Note: this dialogue is NOT from the textbook \u2014 the textbook&#8217;s own Dialogue I and Dialogue II are copyrighted, so I wrote a short original conversation below using only vocabulary from Lesson 1 through Lesson 4, so you can see the words used together. For the real Lesson 4 dialogues, please use your own copy of the textbook.<\/em><\/p>\n<div class=\"db4-dialogue\" id=\"db4-dialogue\"><\/div>\n\n<div class=\"db4-sec-eyebrow\">05 \u2014 FLASHCARDS<\/div>\n<p class=\"db4-fc-hint\">Tap the card to flip it, then use the arrows to move through the deck.<\/p>\n<div class=\"db4-flashcard-wrap\">\n  <div class=\"db4-flashcard\" id=\"db4-flashcard\">\n    <div class=\"db4-fc-face db4-fc-front\" id=\"db4-fc-front\"><\/div>\n    <div class=\"db4-fc-face db4-fc-back\" id=\"db4-fc-back\"><\/div>\n  <\/div>\n<\/div>\n<div class=\"db4-flashcard-controls\">\n  <button class=\"db4-game-btn\" id=\"db4-fc-prev\">\u2039 Prev<\/button>\n  <span class=\"db4-game-status\" id=\"db4-fc-progress\">1 \/ 36<\/span>\n  <button class=\"db4-game-btn\" id=\"db4-fc-next\">Next \u203a<\/button>\n<\/div>\n\n<div class=\"db4-sec-eyebrow\">06 \u2014 MATCH IT<\/div>\n<p style=\"font-size:0.9rem;color:#6b5f52;margin:0 0 10px;\">Tap a Chinese word, then tap the English meaning that matches it. Get all 8 pairs to finish the round.<\/p>\n<div class=\"db4-game-bar\">\n  <button class=\"db4-game-btn\" id=\"db4-game-new\">New Round<\/button>\n  <span class=\"db4-game-status\" id=\"db4-game-status\">0 \/ 8 matched<\/span>\n<\/div>\n<div class=\"db4-game-board\">\n  <div class=\"db4-game-col\" id=\"db4-game-col-zh\"><\/div>\n  <div class=\"db4-game-col\" id=\"db4-game-col-en\"><\/div>\n<\/div>\n<div class=\"db4-game-win\" id=\"db4-game-win\">\ud83c\udf89 All matched! Nice work.<\/div>\n\n<div class=\"db4-sec-eyebrow\">07 \u2014 VOCABULARY QUIZ<\/div>\n<p style=\"font-size:0.9rem;color:#6b5f52;margin:0 0 10px;\">15 questions covering this lesson&#8217;s vocabulary \u2014 a mix of multiple choice and type-the-answer.<\/p>\n<div class=\"db4-quiz\" id=\"db4-quiz\"><\/div>\n\n<script>\n(function () {\n  var root = document.getElementById('dangdai-b1l4-vocab-embed-1');\n  if (!root) return;\n\n  var SPEAKER_SVG = '<svg viewBox=\"0 0 24 24\" width=\"12\" height=\"12\" fill=\"currentColor\" aria-hidden=\"true\">' +\n    '<path d=\"M7 4.5v15l13-7.5z\"><\/path>' +\n    '<\/svg>';\n\n  function W(t, s, p) { return { t: t, s: s, pt: p, ps: p }; }\n\n  var GROUPS = {\n    'db4-word-list-1': [\n      { t: '\u4e00\u5171', s: '\u4e00\u5171', p: 'y\u00edg\u00f2ng', pos: 'Adv', meaning: 'altogether',\n        ex: [W('\u4e00\u5171','\u4e00\u5171','Y\u00edg\u00f2ng'), W('\u591a\u5c11','\u591a\u5c11','du\u014dsh\u01ceo'), W('\u9322','\u94b1','qi\u00e1n'), '\uff1f'],\n        exEn: 'How much is it altogether?' },\n      { t: '\u591a\u5c11', s: '\u591a\u5c11', p: 'du\u014dsh\u01ceo', pos: 'N', meaning: 'how much, how many',\n        ex: [W('\u9019','\u8fd9','Zh\u00e8'), W('\u676f','\u676f','b\u0113i'), W('\u5496\u5561','\u5496\u5561','k\u0101f\u0113i'), W('\u591a\u5c11','\u591a\u5c11','du\u014dsh\u01ceo'), W('\u9322','\u94b1','qi\u00e1n'), '\uff1f'],\n        exEn: 'How much is this cup of coffee?' },\n      { t: '\u9322', s: '\u94b1', p: 'qi\u00e1n', pos: 'N', meaning: 'money',\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u6c92','\u6ca1','m\u00e9i'), W('\u6709','\u6709','y\u01d2u'), W('\u9322','\u94b1','qi\u00e1n'), '\u3002'],\n        exEn: \"I don't have money.\" },\n      { t: '\u8001\u95c6', s: '\u8001\u677f', p: 'l\u01ceob\u01cen', pos: 'N', meaning: 'store-owner, boss',\n        ex: [W('\u8001\u95c6','\u8001\u677f','L\u01ceob\u01cen'), W('\u554f','\u95ee','w\u00e8n'), W('\u6211','\u6211','w\u01d2'), W('\u8981','\u8981','y\u00e0o'), W('\u8cb7','\u4e70','m\u01cei'), W('\u4ec0\u9ebc','\u4ec0\u4e48','sh\u00e9nme'), '\u3002'],\n        exEn: 'The store owner asked me what I want to buy.' },\n      { t: '\u8cb7', s: '\u4e70', p: 'm\u01cei', pos: 'V', meaning: 'to buy',\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u8981','\u8981','y\u00e0o'), W('\u8cb7','\u4e70','m\u01cei'), W('\u4ec0\u9ebc','\u4ec0\u4e48','sh\u00e9nme'), '\uff1f'],\n        exEn: 'What do you want to buy?' },\n      { t: '\u676f', s: '\u676f', p: 'b\u0113i', pos: 'M', meaning: 'cup',\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u8981','\u8981','y\u00e0o'), W('\u4e00','\u4e00','y\u00ec'), W('\u676f','\u676f','b\u0113i'), W('\u71b1','\u70ed','r\u00e8'), W('\u5496\u5561','\u5496\u5561','k\u0101f\u0113i'), '\u3002'],\n        exEn: 'I want a cup of hot coffee.' },\n      { t: '\u71b1', s: '\u70ed', p: 'r\u00e8', pos: 'Vs', meaning: 'hot',\n        ex: [W('\u9019','\u8fd9','Zh\u00e8'), W('\u676f','\u676f','b\u0113i'), W('\u8336','\u8336','ch\u00e1'), W('\u5f88','\u5f88','h\u011bn'), W('\u71b1','\u70ed','r\u00e8'), '\u3002'],\n        exEn: 'This cup of tea is very hot.' },\n      { t: '\u5305\u5b50', s: '\u5305\u5b50', p: 'b\u0101ozi', pos: 'N', meaning: 'steamed buns with meat stuffing',\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u8981','\u8981','y\u00e0o'), W('\u5169','\u4e24','li\u01ceng'), W('\u500b','\u4e2a','ge'), W('\u5305\u5b50','\u5305\u5b50','b\u0101ozi'), '\u3002'],\n        exEn: 'I want two baozi.' },\n      { t: '\u8981', s: '\u8981', p: 'y\u00e0o', pos: 'V', meaning: 'to want, to need',\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u8981','\u8981','y\u00e0o'), W('\u4e0d','\u4e0d','b\u00fa'), W('\u8981','\u8981','y\u00e0o'), W('\u8cb7','\u4e70','m\u01cei'), W('\u65b0','\u65b0','x\u012bn'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), '\uff1f'],\n        exEn: 'Do you want to buy a new cell phone?' },\n      { t: '\u5927', s: '\u5927', p: 'd\u00e0', pos: 'Vs', meaning: 'large',\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u8981','\u8981','y\u00e0o'), W('\u5927','\u5927','d\u00e0'), W('\u676f','\u676f','b\u0113i'), W('\u7684','\u7684','de'), '\u3002'],\n        exEn: 'I want a large one.' },\n      { t: '\u4e2d', s: '\u4e2d', p: 'zh\u014dng', pos: 'Vs-attr', meaning: 'medium',\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u8981','\u8981','y\u00e0o'), W('\u5927','\u5927','d\u00e0'), W('\u676f','\u676f','b\u0113i'), '\u3001', W('\u4e2d','\u4e2d','zh\u014dng'), W('\u676f','\u676f','b\u0113i'), W('\u9084\u662f','\u8fd8\u662f','h\u00e1ish\u00ec'), W('\u5c0f','\u5c0f','xi\u01ceo'), W('\u676f','\u676f','b\u0113i'), '\uff1f'],\n        exEn: 'Do you want a large, medium, or small cup?' },\n      { t: '\u5c0f', s: '\u5c0f', p: 'xi\u01ceo', pos: 'Vs', meaning: 'small',\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u8981','\u8981','y\u00e0o'), W('\u5c0f','\u5c0f','xi\u01ceo'), W('\u676f','\u676f','b\u0113i'), W('\u5496\u5561','\u5496\u5561','k\u0101f\u0113i'), '\u3002'],\n        exEn: 'I want a small coffee.' },\n      { t: '\u5e6b', s: '\u5e2e', p: 'b\u0101ng', pos: 'Prep', meaning: 'for, on behalf of',\n        ex: [W('\u8acb','\u8bf7','Q\u01d0ng'), W('\u5e6b','\u5e2e','b\u0101ng'), W('\u6211','\u6211','w\u01d2'), W('\u5fae\u6ce2','\u5fae\u6ce2','w\u00e9ib\u014d'), W('\u5305\u5b50','\u5305\u5b50','b\u0101ozi'), '\u3002'],\n        exEn: 'Please microwave the baozi for me.' },\n      { t: '\u5fae\u6ce2', s: '\u5fae\u6ce2', p: 'w\u00e9ib\u014d', pos: 'V', meaning: 'to microwave',\n        ex: [W('\u5305\u5b50','\u5305\u5b50','B\u0101ozi'), W('\u8acb','\u8bf7','q\u01d0ng'), W('\u5e6b','\u5e2e','b\u0101ng'), W('\u6211','\u6211','w\u01d2'), W('\u5fae\u6ce2','\u5fae\u6ce2','w\u00e9ib\u014d'), '\u3002'],\n        exEn: 'Please microwave the baozi for me.' },\n      { t: '\u767e', s: '\u767e', p: 'b\u01cei', pos: 'N', meaning: 'hundred',\n        ex: [W('\u4e00\u5171','\u4e00\u5171','Y\u00edg\u00f2ng'), W('\u4e00','\u4e00','y\u00ec'), W('\u767e','\u767e','b\u01cei'), W('\u584a','\u5757','ku\u00e0i'), '\u3002'],\n        exEn: \"It's 100 dollars altogether.\" },\n      { t: '\u584a', s: '\u5757', p: 'ku\u00e0i', pos: 'M', meaning: 'measure word for Chinese money',\n        ex: [W('\u9019','\u8fd9','Zh\u00e8'), W('\u676f','\u676f','b\u0113i'), W('\u5496\u5561','\u5496\u5561','k\u0101f\u0113i'), W('\u516b\u5341','\u516b\u5341','b\u0101sh\u00ed'), W('\u584a','\u5757','ku\u00e0i'), '\u3002'],\n        exEn: 'This cup of coffee is 80 dollars.' }\n    ],\n    'db4-word-list-2': [\n      { t: '\u597d\u7684', s: '\u597d\u7684', p: 'h\u01ceode', pos: 'Phrase', meaning: 'OK',\n        ex: [W('\u597d\u7684','\u597d\u7684','H\u01ceode'), '\uff0c', W('\u8b1d\u8b1d','\u8c22\u8c22','xi\u00e8xie'), W('\u4f60','\u4f60','n\u01d0'), '\u3002'],\n        exEn: 'OK, thank you.' },\n      { t: '\u5916\u5e36', s: '\u5916\u5e26', p: 'w\u00e0id\u00e0i', pos: 'Phrase', meaning: 'take out, to go',\n        ex: [W('\u5916\u5e36','\u5916\u5e26','W\u00e0id\u00e0i'), '\uff0c', W('\u4e00\u5171','\u4e00\u5171','y\u00edg\u00f2ng'), W('\u591a\u5c11','\u591a\u5c11','du\u014dsh\u01ceo'), W('\u9322','\u94b1','qi\u00e1n'), '\uff1f'],\n        exEn: 'To go \u2014 how much altogether?' },\n      { t: '\u5167\u7528', s: '\u5185\u7528', p: 'n\u00e8iy\u00f2ng', pos: 'Phrase', meaning: 'for here',\n        ex: [W('\u8acb\u554f','\u8bf7\u95ee','Q\u01d0ngw\u00e8n'), W('\u5916\u5e36','\u5916\u5e26','w\u00e0id\u00e0i'), W('\u9084\u662f','\u8fd8\u662f','h\u00e1ish\u00ec'), W('\u5167\u7528','\u5185\u7528','n\u00e8iy\u00f2ng'), '\uff1f'],\n        exEn: 'For here or to go?' }\n    ],\n    'db4-word-list-3': [\n      { t: '\u652f', s: '\u652f', p: 'zh\u012b', pos: 'M', meaning: 'measure word for cell phones',\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u60f3','\u60f3','xi\u01ceng'), W('\u8cb7','\u4e70','m\u01cei'), W('\u4e00','\u4e00','y\u00ec'), W('\u652f','\u652f','zh\u012b'), W('\u65b0','\u65b0','x\u012bn'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), '\u3002'],\n        exEn: 'I want to buy a new cell phone.' },\n      { t: '\u65b0', s: '\u65b0', p: 'x\u012bn', pos: 'Vs', meaning: 'new',\n        ex: [W('\u4f60','\u4f60','N\u01d0'), W('\u7684','\u7684','de'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u5f88','\u5f88','h\u011bn'), W('\u820a','\u65e7','ji\u00f9'), '\uff0c', W('\u70ba\u4ec0\u9ebc','\u4e3a\u4ec0\u4e48','w\u00e8ish\u00e9nme'), W('\u4e0d','\u4e0d','b\u00f9'), W('\u8cb7','\u4e70','m\u01cei'), W('\u65b0','\u65b0','x\u012bn'), W('\u7684','\u7684','de'), '\uff1f'],\n        exEn: 'Your phone is old, why not buy a new one?' },\n      { t: '\u624b\u6a5f', s: '\u624b\u673a', p: 'sh\u01d2uj\u012b', pos: 'N', meaning: 'cell phone',\n        ex: [W('\u90a3','\u90a3','N\u00e0'), W('\u652f','\u652f','zh\u012b'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u80fd','\u80fd','n\u00e9ng'), W('\u4e0a\u7db2','\u4e0a\u7f51','sh\u00e0ngw\u01ceng'), W('\u4e5f','\u4e5f','y\u011b'), W('\u80fd','\u80fd','n\u00e9ng'), W('\u7167\u76f8','\u7167\u76f8','zh\u00e0oxi\u00e0ng'), '\u3002'],\n        exEn: 'That cell phone can go online and take photos.' },\n      { t: '\u592a', s: '\u592a', p: 't\u00e0i', pos: 'Adv', meaning: 'too',\n        ex: [W('\u9019','\u8fd9','Zh\u00e8'), W('\u652f','\u652f','zh\u012b'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u592a','\u592a','t\u00e0i'), W('\u8cb4','\u8d35','gu\u00ec'), W('\u4e86','\u4e86','le'), '\u3002'],\n        exEn: 'This cell phone is too expensive.' },\n      { t: '\u820a', s: '\u65e7', p: 'ji\u00f9', pos: 'Vs', meaning: 'old',\n        ex: [W('\u6211','\u6211','W\u01d2'), W('\u9019','\u8fd9','zh\u00e8'), W('\u652f','\u652f','zh\u012b'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u592a','\u592a','t\u00e0i'), W('\u820a','\u65e7','ji\u00f9'), W('\u4e86','\u4e86','le'), '\uff0c', W('\u4e0d','\u4e0d','b\u00f9'), W('\u597d\u770b','\u597d\u770b','h\u01ceok\u00e0n'), '\u3002'],\n        exEn: \"This phone of mine is too old, it doesn't look good.\" },\n      { t: '\u4e86', s: '\u4e86', p: 'le', pos: 'Ptc', meaning: \"sentence-final particle indicating the speaker's sense of certainty\",\n        ex: [W('\u592a','\u592a','T\u00e0i'), W('\u8cb4','\u8d35','gu\u00ec'), W('\u4e86','\u4e86','le'), '\uff01'],\n        exEn: 'Too expensive!' },\n      { t: '\u7a2e', s: '\u79cd', p: 'zh\u01d2ng', pos: 'M', meaning: 'kind, type',\n        ex: [W('\u59b3','\u59b3','N\u01d0'), W('\u60f3','\u60f3','xi\u01ceng'), W('\u8cb7','\u4e70','m\u01cei'), W('\u54ea','\u54ea','n\u01ce'), W('\u7a2e','\u79cd','zh\u01d2ng'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), '\uff1f'],\n        exEn: 'What kind of cell phone do you want to buy?' },\n      { t: '\u80fd', s: '\u80fd', p: 'n\u00e9ng', pos: 'Vaux', meaning: 'can, to be able to',\n        ex: [W('\u9019','\u8fd9','Zh\u00e8'), W('\u652f','\u652f','zh\u012b'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u80fd','\u80fd','n\u00e9ng'), W('\u7167\u76f8','\u7167\u76f8','zh\u00e0oxi\u00e0ng'), W('\u4e5f','\u4e5f','y\u011b'), W('\u80fd','\u80fd','n\u00e9ng'), W('\u4e0a\u7db2','\u4e0a\u7f51','sh\u00e0ngw\u01ceng'), '\u3002'],\n        exEn: 'This cell phone can take photos and go online.' },\n      { t: '\u4e0a\u7db2', s: '\u4e0a\u7f51', p: 'sh\u00e0ngw\u01ceng', pos: 'V-sep', meaning: 'to access the internet',\n        ex: [W('\u9019','\u8fd9','Zh\u00e8'), W('\u652f','\u652f','zh\u012b'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u4e0d','\u4e0d','b\u00f9'), W('\u80fd','\u80fd','n\u00e9ng'), W('\u4e0a\u7db2','\u4e0a\u7f51','sh\u00e0ngw\u01ceng'), '\u3002'],\n        exEn: \"This cell phone can't go online.\" },\n      { t: '\u90a3', s: '\u90a3', pt: 'n\u00e0', ps: 'n\u00e0', pos: 'Det', meaning: 'that',\n        ex: [W('\u90a3','\u90a3','N\u00e0'), W('\u7a2e','\u79cd','zh\u01d2ng'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u4e0d','\u4e0d','b\u00f9'), W('\u4fbf\u5b9c','\u4fbf\u5b9c','pi\u00e1ny\u00ed'), '\u3002'],\n        exEn: \"That kind of cell phone isn't cheap.\" },\n      { t: '\u8cb4', s: '\u8d35', p: 'gu\u00ec', pos: 'Vs', meaning: 'expensive',\n        ex: [W('\u9019','\u8fd9','Zh\u00e8'), W('\u652f','\u652f','zh\u012b'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u8cb4','\u8d35','gu\u00ec'), W('\u4e0d','\u4e0d','b\u00fa'), W('\u8cb4','\u8d35','gu\u00ec'), '\uff1f'],\n        exEn: 'Is this cell phone expensive?' },\n      { t: '\u8ce3', s: '\u5356', p: 'm\u00e0i', pos: 'V', meaning: 'to sell',\n        ex: [W('\u4e00','\u4e00','Y\u00ec'), W('\u652f','\u652f','zh\u012b'), W('\u8ce3','\u5356','m\u00e0i'), W('\u591a\u5c11','\u591a\u5c11','du\u014dsh\u01ceo'), W('\u9322','\u94b1','qi\u00e1n'), '\uff1f'],\n        exEn: 'How much does one sell for?' },\n      { t: '\u4fbf\u5b9c', s: '\u4fbf\u5b9c', p: 'pi\u00e1ny\u00ed', pos: 'Vs', meaning: 'cheap, inexpensive',\n        ex: [W('\u9019','\u8fd9','Zh\u00e8'), W('\u7a2e','\u79cd','zh\u01d2ng'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u5f88','\u5f88','h\u011bn'), W('\u4fbf\u5b9c','\u4fbf\u5b9c','pi\u00e1ny\u00ed'), '\u3002'],\n        exEn: 'This kind of cell phone is very cheap.' },\n      { t: '\u8981', s: '\u8981', p: 'y\u00e0o', pos: 'Vst', meaning: 'to take, to require',\n        ex: [W('\u4e00','\u4e00','Y\u00ec'), W('\u652f','\u652f','zh\u012b'), W('\u8981','\u8981','y\u00e0o'), W('\u4e00\u842c','\u4e00\u4e07','y\u00edw\u00e0n'), W('\u4e94\u5343','\u4e94\u5343','w\u01d4qi\u0101n'), W('\u591a','\u591a','du\u014d'), '\u3002'],\n        exEn: 'One costs over 15,000.' },\n      { t: '\u842c', s: '\u4e07', p: 'w\u00e0n', pos: 'N', meaning: 'ten thousand',\n        ex: [W('\u9019','\u8fd9','Zh\u00e8'), W('\u652f','\u652f','zh\u012b'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u8981','\u8981','y\u00e0o'), W('\u4e00\u842c','\u4e00\u4e07','y\u00edw\u00e0n'), W('\u591a','\u591a','du\u014d'), W('\u584a','\u5757','ku\u00e0i'), '\u3002'],\n        exEn: 'This cell phone costs over ten thousand dollars.' },\n      { t: '\u5343', s: '\u5343', p: 'qi\u0101n', pos: 'N', meaning: 'thousand',\n        ex: [W('\u4e00','\u4e00','Y\u00ec'), W('\u652f','\u652f','zh\u012b'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u4e94\u5343','\u4e94\u5343','w\u01d4qi\u0101n'), W('\u584a','\u5757','ku\u00e0i'), '\u3002'],\n        exEn: 'One cell phone is five thousand dollars.' },\n      { t: '\u70ba\u4ec0\u9ebc', s: '\u4e3a\u4ec0\u4e48', p: 'w\u00e8ish\u00e9nme', pos: 'Phrase', meaning: 'why',\n        ex: [W('\u70ba\u4ec0\u9ebc','\u4e3a\u4ec0\u4e48','W\u00e8ish\u00e9nme'), W('\u8981','\u8981','y\u00e0o'), W('\u8cb7','\u4e70','m\u01cei'), W('\u65b0','\u65b0','x\u012bn'), W('\u7684','\u7684','de'), '\uff1f'],\n        exEn: 'Why do you want to buy a new one?' }\n    ]\n  };\n\n  \/\/ Original dialogue (NOT from the textbook), using only Lesson 1\u20134 vocabulary\n  var DIALOGUE = [\n    { speakerT: '\u8001\u95c6', speakerS: '\u8001\u677f',\n      tokens: [W('\u8acb\u554f','\u8bf7\u95ee','Q\u01d0ngw\u00e8n'), W('\u4f60','\u4f60','n\u01d0'), W('\u8981','\u8981','y\u00e0o'), W('\u8cb7','\u4e70','m\u01cei'), W('\u4ec0\u9ebc','\u4ec0\u4e48','sh\u00e9nme'), '\uff1f'],\n      en: 'Excuse me, what would you like to buy?' },\n    { speakerT: '\u5982\u7389', speakerS: '\u5982\u7389',\n      tokens: [W('\u6211','\u6211','W\u01d2'), W('\u8981','\u8981','y\u00e0o'), W('\u4e00','\u4e00','y\u00ec'), W('\u676f','\u676f','b\u0113i'), W('\u71b1','\u70ed','r\u00e8'), W('\u8336','\u8336','ch\u00e1'), W('\u548c','\u548c','h\u00e0n'), W('\u4e00','\u4e00','y\u00ed'), W('\u500b','\u4e2a','ge'), W('\u5305\u5b50','\u5305\u5b50','b\u0101ozi'), '\u3002'],\n      en: 'I want a cup of hot tea and one baozi.' },\n    { speakerT: '\u8001\u95c6', speakerS: '\u8001\u677f',\n      tokens: [W('\u59b3','\u59b3','N\u01d0'), W('\u8981','\u8981','y\u00e0o'), W('\u5927','\u5927','d\u00e0'), W('\u676f','\u676f','b\u0113i'), '\u3001', W('\u4e2d','\u4e2d','zh\u014dng'), W('\u676f','\u676f','b\u0113i'), W('\u9084\u662f','\u8fd8\u662f','h\u00e1ish\u00ec'), W('\u5c0f','\u5c0f','xi\u01ceo'), W('\u676f','\u676f','b\u0113i'), '\uff1f'],\n      en: 'Do you want a large, medium, or small cup?' },\n    { speakerT: '\u5982\u7389', speakerS: '\u5982\u7389',\n      tokens: [W('\u4e2d','\u4e2d','Zh\u014dng'), W('\u676f','\u676f','b\u0113i'), '\uff0c', W('\u8acb','\u8bf7','q\u01d0ng'), W('\u5e6b','\u5e2e','b\u0101ng'), W('\u6211','\u6211','w\u01d2'), W('\u5fae\u6ce2','\u5fae\u6ce2','w\u00e9ib\u014d'), W('\u5305\u5b50','\u5305\u5b50','b\u0101ozi'), '\u3002'],\n      en: 'Medium, and please microwave the baozi for me.' },\n    { speakerT: '\u8001\u95c6', speakerS: '\u8001\u677f',\n      tokens: [W('\u597d\u7684','\u597d\u7684','H\u01ceode'), '\uff0c', W('\u8acb\u554f','\u8bf7\u95ee','q\u01d0ngw\u00e8n'), W('\u5916\u5e36','\u5916\u5e26','w\u00e0id\u00e0i'), W('\u9084\u662f','\u8fd8\u662f','h\u00e1ish\u00ec'), W('\u5167\u7528','\u5185\u7528','n\u00e8iy\u00f2ng'), '\uff1f'],\n      en: 'OK, for here or to go?' },\n    { speakerT: '\u5982\u7389', speakerS: '\u5982\u7389',\n      tokens: [W('\u5916\u5e36','\u5916\u5e26','W\u00e0id\u00e0i'), '\uff0c', W('\u4e00\u5171','\u4e00\u5171','y\u00edg\u00f2ng'), W('\u591a\u5c11','\u591a\u5c11','du\u014dsh\u01ceo'), W('\u9322','\u94b1','qi\u00e1n'), '\uff1f'],\n      en: 'To go \u2014 how much altogether?' },\n    { speakerT: '\u8001\u95c6', speakerS: '\u8001\u677f',\n      tokens: [W('\u8336','\u8336','Ch\u00e1'), W('\u4e09\u5341\u4e94','\u4e09\u5341\u4e94','s\u0101nsh\u00edw\u01d4'), '\uff0c', W('\u5305\u5b50','\u5305\u5b50','b\u0101ozi'), W('\u4e8c\u5341','\u4e8c\u5341','\u00e8rsh\u00ed'), '\uff0c', W('\u4e00\u5171','\u4e00\u5171','y\u00edg\u00f2ng'), W('\u4e94\u5341\u4e94','\u4e94\u5341\u4e94','w\u01d4sh\u00edw\u01d4'), W('\u584a','\u5757','ku\u00e0i'), '\u3002'],\n      en: \"35 for the tea, 20 for the baozi \u2014 that's 55 in total.\" },\n    { speakerT: '\u5982\u7389', speakerS: '\u5982\u7389',\n      tokens: [W('\u597d','\u597d','H\u01ceo'), '\uff0c', W('\u8b1d\u8b1d','\u8c22\u8c22','xi\u00e8xie'), W('\u4f60','\u4f60','n\u01d0'), '\u3002'],\n      en: 'OK, thank you.' },\n    { speakerT: '\u6708\u7f8e', speakerS: '\u6708\u7f8e',\n      tokens: [W('\u6211','\u6211','W\u01d2'), W('\u60f3','\u60f3','xi\u01ceng'), W('\u8cb7','\u4e70','m\u01cei'), W('\u4e00','\u4e00','y\u00ec'), W('\u652f','\u652f','zh\u012b'), W('\u65b0','\u65b0','x\u012bn'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), '\u3002'],\n      en: 'I want to buy a new cell phone.' },\n    { speakerT: '\u958b\u6587', speakerS: '\u5f00\u6587',\n      tokens: [W('\u59b3','\u59b3','N\u01d0'), W('\u7684','\u7684','de'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u4e0d','\u4e0d','b\u00fa'), W('\u820a','\u65e7','ji\u00f9'), '\uff0c', W('\u70ba\u4ec0\u9ebc','\u4e3a\u4ec0\u4e48','w\u00e8ish\u00e9nme'), W('\u8981','\u8981','y\u00e0o'), W('\u8cb7','\u4e70','m\u01cei'), W('\u65b0','\u65b0','x\u012bn'), W('\u7684','\u7684','de'), '\uff1f'],\n      en: \"Your phone isn't old \u2014 why do you want a new one?\" },\n    { speakerT: '\u6708\u7f8e', speakerS: '\u6708\u7f8e',\n      tokens: [W('\u6211','\u6211','W\u01d2'), W('\u9019','\u8fd9','zh\u00e8'), W('\u652f','\u652f','zh\u012b'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u592a','\u592a','t\u00e0i'), W('\u820a','\u65e7','ji\u00f9'), W('\u4e86','\u4e86','le'), '\uff0c', W('\u4e0d','\u4e0d','b\u00f9'), W('\u597d\u770b','\u597d\u770b','h\u01ceok\u00e0n'), '\u3002'],\n      en: 'This phone of mine is too old, it looks bad.' },\n    { speakerT: '\u958b\u6587', speakerS: '\u5f00\u6587',\n      tokens: [W('\u59b3','\u59b3','N\u01d0'), W('\u60f3','\u60f3','xi\u01ceng'), W('\u8cb7','\u4e70','m\u01cei'), W('\u54ea','\u54ea','n\u01ce'), W('\u7a2e','\u79cd','zh\u01d2ng'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), '\uff1f'],\n      en: 'What kind of cell phone do you want to buy?' },\n    { speakerT: '\u6708\u7f8e', speakerS: '\u6708\u7f8e',\n      tokens: [W('\u80fd','\u80fd','N\u00e9ng'), W('\u7167\u76f8','\u7167\u76f8','zh\u00e0oxi\u00e0ng'), W('\u4e5f','\u4e5f','y\u011b'), W('\u80fd','\u80fd','n\u00e9ng'), W('\u4e0a\u7db2','\u4e0a\u7f51','sh\u00e0ngw\u01ceng'), W('\u7684','\u7684','de'), '\u3002'],\n      en: 'One that can take photos and go online.' },\n    { speakerT: '\u958b\u6587', speakerS: '\u5f00\u6587',\n      tokens: [W('\u90a3','\u90a3','N\u00e0'), W('\u7a2e','\u79cd','zh\u01d2ng'), W('\u624b\u6a5f','\u624b\u673a','sh\u01d2uj\u012b'), W('\u4e0d','\u4e0d','b\u00f9'), W('\u4fbf\u5b9c','\u4fbf\u5b9c','pi\u00e1ny\u00ed'), '\uff0c', W('\u4e00','\u4e00','y\u00ec'), W('\u652f','\u652f','zh\u012b'), W('\u8981','\u8981','y\u00e0o'), W('\u4e00\u842c','\u4e00\u4e07','y\u00edw\u00e0n'), W('\u591a','\u591a','du\u014d'), '\u3002'],\n      en: 'That kind of cell phone is not cheap \u2014 one costs over ten thousand.' },\n    { speakerT: '\u6708\u7f8e', speakerS: '\u6708\u7f8e',\n      tokens: [W('\u592a','\u592a','T\u00e0i'), W('\u8cb4','\u8d35','gu\u00ec'), W('\u4e86','\u4e86','le'), '\uff0c', W('\u6211','\u6211','w\u01d2'), W('\u4e0d','\u4e0d','b\u00fa'), W('\u8981','\u8981','y\u00e0o'), W('\u8cb7','\u4e70','m\u01cei'), '\u3002'],\n      en: \"That's too expensive, I won't buy it.\" }\n  ];\n\n  var ALL_WORDS = [];\n  Object.keys(GROUPS).forEach(function (k) {\n    GROUPS[k].forEach(function (w) { ALL_WORDS.push(w); });\n  });\n\n  function rubyWord(w) {\n    return '<span class=\"db4-sent-word\">' +\n      '<ruby class=\"lang-zh-TW\"><span class=\"rb\">' + w.t + '<\/span><rt>' + w.pt + '<\/rt><\/ruby>' +\n      '<ruby class=\"lang-zh-CN\"><span class=\"rb\">' + w.s + '<\/span><rt>' + w.ps + '<\/rt><\/ruby>' +\n      '<\/span>';\n  }\n\n  function renderTokens(tokens) {\n    var html = '';\n    tokens.forEach(function (tok) {\n      if (typeof tok === 'string') {\n        html += '<span class=\"db4-punct\">' + tok + '<\/span>';\n      } else {\n        html += rubyWord(tok);\n      }\n    });\n    return html;\n  }\n\n  function headwordRuby(t, s, pt, ps) {\n    return '<ruby class=\"lang-zh-TW\"><span class=\"rb\">' + t + '<\/span><rt>' + pt + '<\/rt><\/ruby>' +\n           '<ruby class=\"lang-zh-CN\"><span class=\"rb\">' + s + '<\/span><rt>' + ps + '<\/rt><\/ruby>';\n  }\n\n  var counter = 0;\n  Object.keys(GROUPS).forEach(function (containerId) {\n    var container = root.querySelector('#' + containerId);\n    if (!container) return;\n    var html = '';\n    GROUPS[containerId].forEach(function (w) {\n      counter++;\n      var num = (counter < 10 ? '0' : '') + counter;\n      html += '<div class=\"db4-word-card\">' +\n        '<div class=\"db4-word-top\">' +\n          '<span class=\"db4-num\">' + num + '<\/span>' +\n          '<span class=\"db4-hanzi\">' + headwordRuby(w.t, w.s, w.pt || w.p, w.ps || w.p) + '<\/span>' +\n          '<span class=\"db4-pos\">' + w.pos + '<\/span>' +\n          '<span class=\"db4-meaning\">' + w.meaning + '<\/span>' +\n          '<button class=\"db4-speaker\" data-trad=\"' + w.t + '\" data-simp=\"' + w.s + '\" aria-label=\"Play pronunciation\">' + SPEAKER_SVG + '<\/button>' +\n        '<\/div>' +\n        '<div class=\"db4-example\">' +\n          renderTokens(w.ex) +\n          '<span class=\"db4-en\">' + w.exEn + '<\/span>' +\n        '<\/div>' +\n      '<\/div>';\n    });\n    container.innerHTML = html;\n  });\n\n  var dialogueEl = root.querySelector('#db4-dialogue');\n  if (dialogueEl) {\n    var dHtml = '';\n    DIALOGUE.forEach(function (line) {\n      dHtml += '<div class=\"db4-line\">' +\n        '<span class=\"db4-speaker-tag\">' +\n          '<span class=\"lang-zh-TW\">' + line.speakerT + '<\/span>' +\n          '<span class=\"lang-zh-CN\">' + line.speakerS + '<\/span>' +\n        '<\/span>' +\n        '<span class=\"db4-line-body\">' +\n          renderTokens(line.tokens) +\n          '<span class=\"db4-line-en\">' + line.en + '<\/span>' +\n        '<\/span>' +\n      '<\/div>';\n    });\n    dialogueEl.innerHTML = dHtml;\n  }\n\n  \/\/ ---- Flashcards ----\n  var fcCard = root.querySelector('#db4-flashcard');\n  var fcFront = root.querySelector('#db4-fc-front');\n  var fcBack = root.querySelector('#db4-fc-back');\n  var fcProgress = root.querySelector('#db4-fc-progress');\n  var fcPrevBtn = root.querySelector('#db4-fc-prev');\n  var fcNextBtn = root.querySelector('#db4-fc-next');\n  var fcIndex = 0;\n  var fcFlipped = false;\n\n  function renderFlashcard() {\n    var w = ALL_WORDS[fcIndex];\n    if (!w || !fcFront || !fcBack) return;\n    fcFront.innerHTML = '<span class=\"db4-hanzi\">' + headwordRuby(w.t, w.s, w.pt || w.p, w.ps || w.p) + '<\/span>';\n    fcBack.innerHTML = '<span class=\"db4-meaning\">' + w.meaning + '<\/span><span class=\"db4-pos\">' + w.pos + '<\/span>';\n    if (fcProgress) fcProgress.textContent = (fcIndex + 1) + ' \/ ' + ALL_WORDS.length;\n    if (fcCard) fcCard.classList.remove('db4-flipped');\n    fcFlipped = false;\n  }\n\n  if (fcCard) {\n    fcCard.addEventListener('click', function () {\n      fcFlipped = !fcFlipped;\n      fcCard.classList.toggle('db4-flipped', fcFlipped);\n    });\n  }\n  if (fcPrevBtn) fcPrevBtn.addEventListener('click', function () {\n    fcIndex = (fcIndex - 1 + ALL_WORDS.length) % ALL_WORDS.length;\n    renderFlashcard();\n  });\n  if (fcNextBtn) fcNextBtn.addEventListener('click', function () {\n    fcIndex = (fcIndex + 1) % ALL_WORDS.length;\n    renderFlashcard();\n  });\n  renderFlashcard();\n\n  \/\/ ---- Match It game ----\n  var gameColZh = root.querySelector('#db4-game-col-zh');\n  var gameColEn = root.querySelector('#db4-game-col-en');\n  var gameStatus = root.querySelector('#db4-game-status');\n  var gameWin = root.querySelector('#db4-game-win');\n  var gameNewBtn = root.querySelector('#db4-game-new');\n  var gameRound = [];\n  var gameSelectedZh = null;\n  var gameSelectedEn = null;\n  var gameMatchedCount = 0;\n  var gameBusy = false;\n\n  function shuffle(arr) {\n    var a = arr.slice();\n    for (var i = a.length - 1; i > 0; i--) {\n      var j = Math.floor(Math.random() * (i + 1));\n      var tmp = a[i]; a[i] = a[j]; a[j] = tmp;\n    }\n    return a;\n  }\n\n  function startRound() {\n    gameRound = shuffle(ALL_WORDS).slice(0, 8);\n    gameSelectedZh = null;\n    gameSelectedEn = null;\n    gameMatchedCount = 0;\n    gameBusy = false;\n    if (gameWin) gameWin.classList.remove('db4-show');\n\n    var zhOrder = shuffle(gameRound);\n    var enOrder = shuffle(gameRound);\n\n    gameColZh.innerHTML = zhOrder.map(function (w) {\n      return '<button class=\"db4-tile\" data-id=\"' + w.t + '\" data-side=\"zh\">' +\n        '<span class=\"lang-zh-TW\">' + w.t + '<\/span><span class=\"lang-zh-CN\">' + w.s + '<\/span>' +\n        '<span class=\"db4-tile-py\">' + (w.pt || w.p) + '<\/span>' +\n      '<\/button>';\n    }).join('');\n\n    gameColEn.innerHTML = enOrder.map(function (w) {\n      return '<button class=\"db4-tile\" data-id=\"' + w.t + '\" data-side=\"en\">' + w.meaning + '<\/button>';\n    }).join('');\n\n    updateGameStatus();\n  }\n\n  function updateGameStatus() {\n    if (gameStatus) gameStatus.textContent = gameMatchedCount + ' \/ ' + gameRound.length + ' matched';\n  }\n\n  function handleTileClick(tile) {\n    if (gameBusy || tile.classList.contains('db4-matched')) return;\n    var side = tile.getAttribute('data-side');\n\n    if (side === 'zh') {\n      if (gameSelectedZh) gameSelectedZh.classList.remove('db4-selected');\n      gameSelectedZh = tile;\n      tile.classList.add('db4-selected');\n    } else {\n      if (gameSelectedEn) gameSelectedEn.classList.remove('db4-selected');\n      gameSelectedEn = tile;\n      tile.classList.add('db4-selected');\n    }\n\n    if (gameSelectedZh) {\n      if (gameSelectedEn) {\n        var zhId = gameSelectedZh.getAttribute('data-id');\n        var enId = gameSelectedEn.getAttribute('data-id');\n        if (zhId === enId) {\n          gameSelectedZh.classList.remove('db4-selected');\n          gameSelectedEn.classList.remove('db4-selected');\n          gameSelectedZh.classList.add('db4-matched');\n          gameSelectedEn.classList.add('db4-matched');\n          gameMatchedCount++;\n          updateGameStatus();\n          gameSelectedZh = null;\n          gameSelectedEn = null;\n          var roundDone = (gameMatchedCount === gameRound.length);\n          if (roundDone) {\n            if (gameWin) {\n              gameWin.classList.add('db4-show');\n            }\n          }\n        } else {\n          gameBusy = true;\n          var z = gameSelectedZh, en = gameSelectedEn;\n          z.classList.add('db4-wrong');\n          en.classList.add('db4-wrong');\n          setTimeout(function () {\n            z.classList.remove('db4-selected', 'db4-wrong');\n            en.classList.remove('db4-selected', 'db4-wrong');\n            gameBusy = false;\n          }, 400);\n          gameSelectedZh = null;\n          gameSelectedEn = null;\n        }\n      }\n    }\n  }\n\n  root.addEventListener('click', function (e) {\n    var tile = e.target.closest('.db4-tile');\n    if (tile) {\n      if (root.contains(tile)) handleTileClick(tile);\n    }\n  });\n  if (gameNewBtn) gameNewBtn.addEventListener('click', startRound);\n\n  startRound();\n\n  \/\/ ---- Vocabulary Quiz ----\n  var QUIZ_DATA = [\n    { type: 'mc', prompt: '<span class=\"lang-zh-TW\">\u4e00\u5171<\/span><span class=\"lang-zh-CN\">\u4e00\u5171<\/span> means...', options: ['altogether', 'how much', 'money', 'cheap'], answer: 0 },\n    { type: 'type', prompt: 'Type the pinyin for <span class=\"lang-zh-TW\">\u8001\u95c6<\/span><span class=\"lang-zh-CN\">\u8001\u677f<\/span>.', accept: ['laoban'] },\n    { type: 'mc', prompt: '<span class=\"lang-zh-TW\">\u5fae\u6ce2<\/span><span class=\"lang-zh-CN\">\u5fae\u6ce2<\/span> means...', options: ['to microwave', 'to sell', 'to buy', 'to order'], answer: 0 },\n    { type: 'type', prompt: 'Type the English word for <span class=\"lang-zh-TW\">\u5305\u5b50<\/span><span class=\"lang-zh-CN\">\u5305\u5b50<\/span>.', accept: ['baozi', 'steamed bun', 'steamed buns'] },\n    { type: 'mc', prompt: 'Which measure word is used for cell phones?', options: ['<span class=\"lang-zh-TW\">\u652f<\/span><span class=\"lang-zh-CN\">\u652f<\/span>', '<span class=\"lang-zh-TW\">\u676f<\/span><span class=\"lang-zh-CN\">\u676f<\/span>', '<span class=\"lang-zh-TW\">\u584a<\/span><span class=\"lang-zh-CN\">\u5757<\/span>', '<span class=\"lang-zh-TW\">\u7a2e<\/span><span class=\"lang-zh-CN\">\u79cd<\/span>'], answer: 0 },\n    { type: 'type', prompt: 'Type the pinyin for <span class=\"lang-zh-TW\">\u8cb4<\/span><span class=\"lang-zh-CN\">\u8d35<\/span>.', accept: ['gui'] },\n    { type: 'mc', prompt: '<span class=\"lang-zh-TW\">\u4fbf\u5b9c<\/span><span class=\"lang-zh-CN\">\u4fbf\u5b9c<\/span> means...', options: ['cheap, inexpensive', 'expensive', 'new', 'old'], answer: 0 },\n    { type: 'type', prompt: 'Type the English word for <span class=\"lang-zh-TW\">\u4e0a\u7db2<\/span><span class=\"lang-zh-CN\">\u4e0a\u7f51<\/span>.', accept: ['go online', 'to go online', 'access the internet'] },\n    { type: 'mc', prompt: '<span class=\"lang-zh-TW\">\u70ba\u4ec0\u9ebc<\/span><span class=\"lang-zh-CN\">\u4e3a\u4ec0\u4e48<\/span> means...', options: ['why', 'how much', 'which kind', 'what'], answer: 0 },\n    { type: 'type', prompt: 'Type the pinyin for <span class=\"lang-zh-TW\">\u842c<\/span><span class=\"lang-zh-CN\">\u4e07<\/span>.', accept: ['wan'] },\n    { type: 'mc', prompt: 'Which word means \"for here\" (eating in)?', options: ['<span class=\"lang-zh-TW\">\u5167\u7528<\/span><span class=\"lang-zh-CN\">\u5185\u7528<\/span>', '<span class=\"lang-zh-TW\">\u5916\u5e36<\/span><span class=\"lang-zh-CN\">\u5916\u5e26<\/span>', '<span class=\"lang-zh-TW\">\u597d\u7684<\/span><span class=\"lang-zh-CN\">\u597d\u7684<\/span>', '<span class=\"lang-zh-TW\">\u4e00\u5171<\/span><span class=\"lang-zh-CN\">\u4e00\u5171<\/span>'], answer: 0 },\n    { type: 'type', prompt: 'Type the English word for <span class=\"lang-zh-TW\">\u8ce3<\/span><span class=\"lang-zh-CN\">\u5356<\/span>.', accept: ['sell', 'to sell'] },\n    { type: 'mc', prompt: '<span class=\"lang-zh-TW\">\u820a<\/span><span class=\"lang-zh-CN\">\u65e7<\/span> means...', options: ['old', 'new', 'small', 'large'], answer: 0 },\n    { type: 'type', prompt: 'Type the pinyin for <span class=\"lang-zh-TW\">\u5343<\/span><span class=\"lang-zh-CN\">\u5343<\/span>.', accept: ['qian'] },\n    { type: 'mc', prompt: 'Which word is the auxiliary verb for \"can, to be able to\"?', options: ['<span class=\"lang-zh-TW\">\u80fd<\/span><span class=\"lang-zh-CN\">\u80fd<\/span>', '<span class=\"lang-zh-TW\">\u8981<\/span><span class=\"lang-zh-CN\">\u8981<\/span>', '<span class=\"lang-zh-TW\">\u5e6b<\/span><span class=\"lang-zh-CN\">\u5e2e<\/span>', '<span class=\"lang-zh-TW\">\u8ce3<\/span><span class=\"lang-zh-CN\">\u5356<\/span>'], answer: 0 }\n  ];\n\n  function stripTones(s) {\n    return s.normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, '').toLowerCase().replace(\/[^a-z0-9]\/g, '');\n  }\n\n  (function initQuiz() {\n    var qRoot = root.querySelector('#db4-quiz');\n    if (!qRoot) return;\n    var current = 0;\n    var score = 0;\n    var answered = false;\n\n    function render() {\n      if (current >= QUIZ_DATA.length) { renderScore(); return; }\n      var q = QUIZ_DATA[current];\n      answered = false;\n      var html = '<p class=\"db4-quiz-progress\">Question ' + (current + 1) + ' of ' + QUIZ_DATA.length + '<\/p>';\n      html += '<p class=\"db4-quiz-prompt\">' + q.prompt + '<\/p>';\n      if (q.type === 'mc') {\n        html += '<div class=\"db4-quiz-options\">';\n        for (var i = 0; i < q.options.length; i++) {\n          html += '<button type=\"button\" class=\"db4-quiz-opt\" data-i=\"' + i + '\">' + q.options[i] + '<\/button>';\n        }\n        html += '<\/div>';\n      } else {\n        html += '<div class=\"db4-quiz-input-row\">';\n        html += '<input type=\"text\" class=\"db4-quiz-input\" placeholder=\"Type your answer\">';\n        html += '<button type=\"button\" class=\"db4-quiz-submit\">Submit<\/button>';\n        html += '<\/div>';\n      }\n      html += '<p class=\"db4-quiz-feedback\"><\/p>';\n      html += '<button type=\"button\" class=\"db4-quiz-next\" style=\"display:none;\">Next<\/button>';\n      qRoot.innerHTML = html;\n\n      if (q.type === 'mc') {\n        var opts = qRoot.querySelectorAll('.db4-quiz-opt');\n        opts.forEach(function (btn) {\n          btn.addEventListener('click', function () {\n            if (answered) return;\n            answered = true;\n            var i = parseInt(this.getAttribute('data-i'), 10);\n            var correct = i === q.answer;\n            if (correct) score++;\n            opts.forEach(function (b, bi) {\n              b.setAttribute('disabled', 'disabled');\n              if (bi === q.answer) b.classList.add('correct');\n              else if (bi === i) b.classList.add('incorrect');\n            });\n            showFeedback(correct);\n          });\n        });\n      } else {\n        var input = qRoot.querySelector('.db4-quiz-input');\n        var submitBtn = qRoot.querySelector('.db4-quiz-submit');\n        function submit() {\n          if (answered) return;\n          answered = true;\n          var val = stripTones(input.value || '');\n          var correct = q.accept.indexOf(val) !== -1;\n          if (correct) score++;\n          input.setAttribute('disabled', 'disabled');\n          submitBtn.setAttribute('disabled', 'disabled');\n          showFeedback(correct, q.accept[0]);\n        }\n        submitBtn.addEventListener('click', submit);\n        input.addEventListener('keydown', function (e) { if (e.key === 'Enter') submit(); });\n      }\n\n      function showFeedback(correct, correctAnswer) {\n        var fb = qRoot.querySelector('.db4-quiz-feedback');\n        if (correct) {\n          fb.textContent = 'Correct!';\n        } else if (correctAnswer) {\n          fb.textContent = 'Not quite \u2014 the answer is \"' + correctAnswer + '\".';\n        } else {\n          fb.textContent = 'Not quite \u2014 check the highlighted answer above.';\n        }\n        fb.className = 'db4-quiz-feedback ' + (correct ? 'correct' : 'incorrect');\n        var nextBtn = qRoot.querySelector('.db4-quiz-next');\n        nextBtn.style.display = 'inline-block';\n        nextBtn.addEventListener('click', function () { current++; render(); });\n      }\n    }\n\n    function renderScore() {\n      qRoot.innerHTML =\n        '<div class=\"db4-quiz-score\">' +\n        '<span class=\"db4-quiz-score-num\">' + score + ' \/ ' + QUIZ_DATA.length + '<\/span>' +\n        '<p>Nice work! Want to try again?<\/p>' +\n        '<button type=\"button\" class=\"db4-quiz-retake\">Retake Quiz<\/button>' +\n        '<\/div>';\n      qRoot.querySelector('.db4-quiz-retake').addEventListener('click', function () {\n        current = 0; score = 0; render();\n      });\n    }\n\n    render();\n  })();\n\n  \/\/ Speaker buttons (event delegation, Web Speech API)\n  root.addEventListener('click', function (e) {\n    var btn = e.target.closest('.db4-speaker');\n    if (!btn || !root.contains(btn)) return;\n    if (!('speechSynthesis' in window)) return;\n    var showingSimp = false;\n    var simpEl = root.querySelector('.lang-zh-CN');\n    if (simpEl) {\n      if (simpEl.offsetParent !== null) showingSimp = true;\n    }\n    var text = showingSimp ? btn.getAttribute('data-simp') : btn.getAttribute('data-trad');\n    var utter = new SpeechSynthesisUtterance(text);\n    utter.lang = showingSimp ? 'zh-CN' : 'zh-TW';\n    window.speechSynthesis.cancel();\n    window.speechSynthesis.speak(utter);\n  });\n})();\n<\/script>\n<\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-medium is-resized\"><a href=\"https:\/\/ko-fi.com\/tiffanystalk\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"58\" src=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-300x58.png\" alt=\"\" class=\"wp-image-570\" style=\"width:150px;height:29px\" srcset=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-300x58.png 300w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-600x115.png 600w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-1024x197.png 1024w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-768x148.png 768w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-1536x296.png 1536w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-2048x394.png 2048w, https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2022\/06\/fcacd-buymeacoffee_red402x-850x164.png 850w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption class=\"wp-element-caption\">Do you like it? \ud83d\ude42<\/figcaption><\/figure>\n<\/div>\n\n\n<div style=\"height:100px\" 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\/contemporary-chinese-book-1\/\"><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":"","protected":false},"author":2,"featured_media":10970,"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":[1099],"tags":[],"class_list":["post-12895","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-1099"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>B1 L4 Vocabulary and Practice - OneDotDot Chinese<\/title>\n<meta name=\"description\" content=\"Strengthen your vocabulary \u7576\u4ee3\u4e2d\u6587\u7b2c\u4e00\u518a\u7b2c\u56db\u8ab2 \u55ae\u8a5e\u7df4\u7fd2 \u8907\u7fd2 \u8003\u8a66 Contemporary Chinese Vocabulary Practice Book 1 \u2013 Lesson 4\" \/>\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\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"B1 L4 Vocabulary and Practice - OneDotDot Chinese\" \/>\n<meta property=\"og:description\" content=\"Strengthen your vocabulary \u7576\u4ee3\u4e2d\u6587\u7b2c\u4e00\u518a\u7b2c\u56db\u8ab2 \u55ae\u8a5e\u7df4\u7fd2 \u8907\u7fd2 \u8003\u8a66 Contemporary Chinese Vocabulary Practice Book 1 \u2013 Lesson 4\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/\" \/>\n<meta property=\"og:site_name\" content=\"OneDotDot Chinese\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-17T10:53:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-07T21:33:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2024\/09\/\u7576\u4ee3\u4e2d\u6587.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/\"},\"author\":{\"name\":\"tiffany\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"headline\":\"B1 L4 Vocabulary and Practice\",\"datePublished\":\"2025-07-17T10:53:20+00:00\",\"dateModified\":\"2026-09-07T21:33:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#\\\/schema\\\/person\\\/3556e1160fac98b190d03b8aa8604d99\"},\"image\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/\u7576\u4ee3\u4e2d\u6587.jpg\",\"articleSection\":[\"\u7576\u4ee3\u4e2d\u6587 1\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/\",\"name\":\"B1 L4 Vocabulary and Practice - OneDotDot Chinese\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/\u7576\u4ee3\u4e2d\u6587.jpg\",\"datePublished\":\"2025-07-17T10:53:20+00:00\",\"dateModified\":\"2026-09-07T21:33:12+00:00\",\"description\":\"Strengthen your vocabulary \u7576\u4ee3\u4e2d\u6587\u7b2c\u4e00\u518a\u7b2c\u56db\u8ab2 \u55ae\u8a5e\u7df4\u7fd2 \u8907\u7fd2 \u8003\u8a66 Contemporary Chinese Vocabulary Practice Book 1 \u2013 Lesson 4\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/#primaryimage\",\"url\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/\u7576\u4ee3\u4e2d\u6587.jpg\",\"contentUrl\":\"https:\\\/\\\/tiffanysmandarin.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/\u7576\u4ee3\u4e2d\u6587.jpg\",\"width\":800,\"height\":300,\"caption\":\"\u7576\u4ee3\u4e2d\u65871\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tiffanysmandarin.com\\\/index.php\\\/2025\\\/07\\\/17\\\/contemporary-chinese-vocabulary-practice-b1l4\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/tiffanysmandarin.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"B1 L4 Vocabulary and Practice\"}]},{\"@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":"B1 L4 Vocabulary and Practice - OneDotDot Chinese","description":"Strengthen your vocabulary \u7576\u4ee3\u4e2d\u6587\u7b2c\u4e00\u518a\u7b2c\u56db\u8ab2 \u55ae\u8a5e\u7df4\u7fd2 \u8907\u7fd2 \u8003\u8a66 Contemporary Chinese Vocabulary Practice Book 1 \u2013 Lesson 4","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\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/","og_locale":"en_US","og_type":"article","og_title":"B1 L4 Vocabulary and Practice - OneDotDot Chinese","og_description":"Strengthen your vocabulary \u7576\u4ee3\u4e2d\u6587\u7b2c\u4e00\u518a\u7b2c\u56db\u8ab2 \u55ae\u8a5e\u7df4\u7fd2 \u8907\u7fd2 \u8003\u8a66 Contemporary Chinese Vocabulary Practice Book 1 \u2013 Lesson 4","og_url":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/","og_site_name":"OneDotDot Chinese","article_published_time":"2025-07-17T10:53:20+00:00","article_modified_time":"2026-09-07T21:33:12+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2024\/09\/\u7576\u4ee3\u4e2d\u6587.jpg","type":"image\/jpeg"}],"author":"tiffany","twitter_card":"summary_large_image","twitter_misc":{"Written by":"tiffany","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/#article","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/"},"author":{"name":"tiffany","@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"headline":"B1 L4 Vocabulary and Practice","datePublished":"2025-07-17T10:53:20+00:00","dateModified":"2026-09-07T21:33:12+00:00","mainEntityOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/"},"wordCount":9,"publisher":{"@id":"https:\/\/tiffanysmandarin.com\/#\/schema\/person\/3556e1160fac98b190d03b8aa8604d99"},"image":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/#primaryimage"},"thumbnailUrl":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2024\/09\/\u7576\u4ee3\u4e2d\u6587.jpg","articleSection":["\u7576\u4ee3\u4e2d\u6587 1"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/","url":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/","name":"B1 L4 Vocabulary and Practice - OneDotDot Chinese","isPartOf":{"@id":"https:\/\/tiffanysmandarin.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/#primaryimage"},"image":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/#primaryimage"},"thumbnailUrl":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2024\/09\/\u7576\u4ee3\u4e2d\u6587.jpg","datePublished":"2025-07-17T10:53:20+00:00","dateModified":"2026-09-07T21:33:12+00:00","description":"Strengthen your vocabulary \u7576\u4ee3\u4e2d\u6587\u7b2c\u4e00\u518a\u7b2c\u56db\u8ab2 \u55ae\u8a5e\u7df4\u7fd2 \u8907\u7fd2 \u8003\u8a66 Contemporary Chinese Vocabulary Practice Book 1 \u2013 Lesson 4","breadcrumb":{"@id":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/#primaryimage","url":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2024\/09\/\u7576\u4ee3\u4e2d\u6587.jpg","contentUrl":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2024\/09\/\u7576\u4ee3\u4e2d\u6587.jpg","width":800,"height":300,"caption":"\u7576\u4ee3\u4e2d\u65871"},{"@type":"BreadcrumbList","@id":"https:\/\/tiffanysmandarin.com\/index.php\/2025\/07\/17\/contemporary-chinese-vocabulary-practice-b1l4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/tiffanysmandarin.com\/"},{"@type":"ListItem","position":2,"name":"B1 L4 Vocabulary and Practice"}]},{"@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":"https:\/\/tiffanysmandarin.com\/wp-content\/uploads\/2024\/09\/\u7576\u4ee3\u4e2d\u6587.jpg","_links":{"self":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/12895","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=12895"}],"version-history":[{"count":5,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/12895\/revisions"}],"predecessor-version":[{"id":16736,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/posts\/12895\/revisions\/16736"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/media\/10970"}],"wp:attachment":[{"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/media?parent=12895"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/categories?post=12895"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tiffanysmandarin.com\/index.php\/wp-json\/wp\/v2\/tags?post=12895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}