Fix Japanese translations for error messages and UI prompts

This commit is contained in:
Nik Afiq 2025-12-06 03:31:10 +09:00
parent 9674fc9cbe
commit 9ef61fe8a6
3 changed files with 14 additions and 14 deletions

View File

@ -83,8 +83,8 @@ export default function TimeSyncNotice({
const msgJa = error
? `時刻同期に失敗しました: ${error}`
: ahead
? `端末の時計が正確な時刻より ${formatDelay(skewVal)} 進んでいます(通信往復遅延 ${rttMs ?? "-"}ms`
: `端末の時計が正確な時刻より ${formatDelay(-skewVal)} 遅れています(通信往復遅延 ${rttMs ?? "-"}ms`;
? `端末の時計が基準時刻より ${formatDelay(skewVal)} 進んでいます(往復遅延 ${rttMs ?? "-"}ms`
: `端末の時計が基準時刻より ${formatDelay(-skewVal)} 遅れています(往復遅延 ${rttMs ?? "-"}ms`;
const msgEn = error
? `Time sync failed: ${error}`
: ahead

View File

@ -98,7 +98,7 @@ export default function Timer() {
setLoaded(true);
setErrorMsg("Failed to load schedule; using defaults.");
logApiError("loadSchedule", e);
toastError("スケジュール取得に失敗しました", e instanceof Error ? e.message : String(e || ""));
toastError("スケジュールを取得できませんでした", e instanceof Error ? e.message : String(e || ""));
}
}, [applySchedule]);
@ -203,7 +203,7 @@ export default function Timer() {
<NowJst getNowMs={nowMs} />
</div>
{/* show time endpoint error */}
{timeError && <div className="timer-status" style={{ color: "#f88" }}>: {timeError}</div>}
{timeError && <div className="timer-status" style={{ color: "#f88" }}>: {timeError}</div>}
{/* Hero digits */}
<div className={`timer-hero ${hasHours ? "has-hours" : ""}`} role="timer" aria-live="off">
@ -229,10 +229,10 @@ export default function Timer() {
{/* Sub status line */}
{loaded && phase === "waiting" && (
<div className="timer-status"> {formatHMS(untilStart)}</div>
<div className="timer-status"> {formatHMS(untilStart)}</div>
)}
{loaded && phase === "ended" && (
<div className="timer-status"> {startLabel} JST.</div>
<div className="timer-status">{startLabel} JST </div>
)}
{errorMsg && (
<div className="timer-status">

View File

@ -66,10 +66,10 @@ export default function ShowsPage() {
data.sort((a, b) => a.id - b.id); // ASC
setShows(data);
} catch (e: unknown) {
const msg = e instanceof Error ? e.message : "番組一覧の取得に失敗しました。";
const msg = e instanceof Error ? e.message : "番組一覧を取得できませんでした。";
setError(msg);
logApiError("fetch shows", e);
toastError("番組一覧の取得に失敗しました", msg);
toastError("番組一覧を取得できませんでした", msg);
} finally {
setLoading(false);
}
@ -94,13 +94,13 @@ export default function ShowsPage() {
if (!selectedId) { setError("エピソードを選択してください。"); return; }
const selected = shows.find(s => s.id === selectedId);
if (!selected) { setError("選択中のエピソードが見つかりません。"); return; }
if (!selected) { setError("選択中のエピソードが見つかりませんでした。"); return; }
const payload: { id: number; start_time?: string } = { id: selectedId };
if (startTime.trim()) {
const normalized = toHHMMSS(startTime);
if (!normalized) { setError("開始時刻は HH:MM 形式で入力してください。"); return; }
if (!normalized) { setError("開始時刻は HH:MM 形式で入力してください。"); return; }
payload.start_time = normalized;
} else {
payload.start_time = selected.start_time;
@ -118,10 +118,10 @@ export default function ShowsPage() {
else setRedirectIn(left);
}, 250);
} catch (e: unknown) {
const msg = e instanceof Error ? e.message : "現在のエピソード設定に失敗しました。";
const msg = e instanceof Error ? e.message : "現在のエピソードを設定できませんでした。";
setError(msg);
logApiError("set current episode", e);
toastError("現在のエピソード設定に失敗しました", msg);
toastError("現在のエピソードを設定できませんでした", msg);
} finally {
setPosting(false);
}
@ -131,7 +131,7 @@ export default function ShowsPage() {
<div className="shows-page">
<h2 className="h1" style={{ marginBottom: 8 }}></h2>
<p className="subtle" style={{ marginTop: 0 }}>
HH:MM
HH:MM
</p>
{loading && <div className="subtle"></div>}
@ -160,7 +160,7 @@ export default function ShowsPage() {
<div className="title">{s.ep_num}{s.ep_title}</div>
<div className="season subtle">{s.season_name}</div>
<div className="meta subtle">
{s.start_time.slice(0, 5)} {formatPlaybackLen(s.playback_length)}
{s.start_time.slice(0, 5)} {formatPlaybackLen(s.playback_length)}
</div>
</button>
))}