fix(i18n): complete Simplified Chinese core and plugin translations (#1542)

* fix(i18n): complete Chinese onboarding and navigation labels

* fix(i18n): translate remaining Chinese core and plugin interfaces

* fix(i18n): translate host editor tab overflow controls

* fix(i18n): use consistent Chinese fleet terminology

* fix(i18n): localize hardcoded controls and plugin views

* fix(i18n): translate built-in homepage widget catalog

* test(homepage): follow translated timezone placeholder

* fix(i18n): translate plugin-provided homepage widgets

* fix(i18n): localize feature settings section titles
This commit is contained in:
ZacharyZcR authored and GitHub committed 2026-10-03 21:37:00 +08:00
1 parent 13f5736d8f
commit 0214a81e5d
78 files changed
+2423 -1833

No files matched your search

@@ -140,14 +140,18 @@ export function AddWidgetMenu({ state, onAdd, onClose }: AddWidgetMenuProps) {
{type.labelComponent ? (
<type.labelComponent part="name" />
) : (
type.name
t(`homepage.widgets.${type.id}.name`, {
defaultValue: type.name,
})
)}
</span>
<span className="text-[10px] text-muted-foreground truncate">
{type.labelComponent ? (
<type.labelComponent part="description" />
) : (
type.description
t(`homepage.widgets.${type.id}.description`, {
defaultValue: type.description,
})
)}
</span>
</div>
@@ -23,7 +23,7 @@ export function ClockEditForm({
onChange={(e) =>
onChange({ ...config, timezone: e.target.value || undefined })
}
placeholder="America/New_York (leave blank for local)"
placeholder={t("homepage.timezonePlaceholder")}
aria-invalid={invalidTimezone}
className={
invalidTimezone ? "h-8 text-sm border-destructive" : "h-8 text-sm"
@@ -16,7 +16,7 @@ export function NotesEditForm({
<Textarea
value={config.content}
onChange={(e) => onChange({ ...config, content: e.target.value })}
placeholder="Write your notes here..."
placeholder={t("homepage.notesPlaceholder")}
className="text-sm min-h-[120px] resize-none rounded-none"
/>
</div>
@@ -17,7 +17,7 @@ export function WeatherEditForm({
<Input
value={config.location}
onChange={(e) => onChange({ ...config, location: e.target.value })}
placeholder="New York, London, Tokyo..."
placeholder={t("homepage.locationPlaceholder")}
className="h-8 text-sm"
/>
</div>