feat: translate system interface to English

This commit is contained in:
2026-09-28 18:42:16 +09:00
parent e870bdfcbb
commit 1cf32705a7
74 changed files with 1232 additions and 1065 deletions
+21 -19
View File
@@ -20,11 +20,11 @@ import { conversations } from './mock-conversations'
import './support.css'
const views = [
{ id: 'now', label: '今' },
{ id: 'later', label: 'あとで' },
{ id: 'waiting', label: '相手待ち' },
{ id: 'done', label: '履歴' },
{ id: 'all', label: 'すべて' },
{ id: 'now', label: 'Now' },
{ id: 'later', label: 'Later' },
{ id: 'waiting', label: 'Waiting' },
{ id: 'done', label: 'History' },
{ id: 'all', label: 'All' },
] as const
export function SupportPage() {
const [view, setView] = useState<string>('now')
@@ -50,12 +50,12 @@ export function SupportPage() {
if (note) setOutcomes((current) => ({ ...current, [id]: note }))
setNotice(
status === 'sent'
? '返信の操作を記録しました'
? 'Reply preview recorded'
: status === 'later'
? 'あとでに移しました'
? 'Moved to Later'
: status === 'waiting'
? '相手待ちに移しました'
: '対応不要にしました',
? 'Moved to Waiting'
: 'Marked as no action needed',
)
setReading(false)
}
@@ -66,7 +66,7 @@ export function SupportPage() {
<WorkspaceNavigation />
<Sidebar collapsible="none" className="support-list">
<SidebarHeader className="border-b p-5 gap-4">
<h1 className="text-base font-semibold">連絡</h1>
<h1 className="text-base font-semibold">Messages</h1>
<div className="flex gap-1 flex-wrap">
{views.map((tab) => (
<Button
@@ -88,8 +88,8 @@ export function SupportPage() {
<div className="relative">
<Search className="absolute left-3 top-2 size-4 text-muted-foreground" />
<Input
aria-label="連絡を検索"
placeholder="検索"
aria-label="Search messages"
placeholder="Search"
className="pl-9"
value={query}
onChange={(event) => setQuery(event.target.value)}
@@ -116,12 +116,14 @@ export function SupportPage() {
))}
{!visible.length && (
<p className="p-5 text-sm text-muted-foreground">
{query ? '見つかりませんでした' : 'いま扱う連絡はありません'}
{query
? 'No results found'
: 'No messages to handle right now'}
</p>
)}
{view === 'now' && matches.length > 3 && (
<p className="p-5 text-xs text-muted-foreground">
ほか {matches.length - 3} 件
{matches.length - 3} more
</p>
)}
</SidebarContent>
@@ -133,7 +135,7 @@ export function SupportPage() {
variant="ghost"
size="icon"
className="support-back"
aria-label="連絡一覧に戻る"
aria-label="Back to messages"
onClick={() => setReading(false)}
>
<ArrowLeft />
@@ -148,7 +150,7 @@ export function SupportPage() {
</header>
<section
className="support-detail"
aria-label="連絡の詳細"
aria-label="Message details"
// biome-ignore lint/a11y/noNoninteractiveTabindex: Independent region needs keyboard scrolling.
tabIndex={0}
>
@@ -169,7 +171,7 @@ export function SupportPage() {
<>
{outcomes[selected.id] && (
<div className="support-outcome">
<h2 className="font-medium text-sm">活動の記録</h2>
<h2 className="font-medium text-sm">Activity log</h2>
<p className="whitespace-pre-wrap mt-2 text-sm">
{outcomes[selected.id]}
</p>
@@ -187,12 +189,12 @@ export function SupportPage() {
setView('now')
}}
>
今に戻す
Move to Now
</Button>
)}
</>
) : (
<div className="support-empty">連絡を選択</div>
<div className="support-empty">Select a conversation</div>
)}
</section>
</SidebarInset>