Fix Japanese translations for error messages and UI prompts
This commit is contained in:
parent
9674fc9cbe
commit
9ef61fe8a6
@ -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
|
||||
|
||||
@ -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">
|
||||
|
||||
@ -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>
|
||||
))}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user