Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Resources/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
<string>3</string>
<key>LSMinimumSystemVersion</key>
<string>13.0</string>
<key>LitheGitHubOAuthClientID</key>
<string>Ov23li60nlOOHwDY3MO6</string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSPrincipalClass</key>
Expand Down
177 changes: 177 additions & 0 deletions Resources/zh-Hans.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,7 @@
"Sensitive files are not sent to an AI provider." = "敏感文件不会发送给 AI 服务商。";
"The AI provider returned an unexpected response." = "AI 服务商返回了意外响应。";
"The AI provider returned an empty commit message." = "AI 服务商返回了空的提交信息。";
"The AI provider returned an HTTP error." = "AI 服务商返回了 HTTP 错误。";
"Commit" = "提交";
"Commit and Push…" = "提交并推送…";
"Commit and Push" = "提交并推送";
Expand Down Expand Up @@ -343,6 +344,182 @@
"Commit details" = "提交详情";
"Run" = "运行";
"Running" = "运行中";

/* GitHub pull requests. */
"Pull Requests" = "拉取请求";
"Refresh pull requests" = "刷新拉取请求";
"Restoring GitHub connection" = "正在恢复 GitHub 连接";
"Validating the credential stored in Keychain…" = "正在验证钥匙串中保存的凭据…";
"Sign in to GitHub" = "登录 GitHub";
"Sign in to view and manage pull requests." = "登录后即可查看和管理拉取请求。";
"Unable to sign in. Please try again." = "登录失败,请重试。";
"Authorize in your browser" = "在浏览器中授权";
"The verification page is open and the code is already on your clipboard." = "验证页面已打开,一次性代码也已复制到剪贴板。";
"ONE-TIME CODE" = "一次性代码";
"Copy code" = "复制代码";
"Waiting for GitHub…" = "正在等待 GitHub 授权…";
"Open again" = "重新打开";
"Open GitHub" = "打开 GitHub";
"Enter the one-time code" = "输入一次性代码";
"Return to Lithe" = "返回 Lithe";
"No GitHub origin" = "未找到 GitHub 远程仓库";
"Connected as @%@" = "已连接为 @%@";
"Open GitHub profile" = "打开 GitHub 个人主页";
"Disconnect" = "断开连接";
"State" = "状态";
"Closed" = "已关闭";
"Create pull request" = "创建拉取请求";
"Filter by title, author, or label" = "按标题、作者或标签筛选";
"Loading pull requests" = "正在加载拉取请求";
"Pull requests unavailable" = "无法加载拉取请求";
"Try Again" = "重试";
"No pull requests" = "暂无拉取请求";
"No matches" = "没有匹配结果";
"No pull requests match the selected state." = "当前状态下没有拉取请求。";
"Try another title, author, number, or label." = "请尝试其他标题、作者、编号或标签。";
"Select a pull request" = "选择一个拉取请求";
"Choose a pull request to review its context, files, and conversation." = "选择一个拉取请求以查看上下文、文件和讨论。";
"Close pull request?" = "关闭拉取请求?";
"Reopen pull request?" = "重新打开拉取请求?";
"Close Pull Request" = "关闭拉取请求";
"Reopen Pull Request" = "重新打开拉取请求";
"This does not delete the branch or commits. The pull request can be reopened later." = "这不会删除分支或提交,稍后仍可重新打开该拉取请求。";
"The pull request will return to the open list and can receive new reviews." = "该拉取请求将回到打开列表,并可继续接收审查。";
"Merge pull request?" = "合并拉取请求?";
"Create a merge commit" = "创建合并提交";
"Squash and merge" = "压缩并合并";
"Rebase and merge" = "变基并合并";
"Preserves every commit and adds a merge commit to the base branch." = "保留全部提交,并在目标分支中添加一个合并提交。";
"Combines the pull request into one commit on the base branch." = "将拉取请求压缩为目标分支上的一个提交。";
"Replays every commit onto the base branch without a merge commit." = "将所有提交重放到目标分支,不创建合并提交。";
" This updates %@ on GitHub and cannot be undone from Lithe." = " 这会更新 GitHub 上的 %@,且无法在 Lithe 中撤销。";
"Edit title and description" = "编辑标题和描述";
"Close pull request" = "关闭拉取请求";
"Reopen pull request" = "重新打开拉取请求";
"Conversation" = "讨论";
"Conflicts" = "存在冲突";
"Description" = "描述";
"No description provided." = "未提供描述。";
"Labels and assignees" = "标签和负责人";
"Saving replaces the current GitHub metadata." = "保存后将替换当前 GitHub 元数据。";
"Labels" = "标签";
"Assignees" = "负责人";
"Save Metadata" = "保存元数据";
"No changed files" = "没有变更文件";
"GitHub did not return any file changes for this pull request." = "GitHub 未返回此拉取请求的文件变更。";
"No conversation yet" = "尚无讨论";
"Start the discussion or submit the first review." = "发起讨论或提交第一次审查。";
"Leave a review" = "提交审查";
"Review action" = "审查操作";
"Comment" = "评论";
"Approve" = "批准";
"Request changes" = "请求修改";
"Optional approval summary" = "可选的批准说明";
"Write a clear, actionable comment…" = "写下清晰、可执行的评论…";
"Markdown is supported on GitHub" = "支持 GitHub Markdown";
"Approve pull request" = "批准拉取请求";
"Adds to the pull request conversation without an approval decision." = "在拉取请求中发表评论,不作出批准决定。";
"Signals that the changes are ready to merge. A summary is optional." = "表示这些更改已可合并,可选择填写说明。";
"Explain what must change before this pull request can be approved." = "说明在批准此拉取请求之前必须修改的内容。";
"Status" = "状态";
"Additions" = "新增";
"Deletions" = "删除";
"Comments" = "评论";
"Merged" = "已合并";
"Draft" = "草稿";
"Removed" = "已删除";
"Renamed" = "已重命名";
"Copied" = "已复制";
"Changed" = "已更改";
"Unchanged" = "未更改";
"Dismiss" = "关闭提示";
"GitHub user %@" = "GitHub 用户 %@";
"Edit pull request" = "编辑拉取请求";
"Save Changes" = "保存更改";
"Current GitHub repository" = "当前 GitHub 仓库";
"Comparing changes" = "比较更改";
"Choose a base and compare branch, then describe the pull request." = "选择目标分支和比较分支,然后填写拉取请求说明。";
"Base" = "目标";
"Compare" = "比较";
"Select branch" = "选择分支";
"Search branches" = "搜索分支";
"Loading branches" = "正在加载分支";
"Branches unavailable" = "无法加载分支";
"No branches found" = "没有匹配的分支";
"Generate with AI" = "AI 生成";
"Generating…" = "正在生成…";
"Generate a title and description from the selected branch changes" = "根据所选分支的更改生成标题和描述";
"Apply AI-generated content?" = "要应用 AI 生成的内容吗?";
"Replace existing content" = "替换现有内容";
"Keep existing content" = "保留现有内容";
"The generated title or description would replace text you already entered." = "生成的标题或描述可能会替换你已经输入的内容。";
"Pull request description generation" = "拉取请求描述生成";
"Description format" = "描述格式";
"Standard" = "标准";
"Concise" = "简洁";
"Detailed" = "详细";
"Custom template" = "自定义模板";
"Markdown template" = "Markdown 模板";
"Restore Default Template" = "恢复默认模板";
"Supported placeholders: {summary}, {changes}, {testing}, {risks}." = "支持的占位符:{summary}、{changes}、{testing}、{risks}。";
"Pull request generation uses the selected provider, language, reasoning effort, and diff limit above." = "拉取请求生成会使用上方选择的服务商、语言、推理强度和差异字符限制。";
"The selected branch diff is sent to the active AI provider when you generate." = "生成时,所选分支的差异内容会发送给当前 AI 服务商。";
"The selected branches have no textual changes to summarize." = "所选分支之间没有可供总结的文本更改。";
"The AI provider returned an unexpected pull request description." = "AI 服务返回了无法识别的拉取请求描述。";
"The AI provider returned an empty pull request description." = "AI 服务返回了空的拉取请求描述。";
"Changes from the compare branch will be proposed for the base branch." = "比较分支中的更改将提交到目标分支。";
"Choose two branches" = "请选择两个分支";
"Branches must be different" = "两个分支不能相同";
"Ready to create" = "可以创建拉取请求";
"Publish this worktree" = "发布当前工作树";
"Push this branch to GitHub" = "将当前分支推送到 GitHub";
"This worktree has a detached HEAD. Publish it as a branch before creating a pull request." = "当前工作树处于分离 HEAD 状态。请先将它发布为分支,再创建拉取请求。";
"Push the latest commits before comparing or creating a pull request." = "比较更改或创建拉取请求前,请先推送最新提交。";
"Branch name" = "分支名称";
"Publishing…" = "正在发布…";
"Publish Branch" = "发布分支";
"Uncommitted changes stay in this worktree and are not included in the pull request." = "未提交的更改会保留在当前工作树中,不会包含在拉取请求里。";
"Publish branch first" = "请先发布分支";
"Enter a branch name before publishing." = "请输入分支名称后再发布。";
"The branch could not be published" = "无法发布该分支";
"Branch published to GitHub" = "分支已发布到 GitHub";
"Create Pull Request" = "创建拉取请求";
"Create Draft" = "创建草稿";
"Title" = "标题";
"What does this pull request change?" = "这个拉取请求更改了什么?";
"Head branch" = "来源分支";
"Base branch" = "目标分支";
"Explain the intent, testing, and anything reviewers should know…" = "说明更改目的、测试情况,以及审查者需要了解的内容…";
"Create as draft" = "创建为草稿";
"Required fields are marked with *" = "带 * 的字段为必填项";
"Creating pull request…" = "正在创建拉取请求…";
"Pull request created" = "拉取请求已创建";
"Posting comment…" = "正在发表评论…";
"Comment posted" = "评论已发表";
"Updating pull request…" = "正在更新拉取请求…";
"Pull request updated" = "拉取请求已更新";
"Submitting review…" = "正在提交审查…";
"Review approved" = "审查已批准";
"Changes requested" = "已请求修改";
"Review comment submitted" = "审查评论已提交";
"Merging pull request…" = "正在合并拉取请求…";
"Pull request merged" = "拉取请求已合并";
"Reopening pull request…" = "正在重新打开拉取请求…";
"Closing pull request…" = "正在关闭拉取请求…";
"Pull request reopened" = "拉取请求已重新打开";
"Pull request closed" = "拉取请求已关闭";
"Updating labels and assignees…" = "正在更新标签和负责人…";
"Metadata updated" = "元数据已更新";
"Checking out pull request…" = "正在检出拉取请求…";
"Pull request checked out as a local branch" = "拉取请求已检出为本地分支";
"GitHub sign-in is unavailable in this build." = "此版本暂时无法登录 GitHub。";
"The GitHub authorization code expired. Start again." = "GitHub 授权码已过期,请重新开始。";
"GitHub authorization was cancelled." = "GitHub 授权已取消。";
"GitHub authorization failed:" = "GitHub 授权失败:";
"Unknown error" = "未知错误";
"GitHub returned an unexpected response" = "GitHub 返回了意外响应";
"Open a Git project before using pull requests" = "请先打开 Git 项目,再使用拉取请求功能";
"Connect a GitHub account before continuing" = "请先连接 GitHub 账号";
"Python Support" = "Python 支持";
"Node.js Support" = "Node.js 支持";
"Rust Support" = "Rust 支持";
Expand Down
3 changes: 3 additions & 0 deletions Sources/Lithe/Application/Composition/AppServices.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ final class AppServices {
let binaryFileViewerRegistry: BinaryFileViewerRegistry
let projectRuntimeService: ProjectRuntimeService
let gitWatchContextProvider: any GitWatchContextProviding
let githubService: GitHubService
let secureStore: any SecureStore
let databaseSecureStore: any SecureStore
let credentialResolver: any AIProviderCredentialResolver
Expand Down Expand Up @@ -58,6 +59,7 @@ final class AppServices {
binaryFileViewerRegistry: BinaryFileViewerRegistry,
projectRuntimeService: ProjectRuntimeService,
gitWatchContextProvider: any GitWatchContextProviding,
githubService: GitHubService,
secureStore: any SecureStore,
databaseSecureStore: any SecureStore,
credentialResolver: any AIProviderCredentialResolver,
Expand Down Expand Up @@ -90,6 +92,7 @@ final class AppServices {
self.binaryFileViewerRegistry = binaryFileViewerRegistry
self.projectRuntimeService = projectRuntimeService
self.gitWatchContextProvider = gitWatchContextProvider
self.githubService = githubService
self.secureStore = secureStore
self.databaseSecureStore = databaseSecureStore
self.credentialResolver = credentialResolver
Expand Down
Loading
Loading