「取消、延後、候補」:職場與生活必學日語辨析
變動情境演練
【取消】日文怎麼說?【延後】日文怎麼說?【候補】日文怎麼說?
const vocabData = [
{ id: 1, kanji: '後ろ倒し', kana: 'うしろだおし', meaning: '延後進行', cat: 'delay', emoji: ' ️' },
{ id: 2, kanji: '後回し', kana: 'あとまわし', meaning: '往後挪(拖延)', cat: 'delay', emoji: '⏳' },
{ id: 3, kanji: '先送り', kana: 'さきおくり', meaning: '往後拖( deferred)', cat: 'delay', emoji: ' ' },
{ id: 4, kanji: '見送り', kana: 'みおくり', meaning: '擱置(取消計畫)', cat: 'cancel', emoji: '❌' },
{ id: 5, kanji: '見合わせ', kana: 'みあわせ', meaning: '暫停(靜觀其變)', cat: 'cancel', emoji: '⏸️' },
{ id: 6, kanji: '引き延ばし', kana: 'ひきのばし', meaning: '延長期限', cat: 'delay', emoji: ' ' },
{ id: 7, kanji: 'キャンセルする', kana: 'きゃんせるする', meaning: '取消', cat: 'cancel', emoji: ' ' },
{ id: 8, kanji: 'キャンセル待ち', kana: 'きゃんせるまち', meaning: '候補中', cat: 'cancel', emoji: ' ' }
];
const scenarios = {
delay: {
jp: "開始時期を後倒しにする。",
plain: "開始時期を後ろ倒しにする。",
mean: "把開始的時間延後進行。",
note: "唸法建議:注意「後ろ倒し(うしろだおし)」在商務場合很常用。"
},
suspend: {
jp: "運轉を見合わせる。",
plain: "運転を見合わせる。",
mean: "暫停行駛(視情況再決定是否復駛)。",
note: "情境提示:常見於氣候不良導致電車停駛的廣播中。"
},
waitlist: {
jp: "ただいまキャンセル待ちで受付しております。",
plain: "ただいまキャンセル待ちで受付しております。",
mean: "我們目前是以候補的方式接受您的預約。",
note: "唸法建議:注意「待ち(まち)」的濁音變化情形。"
}
};
let currentFilter = 'all';
let currentPlain = "";
window.onload = () => {
renderVocab();
selectScenario('delay');
};
function renderVocab() {
const grid = document.getElementById('vocab-grid');
grid.innerHTML = '';
const list = currentFilter === 'all' ? vocabData : vocabData.filter(v => v.cat === currentFilter);
list.forEach(v => {
const card = document.createElement('div');
card.className = 'card-container';
card.onclick = function() { this.querySelector('.card-inner').classList.toggle('flipped'); };
card.innerHTML = `
`;
grid.appendChild(card);
});
}
function filterVocab(cat) {
currentFilter = cat;
document.querySelectorAll('.filter-btn').forEach(btn => btn.classList.remove('active'));
const activeBtn = document.querySelector(`.filter-btn[data-filter="${cat}"]`);
if (activeBtn) activeBtn.classList.add('active');
renderVocab();
}
function selectScenario(num) {
const data = scenarios[num];
const content = document.getElementById('scenario-content');
currentPlain = data.plain;
document.querySelectorAll('.scenario-btn').forEach(btn => btn.classList.remove('active'));
document.getElementById('btn-' + num).classList.add('active');
content.innerHTML = `
中文解釋
${data.mean}
`;
}
function copySentence() {
const el = document.createElement('textarea');
el.value = currentPlain;
document.body.appendChild(el);
el.select();
document.execCommand('copy');
document.body.removeChild(el);
const toast = document.getElementById('toast');
toast.classList.add('show');
setTimeout(() => toast.classList.remove('show'), 2000);
}