From 3343dee36cb81ae87878cc4bf78a2c95d97237f1 Mon Sep 17 00:00:00 2001
From: Asterracy <311249772+Asterracy@users.noreply.github.com>
Date: Tue, 22 Sep 2026 07:11:58 +0800
Subject: [PATCH] feat(i18n): update Simplified Chinese localization
Signed-off-by: Asterracy <311249772+Asterracy@users.noreply.github.com>
---
LOCALIZATION.zh-Hans.md | 12 +
desktop/package.json | 5 +-
desktop/scripts/check-hardcoded-strings.mjs | 1026 ++++
.../scripts/check-hardcoded-strings.test.mjs | 269 +
.../scripts/hardcoded-strings-baseline.json | 4067 +++++++++++++
desktop/src-tauri/src/app_menu.rs | 158 +-
desktop/src-tauri/src/lib.rs | 3 +
desktop/src/app/App.tsx | 15 +-
desktop/src/app/AppTopChrome.tsx | 12 +-
desktop/src/app/RootErrorBoundary.test.mjs | 10 +
desktop/src/app/RootErrorBoundary.tsx | 15 +-
.../agent-memory/ui/MemorySection.tsx | 59 +-
.../features/agents/cardMintStore.test.mjs | 10 +
desktop/src/features/agents/cardMintStore.ts | 22 +-
.../agents/lib/agentAccessWarning.test.mjs | 10 +
.../features/agents/lib/agentAccessWarning.ts | 18 +-
.../agents/lib/useAgentAvailability.test.mjs | 10 +
.../agents/ui/AddAgentToChannelDialog.tsx | 41 +-
.../agents/ui/AddCustomHarnessDialog.tsx | 6 +-
.../agents/ui/AddTeamToChannelDialog.tsx | 42 +-
.../agents/ui/AdvancedRequiredBadge.tsx | 5 +-
.../agents/ui/AgentAiConfigurationMode.tsx | 21 +-
.../features/agents/ui/AgentAiDefaults.tsx | 28 +-
.../agents/ui/AgentCardMintDialog.tsx | 39 +-
.../features/agents/ui/AgentConfigFields.tsx | 30 +-
.../agents/ui/AgentDefaultsDialog.tsx | 20 +-
.../agents/ui/AgentDefaultsEditor.tsx | 27 +-
.../agents/ui/AgentDefinitionDialog.tsx | 4 +-
.../agents/ui/AgentDefinitionDialogFooter.tsx | 13 +-
.../agents/ui/AgentDefinitionMetadata.tsx | 23 +-
.../agents/ui/AgentDescriptionField.tsx | 12 +-
.../features/agents/ui/AgentHarnessField.tsx | 5 +-
.../agents/ui/AgentInstanceEditDialog.tsx | 4 +-
.../agents/ui/AgentManagementDialogs.tsx | 6 +-
.../CompactMessageSummary.tsx | 10 +-
.../SentMessageContextDialog.tsx | 29 +-
.../AgentSessionToolItem/TodoToolSummary.tsx | 4 +-
.../AgentSessionToolItem/ToolDetailBlocks.tsx | 12 +-
.../agents/ui/AgentSessionTranscriptList.tsx | 32 +-
.../agents/ui/AgentSnapshotExportDialog.tsx | 58 +-
desktop/src/features/agents/ui/AgentsView.tsx | 20 +-
.../agents/ui/CardMintComposerChip.tsx | 16 +-
.../src/features/agents/ui/CardMintKeyCue.tsx | 8 +-
.../ui/EditAgentProviderModelFields.tsx | 31 +-
.../features/agents/ui/EffortPickerField.tsx | 12 +-
.../src/features/agents/ui/EnvVarsEditor.tsx | 29 +-
.../agents/ui/HarnessCatalogRetryNotice.tsx | 6 +-
.../agents/ui/ManagedAgentLogPanel.tsx | 17 +-
.../features/agents/ui/McpServersSection.tsx | 13 +-
.../features/agents/ui/PersonaActionsMenu.tsx | 16 +-
.../src/features/agents/ui/PersonaAddedBy.tsx | 15 +-
.../agents/ui/PersonaAdvancedFields.tsx | 32 +-
.../agents/ui/PersonaDeleteDialog.test.mjs | 10 +
.../agents/ui/PersonaDeleteDialog.tsx | 27 +-
.../agents/ui/PersonaModelCombobox.tsx | 8 +-
.../features/agents/ui/PersonaModelField.tsx | 19 +-
.../agents/ui/PersonaProviderApiKeyField.tsx | 14 +-
.../agents/ui/PersonaShareRecipients.tsx | 16 +-
.../agents/ui/PromptSectionAccordion.tsx | 6 +-
.../src/features/agents/ui/RawEventRail.tsx | 5 +-
.../agents/ui/RemoveMembersConfirmDialog.tsx | 17 +-
.../features/agents/ui/RestartDiffBadge.tsx | 10 +-
.../agents/ui/RunOnSummarySection.tsx | 14 +-
.../features/agents/ui/TeamDeleteDialog.tsx | 12 +-
desktop/src/features/agents/ui/TeamDialog.tsx | 40 +-
.../features/agents/ui/TeamIdentityCard.tsx | 13 +-
.../features/agents/ui/TeamShareDialog.tsx | 11 +-
.../agents/ui/TeamSnapshotExportDialog.tsx | 45 +-
.../src/features/agents/ui/TeamsSection.tsx | 41 +-
.../agents/ui/TurnLivenessIndicator.tsx | 8 +-
.../agents/ui/UnifiedAgentsSection.tsx | 18 +-
.../UnifiedAgentsSectionCardTarget.test.mjs | 10 +
.../features/agents/ui/WhereToRunSection.tsx | 21 +-
.../MessageLinkHoverCue.tsx | 4 +-
.../UserMessageBubble.tsx | 6 +-
.../agents/ui/addCustomHarness.test.mjs | 17 +-
.../features/agents/ui/addCustomHarness.ts | 12 +-
.../agents/ui/agentDefaultsEditor.test.mjs | 10 +
.../ui/agentInstanceEditCancelSafety.test.mjs | 11 +
.../agents/ui/agentProfileSyncWarning.ts | 7 +-
.../agents/ui/agentSessionFileRead.ts | 10 +-
.../agents/ui/agentSessionToolCatalog.ts | 30 +-
.../ui/agentSessionToolClassifier.test.mjs | 10 +
.../agents/ui/agentSessionToolClassifier.ts | 161 +-
.../ui/agentSessionToolSummary.test.mjs | 10 +
.../agents/ui/agentSessionTranscript.test.mjs | 10 +
.../agents/ui/agentSessionTranscript.ts | 9 +-
.../agentSessionTranscriptGrouping.test.mjs | 10 +
.../ui/agentSessionTranscriptGrouping.ts | 25 +-
.../ui/agentSessionTranscriptHelpers.test.mjs | 10 +
.../ui/agentSessionTranscriptHelpers.ts | 164 +-
.../features/agents/ui/agentSessionUtils.ts | 7 +-
.../agents/ui/buzzAgentModelTuningFields.tsx | 50 +-
.../features/agents/ui/effortPicker.test.mjs | 10 +
.../src/features/agents/ui/effortPicker.ts | 6 +-
.../agents/ui/personaDialogState.test.mjs | 10 +
.../features/agents/ui/personaDialogState.ts | 24 +-
.../features/agents/ui/personaLibraryCopy.ts | 108 +-
.../ui/personaModelDiscoveryStatus.test.mjs | 10 +
.../agents/ui/personaModelDiscoveryStatus.ts | 21 +-
.../agents/ui/relayMeshModelPicker.test.mjs | 10 +
.../agents/ui/relayMeshModelPicker.ts | 18 +-
.../src/features/agents/ui/teamLibraryCopy.ts | 43 +-
.../agents/ui/teamSnapshotImport.lib.ts | 19 +-
.../agents/ui/useManagedAgentActions.ts | 18 +-
.../ui/usePersonaModelDiscovery.test.mjs | 10 +
.../agents/ui/usePersonaModelDiscovery.ts | 20 +-
.../src/features/agents/ui/useTeamActions.ts | 77 +-
.../useCreatedAgentChannelAttachment.ts | 36 +-
.../channel-templates/useApplyTemplate.ts | 7 +-
.../channels/lib/channelDescription.test.mjs | 12 +
.../channels/lib/channelDescription.ts | 13 +-
.../channels/lib/channelLifecycle.test.mjs | 13 +
.../features/channels/lib/channelLifecycle.ts | 11 +-
.../channels/lib/dmParticipantDisplay.ts | 5 +-
.../channels/lib/ephemeralChannel.test.mjs | 72 +-
.../features/channels/lib/ephemeralChannel.ts | 80 +-
.../channels/ui/AddChannelBotDialog.tsx | 43 +-
.../ui/AddChannelBotGenericSection.tsx | 18 +-
.../ui/AddChannelBotPersonasSection.tsx | 18 +-
.../channels/ui/AddChannelBotReuseGuard.tsx | 21 +-
.../channels/ui/AddChannelBotTeamsSection.tsx | 12 +-
.../channels/ui/AddMemberSearchResultRow.tsx | 12 +-
.../channels/ui/AgentSessionThreadPanel.tsx | 112 +-
.../features/channels/ui/BotActivityBar.tsx | 29 +-
.../channels/ui/ChannelBrowserDialog.tsx | 149 +-
.../features/channels/ui/ChannelCanvas.tsx | 24 +-
.../ui/ChannelManagementModerationActions.tsx | 38 +-
.../channels/ui/ChannelManagementSheet.tsx | 99 +-
.../ui/ChannelManagementSheetRows.tsx | 34 +-
.../channels/ui/ChannelMemberAvatarStack.tsx | 4 +-
.../channels/ui/ChannelMemberInviteCard.tsx | 55 +-
.../channels/ui/ChannelMembersBar.tsx | 20 +-
.../src/features/channels/ui/ChannelPane.tsx | 41 +-
.../ui/ChannelPermissionsSettings.tsx | 32 +-
.../channels/ui/ChannelScreenEmptyState.tsx | 5 +-
.../channels/ui/ChannelScreenHeader.tsx | 19 +-
.../channels/ui/ChannelTypePicker.tsx | 38 +-
.../channels/ui/ChannelTypeSettings.tsx | 99 +-
.../channels/ui/ChannelWorkflowsSection.tsx | 10 +-
.../channels/ui/EditRespondToDialog.tsx | 14 +-
.../channels/ui/FocusThreadDrawer.tsx | 11 +-
.../channels/ui/ForumChannelContent.tsx | 4 +-
.../features/channels/ui/MembersSidebar.tsx | 36 +-
.../ui/MembersSidebarAgentControls.tsx | 8 +-
.../channels/ui/MembersSidebarMemberCard.tsx | 91 +-
.../src/features/channels/ui/QuickBotBar.tsx | 13 +-
.../channels/ui/RightAuxiliaryPane.tsx | 8 +-
.../channels/ui/ThreadViewModeToggle.tsx | 12 +-
.../channels/ui/WelcomeAgentCreateDialog.tsx | 17 +-
.../channels/ui/WelcomeComposerBanner.tsx | 13 +-
.../features/channels/ui/useChannelIntro.tsx | 23 +-
.../channels/ui/useMembersSidebarActions.ts | 51 +-
.../ui/useMembersSidebarModeration.ts | 24 +-
.../features/channels/ui/useQuickBotDrop.ts | 11 +-
.../channels/ui/useRoutedMessageEdit.ts | 6 +-
.../channels/useActiveChannelHeader.ts | 4 +-
.../channels/useChannelPaneHandlers.ts | 6 +-
.../channels/useWelcomeAgentCreate.ts | 10 +-
desktop/src/features/chat/ui/ChatHeader.tsx | 10 +-
.../communities/hostedCommunityApi.ts | 33 +-
.../communities/ui/AddCommunityDialog.tsx | 30 +-
.../ui/CommunityApplyErrorScreen.tsx | 8 +-
.../communities/ui/CommunityChangeOverlay.tsx | 14 +-
.../communities/ui/CommunityEditForm.tsx | 35 +-
.../ui/CommunityIconSettingsCard.tsx | 8 +-
.../communities/ui/CommunitySwitcher.tsx | 75 +-
.../communities/ui/EditCommunityDialog.tsx | 36 +-
.../ui/HostedCommunityCreateFlow.tsx | 81 +-
.../ui/HostedCommunityOnboarding.tsx | 138 +-
.../features/communities/ui/WelcomeSetup.tsx | 49 +-
.../communities/useNestNotifications.ts | 11 +-
.../community-members/lib/joinAlerts.test.mjs | 7 +
.../community-members/lib/joinAlerts.ts | 14 +-
.../community-members/ui/AddMemberDialog.tsx | 65 +-
.../ui/CommunityInviteDialog.tsx | 11 +-
.../ui/CommunityMembersCard.tsx | 41 +-
.../ui/CommunityMembersSettingsCard.tsx | 55 +-
.../ui/ConfirmRemoveDialog.tsx | 19 +-
.../ui/InviteLinkSection.tsx | 110 +-
.../useCommunityJoinAlerts.test.mjs | 10 +
.../ui/CustomEmojiSettingsCard.tsx | 90 +-
.../features/forum/ui/DeleteActionMenu.tsx | 4 +-
.../features/forum/ui/DeleteConfirmDialog.tsx | 12 +-
.../forum/ui/ForumComposer.lifecycle.test.mjs | 22 +
.../src/features/forum/ui/ForumComposer.tsx | 8 +-
.../forum/ui/ForumComposerCompactLayout.tsx | 8 +-
.../forum/ui/ForumComposerMediaStatus.tsx | 8 +-
.../features/forum/ui/ForumThreadPanel.tsx | 10 +-
desktop/src/features/forum/ui/ForumView.tsx | 14 +-
.../forum/ui/useForumMentionPreparation.ts | 6 +-
desktop/src/features/gifs/relay.ts | 30 +-
.../src/features/gifs/ui/KlipyGifPicker.tsx | 16 +-
.../home/lib/homeMessageCapabilities.ts | 7 +-
desktop/src/features/home/lib/inbox.test.mjs | 9 +
desktop/src/features/home/lib/inbox.ts | 67 +-
.../features/home/lib/projectInbox.test.mjs | 9 +
desktop/src/features/home/ui/FeedSection.tsx | 44 +-
desktop/src/features/home/ui/HomeView.tsx | 18 +-
.../src/features/home/ui/InboxDetailPane.tsx | 54 +-
.../src/features/home/ui/InboxFilterMenu.tsx | 54 +-
.../src/features/home/ui/InboxListPane.tsx | 138 +-
.../features/home/ui/ProjectInboxDetail.tsx | 15 +-
.../home/ui/ProjectInboxDetailPane.tsx | 21 +-
.../features/home/ui/RecentNotesSection.tsx | 20 +-
.../home/ui/inboxReopenNavigation.test.mjs | 11 +
.../home/useHiddenDmInboxNavigation.ts | 5 +-
.../huddle/components/AddAgentDialog.tsx | 12 +-
.../huddle/components/AgentVoiceMenu.tsx | 26 +-
.../huddle/components/HuddleAttachment.tsx | 24 +-
.../features/huddle/components/HuddleBar.tsx | 71 +-
.../huddle/components/HuddleIndicator.tsx | 16 +-
.../components/HuddleProfileControl.tsx | 12 +-
.../huddle/components/HuddleRoomHeader.tsx | 52 +-
.../huddle/components/HuddleStartingView.tsx | 6 +-
.../components/HuddleTranscriptIntro.tsx | 10 +-
.../huddle/components/MicControls.tsx | 70 +-
.../huddle/components/ParticipantList.tsx | 46 +-
.../features/huddle/lib/huddleError.test.mjs | 12 +
.../src/features/huddle/lib/huddleError.ts | 11 +-
.../src/features/identity-archive/hooks.ts | 18 +-
.../ui/LocalArchiveSettingsCard.tsx | 134 +-
.../local-archive/ui/localArchiveKinds.ts | 70 +-
.../mesh-compute/servingUsage.test.mjs | 11 +
.../src/features/mesh-compute/servingUsage.ts | 39 +-
.../ui/MeshComputeSettingsCard.tsx | 133 +-
desktop/src/features/messages/hooks.ts | 4 +-
.../messages/lib/composerMessageLinkNode.ts | 28 +-
.../messages/lib/messageLinkLabel.test.mjs | 27 +-
.../features/messages/lib/messageLinkLabel.ts | 8 +-
.../src/features/messages/lib/parseDiff.ts | 38 +-
.../messages/lib/systemEventCopy.test.mjs | 9 +
.../features/messages/lib/systemEventCopy.ts | 34 +-
.../features/messages/lib/useLinkEditor.tsx | 22 +-
.../messages/lib/useRichTextEditor.ts | 14 +-
.../messages/lib/useVoiceNoteRecorder.ts | 14 +-
.../messages/ui/AudioMessageAttachment.tsx | 33 +-
.../messages/ui/ChannelIntroBlock.tsx | 6 +-
.../ui/ComposerAddressControls.test.mjs | 9 +
.../messages/ui/ComposerAddressControls.tsx | 34 +-
.../messages/ui/ComposerAttachments.tsx | 168 +-
.../messages/ui/ComposerEmojiPicker.tsx | 14 +-
.../messages/ui/ComposerImageEditor.tsx | 58 +-
.../messages/ui/ComposerReplyEditBanner.tsx | 12 +-
.../ui/ComposerUploadProgressOverlay.tsx | 4 +-
.../ui/DeleteMessageConfirmDialog.tsx | 10 +-
.../src/features/messages/ui/DiffMessage.tsx | 24 +-
.../messages/ui/DiffMessageExpanded.tsx | 18 +-
.../src/features/messages/ui/DiffViewer.tsx | 10 +-
.../features/messages/ui/DraftDetailPane.tsx | 39 +-
.../src/features/messages/ui/DraftsPanel.tsx | 86 +-
.../messages/ui/FormattingToolbar.tsx | 47 +-
.../messages/ui/MentionAutocomplete.test.mjs | 9 +
.../messages/ui/MentionAutocomplete.tsx | 54 +-
.../features/messages/ui/MessageActionBar.tsx | 56 +-
.../messages/ui/MessageAgentOwner.tsx | 10 +-
.../features/messages/ui/MessageComposer.tsx | 17 +-
.../messages/ui/MessageComposerToolbar.tsx | 32 +-
.../features/messages/ui/MessageReactions.tsx | 42 +-
.../src/features/messages/ui/MessageRow.tsx | 39 +-
.../messages/ui/MessageThreadPanel.tsx | 21 +-
.../ui/MessageThreadPanelSkeleton.tsx | 9 +-
.../ui/MessageThreadReplyState.test.mjs | 9 +
.../messages/ui/MessageThreadReplyState.tsx | 9 +-
.../messages/ui/MessageThreadSummaryRow.tsx | 6 +-
.../features/messages/ui/MessageTimeline.tsx | 41 +-
.../messages/ui/MessageTimelineErrorCard.tsx | 4 +-
.../messages/ui/NewMessageResultRow.tsx | 12 +-
.../features/messages/ui/NewMessageScreen.tsx | 37 +-
.../messages/ui/NonMemberMentionDialog.tsx | 28 +-
.../messages/ui/SelectionFormattingTray.tsx | 4 +-
.../messages/ui/SentFromThreadLine.tsx | 4 +-
.../messages/ui/SystemMessageAvatars.tsx | 9 +-
.../messages/ui/SystemMessageRow.test.mjs | 10 +
.../features/messages/ui/SystemMessageRow.tsx | 58 +-
.../features/messages/ui/UnreadDivider.tsx | 7 +-
.../messages/ui/VoiceNoteRecorder.tsx | 16 +-
.../messages/ui/WaveMessageAttachment.tsx | 6 +-
.../messages/ui/useAutoPinMentionedAgents.ts | 12 +-
.../messages/ui/useComposerLinkPreviews.tsx | 16 +-
.../messages/ui/useComposerVoiceNote.tsx | 12 +-
.../ui/useDetachedAgentStart.test.mjs | 10 +
.../messages/ui/useDetachedAgentStart.ts | 12 +-
.../ui/useMentionSendFlow.test-support.mjs | 24 +
.../messages/ui/useMentionSendFlow.ts | 34 +-
.../messages/ui/useNonMemberInvite.ts | 5 +-
.../messages/ui/useReactionHandler.ts | 5 +-
.../src/features/moderation/lib/timeout.ts | 12 +-
.../moderation/ui/ComposerTimeoutBanner.tsx | 6 +-
.../ui/MessageModerationMenuItems.tsx | 46 +-
.../moderation/ui/ReportMessageDialog.tsx | 50 +-
.../moderation/ui/TimeoutDurationSubmenu.tsx | 16 +-
desktop/src/features/notifications/hooks.ts | 89 +-
.../features/notifications/lib/feed.test.mjs | 11 +
.../lib/notificationFormat.test.mjs | 23 +
.../notifications/lib/notificationFormat.ts | 94 +-
.../features/notifications/lib/sound.test.mjs | 49 +-
.../src/features/notifications/lib/sound.ts | 76 +-
desktop/src/features/onboarding/hooks.ts | 10 +-
.../src/features/onboarding/ui/AvatarStep.tsx | 34 +-
.../src/features/onboarding/ui/BackupStep.tsx | 69 +-
.../features/onboarding/ui/BackupTestFlow.tsx | 62 +-
.../onboarding/ui/CommunityOnboardingFlow.tsx | 92 +-
.../onboarding/ui/ConnectionMethodSection.tsx | 89 +-
.../onboarding/ui/DefaultConfigStep.tsx | 47 +-
.../onboarding/ui/DownloadKeyStep.tsx | 22 +-
.../onboarding/ui/EncryptedBackupCreator.tsx | 74 +-
.../onboarding/ui/IdentityKeyHelpDialog.tsx | 25 +-
.../onboarding/ui/IdentityKeyIntroduction.tsx | 17 +-
.../onboarding/ui/IdentityRecoveryPairing.tsx | 71 +-
.../onboarding/ui/InviteRedeemForm.tsx | 42 +-
.../ui/JoinPolicyNotice.i18n.test.mjs | 166 +
.../onboarding/ui/JoinPolicyNotice.tsx | 16 +-
.../onboarding/ui/KeyringLockedScreen.tsx | 20 +-
.../onboarding/ui/MachineOnboardingFlow.tsx | 64 +-
.../onboarding/ui/MembershipDenied.tsx | 51 +-
.../onboarding/ui/NostrKeyImportForm.tsx | 70 +-
.../onboarding/ui/NsecMaskedDisplay.tsx | 14 +-
.../features/onboarding/ui/OnboardingFlow.tsx | 38 +-
.../onboarding/ui/OnboardingFooter.tsx | 6 +-
.../onboarding/ui/PendingInviteGate.tsx | 12 +-
.../features/onboarding/ui/ProfileStep.tsx | 45 +-
.../features/onboarding/ui/RecoveryScreen.tsx | 4 +-
.../onboarding/ui/RelaunchRequiredScreen.tsx | 7 +-
.../onboarding/ui/ResetFailedScreen.tsx | 7 +-
.../src/features/onboarding/ui/SetupStep.tsx | 207 +-
.../onboarding/ui/onboardingRuntimeStatus.ts | 79 +
desktop/src/features/presence/lib/presence.ts | 7 +-
.../profile/avatarPresentationStore.ts | 7 +-
.../ui/AnimatedAvatarBackdropPanel.tsx | 9 +-
.../ui/AnimatedAvatarCameraControls.tsx | 6 +-
.../profile/ui/AnimatedAvatarCapture.tsx | 22 +-
.../profile/ui/AnimatedAvatarControls.tsx | 19 +-
.../profile/ui/AnimatedAvatarReviewNav.tsx | 76 +-
.../profile/ui/ArchiveConfirmDialog.tsx | 35 +-
.../profile/ui/AvatarCustomColorPanel.tsx | 6 +-
.../src/features/profile/ui/AvatarUpload.tsx | 14 +-
.../profile/ui/NostrBindConsentDialog.tsx | 58 +-
.../src/features/profile/ui/ProfileAvatar.tsx | 4 +-
.../profile/ui/ProfileAvatarEditor.tsx | 28 +-
.../profile/ui/ProfileAvatarModeTabs.tsx | 28 +-
.../ui/ProfileInstancesArchived.test.mjs | 11 +
.../profile/ui/ProfileInstancesSection.tsx | 15 +-
.../features/profile/ui/ProfilePopover.tsx | 17 +-
.../profile/ui/SelectedRecipientChip.tsx | 12 +-
.../profile/ui/UserProfileAgentActions.tsx | 28 +-
.../ui/UserProfileAgentManagementRows.tsx | 50 +-
.../features/profile/ui/UserProfilePanel.tsx | 75 +-
.../ui/UserProfilePanelAgentDetails.tsx | 9 +-
.../profile/ui/UserProfilePanelFields.tsx | 59 +-
.../ui/UserProfilePanelFocusedViews.tsx | 24 +-
.../ui/UserProfilePanelHeaderContent.tsx | 13 +-
.../ui/UserProfilePanelPersonaSubmit.test.mjs | 10 +
.../ui/UserProfilePanelPersonaSubmit.ts | 44 +-
.../profile/ui/UserProfilePanelUtils.ts | 48 +-
.../profile/ui/UserProfilePrimaryActions.tsx | 27 +-
.../ui/UserProfileSnapshotExportDialog.tsx | 8 +-
.../profile/ui/useAgentLifecycleActions.ts | 26 +-
.../ui/useProfileInteractionActions.ts | 8 +-
.../src/features/projects/branchMutations.ts | 7 +-
.../projects/lib/projectBranches.test.mjs | 8 +
.../features/projects/lib/projectBranches.ts | 19 +-
.../projects/lib/projectGitError.test.mjs | 10 +
.../features/projects/lib/projectGitError.ts | 32 +-
.../lib/projectHomeWorkspaceSheet.test.mjs | 10 +
.../projects/lib/projectHomeWorkspaceSheet.ts | 16 +-
.../features/projects/lib/projectLabels.ts | 5 +-
.../lib/projectRepoAvailability.test.mjs | 10 +
.../projects/lib/projectRepoAvailability.ts | 84 +-
.../projects/lib/projectSelection.test.mjs | 10 +
.../features/projects/lib/projectSelection.ts | 29 +-
.../lib/projectsActivityDigest.test.mjs | 10 +
.../projects/lib/projectsActivityDigest.ts | 37 +-
.../features/projects/projectEnumeration.ts | 6 +-
.../projects/projectTaskCategories.ts | 17 +-
.../features/projects/pullRequestReviews.ts | 17 +-
.../src/features/projects/repoSyncHooks.ts | 4 +-
.../ui/AddProjectRepositoryDialog.tsx | 32 +-
.../ui/AgentContextPayloadPreview.tsx | 8 +-
.../ui/AttachProjectRepositoryDialog.tsx | 14 +-
.../projects/ui/CreateIssueDialog.tsx | 9 +-
.../projects/ui/CreateProjectFormContent.tsx | 28 +-
.../projects/ui/CreateProjectFormSettings.tsx | 54 +-
.../projects/ui/CreateProjectIssueDialog.tsx | 14 +-
.../ui/CreateProjectWorkItemDialog.tsx | 19 +-
.../projects/ui/CreatePullRequestDialog.tsx | 49 +-
.../projects/ui/DiscussionChannels.tsx | 52 +-
.../projects/ui/IssueAssigneesRow.tsx | 53 +-
.../projects/ui/MergePullRequestButton.tsx | 60 +-
.../projects/ui/ProjectAgentChatPanel.tsx | 25 +-
.../projects/ui/ProjectAgentContextStrip.tsx | 6 +-
.../ProjectAgentSubmittedContextPill.test.mjs | 8 +
.../ui/ProjectAgentSubmittedContextPill.tsx | 12 +-
.../projects/ui/ProjectAuthorIdentity.tsx | 7 +-
.../projects/ui/ProjectBranchDialogs.tsx | 42 +-
.../projects/ui/ProjectBrowserDialog.tsx | 22 +-
.../src/features/projects/ui/ProjectCards.tsx | 87 +-
.../projects/ui/ProjectChannelHome.tsx | 19 +-
.../projects/ui/ProjectChannelManagement.tsx | 18 +-
.../ui/ProjectChannelRequestDialog.test.mjs | 8 +
.../ui/ProjectChannelRequestDialog.tsx | 52 +-
.../projects/ui/ProjectCommitCopyButton.tsx | 4 +-
.../projects/ui/ProjectCommitDetailPanel.tsx | 35 +-
.../projects/ui/ProjectConversationPanel.tsx | 14 +-
.../projects/ui/ProjectCreationDialog.tsx | 8 +-
.../projects/ui/ProjectDetailChrome.tsx | 15 +-
.../projects/ui/ProjectDetailFeedPanels.tsx | 50 +-
.../projects/ui/ProjectDetailScreen.tsx | 53 +-
.../ui/ProjectDetailUnavailableState.tsx | 16 +-
.../projects/ui/ProjectEntityListRow.tsx | 6 +-
.../projects/ui/ProjectHomeCodebasePanel.tsx | 4 +-
.../ui/ProjectHomeCommitsPanel.test.mjs | 8 +
.../projects/ui/ProjectHomeCommitsPanel.tsx | 25 +-
.../projects/ui/ProjectHomeContextPanel.tsx | 24 +-
.../projects/ui/ProjectHomeWorkspaceSheet.tsx | 18 +-
.../ui/ProjectIssueCommentTimeline.tsx | 13 +-
.../projects/ui/ProjectIssuesPanel.tsx | 72 +-
.../projects/ui/ProjectOriginReference.tsx | 19 +-
.../ui/ProjectRepositoryUnavailableState.tsx | 6 +-
.../projects/ui/ProjectRightPanelControls.tsx | 26 +-
.../projects/ui/ProjectSelectableGroup.tsx | 8 +-
.../projects/ui/ProjectWorkspaceTabList.tsx | 20 +-
.../projects/ui/ProjectWorkspaceTabs.tsx | 34 +-
.../ui/ProjectsCategoryCreateDialogs.tsx | 21 +-
.../projects/ui/ProjectsChannelsList.tsx | 45 +-
.../projects/ui/ProjectsIssuesList.tsx | 26 +-
.../projects/ui/ProjectsListHeaderBar.tsx | 14 +-
.../ui/ProjectsOverviewChromeActions.tsx | 18 +-
.../ui/ProjectsOverviewContextSheet.tsx | 6 +-
.../projects/ui/ProjectsOverviewItems.tsx | 11 +-
.../projects/ui/ProjectsOverviewPanel.tsx | 8 +-
.../projects/ui/ProjectsPullRequestsList.tsx | 30 +-
.../projects/ui/ProjectsSectionSearch.tsx | 16 +-
.../ui/ProjectsSelectionCountMenu.tsx | 8 +-
.../features/projects/ui/ProjectsToolbar.tsx | 25 +-
.../src/features/projects/ui/ProjectsView.tsx | 10 +-
.../projects/ui/ProjectsWorkItemTable.tsx | 11 +-
.../ui/ProjectsWorkItemsLoadNotice.tsx | 43 +-
.../projects/ui/PullRequestMetaRail.tsx | 9 +-
.../projects/ui/PullRequestsPanelSurface.tsx | 16 +-
.../features/projects/ui/RepositoryCards.tsx | 8 +-
.../features/projects/ui/ShareLinkButton.tsx | 11 +-
.../ui/UnavailableProjectRepositories.tsx | 4 +-
.../projects/ui/projectDetailHelpers.ts | 33 +-
.../ui/projectsOverviewContext.test.mjs | 10 +
.../projects/ui/projectsOverviewContext.ts | 73 +-
.../projects/ui/projectsSectionMeta.ts | 14 +-
.../projects/ui/projectsViewWorkItems.ts | 10 +-
.../ui/useCreateProjectFormSettings.ts | 3 +-
.../projects/ui/useOpenProjectTerminal.ts | 21 +-
.../projects/ui/useProjectDetailCrumbs.ts | 11 +-
.../ui/useProjectRepositoryOpenActions.ts | 12 +-
.../ui/useRetainedProjectGitViews.test.mjs | 8 +
.../projects/useAddProjectRepository.ts | 3 +-
.../src/features/projects/useCreateProject.ts | 6 +-
.../projects/useProjectChannelRequests.ts | 14 +-
.../features/projects/useProjectRepoHost.ts | 5 +-
.../src/features/pulse/lib/useNoteActions.ts | 38 +-
.../pulse/ui/AgentActivityCard.test.mjs | 7 +
.../features/pulse/ui/AgentActivityCard.tsx | 9 +-
desktop/src/features/pulse/ui/NoteCard.tsx | 57 +-
desktop/src/features/pulse/ui/PulseTabBar.tsx | 16 +-
desktop/src/features/pulse/ui/PulseView.tsx | 28 +-
.../reminders/lib/reminderFilters.test.mjs | 12 +
.../features/reminders/lib/reminderFilters.ts | 21 +-
.../reminders/lib/timePresets.test.mjs | 12 +
.../src/features/reminders/lib/timePresets.ts | 38 +-
.../reminders/ui/RemindMeLaterDialog.tsx | 24 +-
.../features/reminders/ui/RemindersPanel.tsx | 119 +-
.../src/features/reminders/ui/SnoozeMenu.tsx | 14 +-
.../reminders/useReminderNotifications.ts | 11 +-
.../src/features/search/lib/searchMatch.ts | 4 +-
.../search/ui/SearchPromptPlaceholder.tsx | 36 +-
.../features/search/ui/SearchResultItem.tsx | 31 +-
.../search/ui/SearchScopeControls.tsx | 24 +-
.../src/features/search/ui/TopbarSearch.tsx | 81 +-
.../settings/EncryptedBackupProvider.tsx | 37 +-
.../features/settings/SidebarUpdateCard.tsx | 25 +-
.../src/features/settings/UpdateChecker.tsx | 48 +-
.../src/features/settings/UpdateIndicator.tsx | 19 +-
.../settings/ui/AgentDefaultsSettingsCard.tsx | 7 +-
.../settings/ui/AgentsSettingsPanel.tsx | 14 +-
.../ui/AppearanceSettingsControls.tsx | 233 +-
.../features/settings/ui/BackupTestFlow.tsx | 47 +-
.../settings/ui/CustomHarnessForm.tsx | 41 +-
.../settings/ui/EncryptedBackupCreator.tsx | 83 +-
.../settings/ui/ExperimentalFeaturesCard.tsx | 13 +-
...arnessCatalogDialog.acpForcedGate.test.mjs | 2 +
.../settings/ui/HarnessCatalogDialog.tsx | 28 +-
.../src/features/settings/ui/HarnessRow.tsx | 51 +-
.../settings/ui/HarnessesSettingsPanel.tsx | 34 +-
.../settings/ui/KeyboardShortcutsCard.tsx | 6 +-
.../settings/ui/LanguageSetting.test.mjs | 121 +
.../features/settings/ui/LanguageSetting.tsx | 62 +
.../settings/ui/NotificationSettingsCard.tsx | 56 +-
.../settings/ui/PreventSleepSettingsCard.tsx | 16 +-
.../settings/ui/PrivateKeyBackupRow.tsx | 38 +-
.../features/settings/ui/SettingsPanels.tsx | 112 +-
.../src/features/settings/ui/SettingsView.tsx | 80 +-
.../features/settings/ui/SignOutSection.tsx | 58 +-
.../src/features/settings/ui/SoundPicker.tsx | 8 +-
.../settings/ui/VoiceSettingsCard.tsx | 207 +-
.../settings/ui/harnessCatalogLogic.test.mjs | 8 +
.../settings/ui/harnessCatalogLogic.ts | 6 +-
.../settings/ui/harnessGalleryLogic.test.mjs | 7 +
.../settings/ui/harnessGalleryLogic.ts | 7 +-
.../src/features/sidebar/ui/AppSidebar.tsx | 12 +-
.../sidebar/ui/AppSidebarPinnedHeader.tsx | 24 +-
.../sidebar/ui/ChannelActivityPopover.tsx | 26 +-
.../sidebar/ui/ChannelContextMenu.tsx | 47 +-
.../sidebar/ui/ChannelSectionDialogs.tsx | 52 +-
.../src/features/sidebar/ui/CommunityRail.tsx | 25 +-
.../sidebar/ui/CreateChannelDialog.tsx | 10 +-
.../sidebar/ui/CreateChannelFormFields.tsx | 55 +-
.../sidebar/ui/CustomChannelSection.tsx | 52 +-
.../sidebar/ui/SidebarProfileCard.tsx | 13 +-
.../sidebar/ui/SidebarProjectsSection.tsx | 77 +-
.../sidebar/ui/SidebarRelayConnectionCard.tsx | 22 +-
.../features/sidebar/ui/SidebarSection.tsx | 7 +-
.../terminal/TerminalBootstrap.test.mjs | 10 +
.../terminal/TerminalSubstrate.test.mjs | 12 +
.../features/terminal/TerminalSubstrate.tsx | 39 +-
.../user-status/ui/SetStatusDialog.tsx | 60 +-
.../user-status/ui/UserNameIndicators.tsx | 12 +-
.../features/workflows/ui/ChannelCombobox.tsx | 27 +-
.../workflows/ui/CronExpressionInput.tsx | 20 +-
.../workflows/ui/WorkflowActionsMenu.tsx | 14 +-
.../workflows/ui/WorkflowApprovalCard.tsx | 17 +-
.../workflows/ui/WorkflowAuthorPicker.tsx | 21 +-
.../features/workflows/ui/WorkflowCard.tsx | 13 +-
.../workflows/ui/WorkflowDeleteDialog.tsx | 18 +-
.../workflows/ui/WorkflowDetailPanel.tsx | 66 +-
.../features/workflows/ui/WorkflowDialog.tsx | 118 +-
.../workflows/ui/WorkflowDurationField.tsx | 13 +-
.../workflows/ui/WorkflowEmojiField.tsx | 6 +-
.../workflows/ui/WorkflowFormBuilder.tsx | 83 +-
.../workflows/ui/WorkflowMessagePicker.tsx | 34 +-
.../ui/WorkflowMessageTextConditionEditor.tsx | 53 +-
.../ui/WorkflowRichTriggerDescription.tsx | 4 +-
.../workflows/ui/WorkflowRunTrace.tsx | 10 +-
.../workflows/ui/WorkflowScheduleFields.tsx | 99 +-
.../workflows/ui/WorkflowStepCard.tsx | 123 +-
.../workflows/ui/WorkflowTemplateTextarea.tsx | 10 +-
.../ui/WorkflowTriggerConditions.tsx | 44 +-
.../ui/WorkflowUnavailableDialog.tsx | 16 +-
.../ui/WorkflowWebhookHeadersEditor.tsx | 16 +-
.../ui/WorkflowWebhookSecretDialog.tsx | 32 +-
.../features/workflows/ui/WorkflowsView.tsx | 32 +-
.../workflows/ui/cronExpression.test.mjs | 10 +
.../features/workflows/ui/cronExpression.ts | 65 +-
.../ui/workflowActivationWarning.test.mjs | 10 +
.../workflows/ui/workflowActivationWarning.ts | 28 +-
.../ui/workflowConditionExpression.test.mjs | 10 +
.../ui/workflowConditionExpression.ts | 62 +-
.../workflows/ui/workflowDefinition.test.mjs | 9 +
.../workflows/ui/workflowDefinition.ts | 119 +-
.../workflows/ui/workflowDuration.test.mjs | 10 +
.../features/workflows/ui/workflowDuration.ts | 26 +-
.../workflows/ui/workflowFormTypes.test.mjs | 10 +
.../workflows/ui/workflowFormTypes.ts | 194 +-
.../ui/workflowMessageTextCondition.ts | 38 +-
.../features/workflows/ui/workflowSchedule.ts | 29 +-
.../ui/workflowStepDescription.test.mjs | 9 +
.../workflows/ui/workflowStepDescription.ts | 26 +-
.../workflows/ui/workflowTemplateVariables.ts | 224 +-
.../ui/workflowTriggerDescription.ts | 4 +-
desktop/src/i18n/catalogValidation.mjs | 310 +
desktop/src/i18n/i18n.test.mjs | 378 ++
desktop/src/i18n/index.ts | 125 +
desktop/src/i18n/language.test.mjs | 179 +
desktop/src/i18n/language.ts | 225 +
desktop/src/i18n/nativeMenu.test.mjs | 79 +
desktop/src/locales/GLOSSARY.zh-Hans.md | 160 +
desktop/src/locales/STRINGS-MANIFEST.md | 4132 +++++++++++++
desktop/src/locales/en.json | 5086 +++++++++++++++++
desktop/src/locales/zh-Hans.json | 5086 +++++++++++++++++
desktop/src/main.tsx | 4 +
.../api/tauriTeams.snapshotImport.test.mjs | 10 +
desktop/src/shared/api/useReconnectRelay.ts | 3 +-
.../src/shared/features/useFeatureEnabled.ts | 3 +-
.../src/shared/layout/AuxiliaryPanelShell.tsx | 6 +-
desktop/src/shared/lib/clipboard.ts | 7 +-
.../src/shared/lib/datetime.locale.test.mjs | 111 +
desktop/src/shared/lib/datetime.test.mjs | 14 +
desktop/src/shared/lib/datetime.ts | 69 +-
desktop/src/shared/lib/formatters.test.mjs | 96 +
desktop/src/shared/lib/formatters.ts | 211 +
.../lib/formatters.uninitialized.test.mjs | 43 +
desktop/src/shared/lib/keyboard-shortcuts.ts | 259 +-
desktop/src/shared/ui/HoverCopyIndicator.tsx | 12 +-
desktop/src/shared/ui/PubKey.test.mjs | 12 +
desktop/src/shared/ui/PubKey.tsx | 11 +-
desktop/src/shared/ui/SimpleImageLightbox.tsx | 7 +-
desktop/src/shared/ui/UnreadPill.tsx | 4 -
desktop/src/shared/ui/UserAvatar.tsx | 4 +-
.../shared/ui/VideoReviewTimecodeButton.tsx | 4 +-
desktop/src/shared/ui/ViewLoadingFallback.tsx | 4 +-
desktop/src/shared/ui/carousel.tsx | 7 +-
.../ui/compact-link-preview-attachment.tsx | 30 +-
.../ui/config-nudge-attachment.test.mjs | 12 +
.../src/shared/ui/config-nudge-attachment.tsx | 53 +-
desktop/src/shared/ui/dialog.tsx | 115 +-
.../src/shared/ui/link-preview-controls.tsx | 34 +-
desktop/src/shared/ui/link-preview-list.tsx | 16 +-
desktop/src/shared/ui/markdown.test.mjs | 11 +
.../shared/ui/markdown/AgentSnapshotCard.tsx | 29 +-
.../src/shared/ui/markdown/BuzzLinkChip.tsx | 8 +-
.../ui/markdown/ChannelDeepLink.test.mjs | 11 +
.../shared/ui/markdown/ChannelDeepLink.tsx | 59 +-
desktop/src/shared/ui/markdown/CodeBlock.tsx | 18 +-
.../shared/ui/markdown/ExternalLinkAnchor.tsx | 10 +-
desktop/src/shared/ui/markdown/FileCard.tsx | 7 +-
.../shared/ui/markdown/ImageGalleryStatus.tsx | 8 +-
.../ui/markdown/ImageLightboxZoomControls.tsx | 8 +-
.../shared/ui/markdown/InlineEmojiPopover.tsx | 4 +-
.../ui/markdown/LinkPreviewImageLightbox.tsx | 4 +-
.../src/shared/ui/markdown/MarkdownInput.tsx | 8 +-
.../ui/markdown/MarkdownVideoPlayer.tsx | 9 +-
.../shared/ui/markdown/MessageLinkPill.tsx | 53 +-
.../src/shared/ui/markdown/SpoilerInline.tsx | 6 +-
.../src/shared/ui/markdown/entityLinks.tsx | 32 +-
.../src/shared/ui/markdown/imageActions.ts | 15 +-
.../ui/rich-link-preview-attachment.tsx | 22 +-
desktop/src/shared/ui/sheet.tsx | 36 +-
desktop/src/shared/ui/sidebar.tsx | 16 +-
desktop/src/shared/ui/step-progress.tsx | 7 +-
desktop/src/shared/ui/useVideoContextMenu.tsx | 19 +-
pnpm-lock.yaml | 55 +
628 files changed, 33655 insertions(+), 5983 deletions(-)
create mode 100644 LOCALIZATION.zh-Hans.md
create mode 100644 desktop/scripts/check-hardcoded-strings.mjs
create mode 100644 desktop/scripts/check-hardcoded-strings.test.mjs
create mode 100644 desktop/scripts/hardcoded-strings-baseline.json
create mode 100644 desktop/src/features/onboarding/ui/JoinPolicyNotice.i18n.test.mjs
create mode 100644 desktop/src/features/onboarding/ui/onboardingRuntimeStatus.ts
create mode 100644 desktop/src/features/settings/ui/LanguageSetting.test.mjs
create mode 100644 desktop/src/features/settings/ui/LanguageSetting.tsx
create mode 100644 desktop/src/i18n/catalogValidation.mjs
create mode 100644 desktop/src/i18n/i18n.test.mjs
create mode 100644 desktop/src/i18n/index.ts
create mode 100644 desktop/src/i18n/language.test.mjs
create mode 100644 desktop/src/i18n/language.ts
create mode 100644 desktop/src/i18n/nativeMenu.test.mjs
create mode 100644 desktop/src/locales/GLOSSARY.zh-Hans.md
create mode 100644 desktop/src/locales/STRINGS-MANIFEST.md
create mode 100644 desktop/src/locales/en.json
create mode 100644 desktop/src/locales/zh-Hans.json
create mode 100644 desktop/src/shared/lib/datetime.locale.test.mjs
create mode 100644 desktop/src/shared/lib/formatters.test.mjs
create mode 100644 desktop/src/shared/lib/formatters.ts
create mode 100644 desktop/src/shared/lib/formatters.uninitialized.test.mjs
diff --git a/LOCALIZATION.zh-Hans.md b/LOCALIZATION.zh-Hans.md
new file mode 100644
index 00000000000..99e2fba3398
--- /dev/null
+++ b/LOCALIZATION.zh-Hans.md
@@ -0,0 +1,12 @@
+# Buzz 简体中文本地化(非官方)
+
+本分支是 [Buzz](https://github.com/block/buzz) 桌面端的非官方简体中文本地化项目。
+
+- 上游项目: Send the message now {t("messages.composer.send")} Buzz Nostr Send the message now Hello stranger Hello stranger
- Missing {slugs.length === 1 ? "link" : "links"}:{" "}
+ {t("agent-memory.entry.missing-links", { count: slugs.length })}
{slugs.map((slug, index) => (
- {MEMORY_DANGLING_REF_TOOLTIP} + {t("agent-memory.entry.dangling-ref-tooltip")}
- Only channels accessible to the current desktop user are shown - here. + {t("agents.add-agent-to-channel.channels-hint")}