Skip to content

Commit

Permalink
【压缩历史翻译 20241008】
Browse files Browse the repository at this point in the history
【压缩历史翻译 20240508】

重构于新版本后,修复 lint 问题

撤回汉化,这可能是...

这可能是git输出判定字串,考虑在调用处再替换文本来汉化

拉取请求文件改变

上游

冲突

暂存区

SSH

教程

安装包图像

登录 - 优化措辞

储存库菜单

行展开按钮 - 修改措辞

创建储存库 - 漏译

拉取请求评论 - 漏译

初始化GitLFS

Git LFS 过滤器更新

登录令牌失效

安装Git提示

推送分支提交

冒号标准化(只是个注释)

措辞优化

空格标准化

短的英文/数字段不加空格

问号标准化

无改动窗口

差异对比窗口

文件改动栏 - 修复括号

储存库页标题栏

差异对比窗口的右键菜单

改动列表 - 修补漏译(详情...)

这里还是决定汉化了默认的标题摘要。
本来是考虑到应该使用英文来提交给开源储存库,不过如果是认真提交的话肯定也会自己写摘要,随便提交一下的话也根本不在意摘要是中文还是英文了,所以最终还是改为默认中文了。

头像功能

找不到编辑器/终端对话框

差异对比设置

设置 - 补充漏译

命令行工具已安装对话框

复刻目的对话框

设置别名对话框

报错文本

大按钮

撤回提交对话框、优化措辞

放弃暂存区对话框

覆盖暂存区对话框

登录页面

无法打开终端对话框

重置到提交对话框

发布储存库对话框

教程储存库

打开拉取请求对话框

拉取请求

重构对话框

合并对话框

无法打开编辑器对话框

删除储存库对话框

创建标签对话框

克隆在线储存库对话框

重新运行检查

PR列表项

标准化翻译(储存库)

标准化翻译(HEAD 指针)

HEAD 已是特定称呼。
例:游离的 HEAD 指针

(这里是否需要不加空格呢?)

文件改动状态 - 优化措辞

高级设置 - 优化措辞...

兼容 Fetch "获取"的旧译法和"更新"这种更易听懂的叫法

设置界面

摘要字数提示 - 修改措辞

Git邮箱未找到提示 - 修复句号重复

分支列表 - 的名字(暂时给提交历史用的)

提交历史

复制按钮的提示

拖动提示

工具栏按钮

进度显示、强制推送框、操作名称

确定放弃所有改动

确定检出提示框

Fetch译为获取更新,这样可以...

这样既可以兼容旧的“获取”叫法,又能看懂在获取什么。

macOS在应用程序文件夹外运行提示

归属错误页

文件改动栏

协作者输入框

文件状态函数

一些文档链接改到中文版

菜单栏等 - “获取”改为“更新”,因为...

因为在 undo-commit.tsx 中也把 Fetch 叫储存库更新,而获取这个词过于宽泛不易理解。

拼写检查

菜单栏 - 优化翻译

菜单栏 - 删除Alt访问键,因为已经有很多快捷键了,碍事

菜单栏 - 优化翻译

右键菜单

无法放弃改动页

一大堆“不再显示”按钮

本地修改被覆盖页

主界面、服务器不可信页

横幅、菜单栏 - 微小的翻译调整

报错页

更新日志页

横幅页(组件) - 优化更新提示语

关于页 - 优化排版

关于页 - 优化措辞

菜单栏

报错重启弹窗

横幅页(组件)- 修补翻译

横幅页(组件)我也想要礼物卡呀

这里东西超级多

关于页 - 优化措辞

开源许可页 - 优化翻译

窗口页(组件)-□x悬停提示

关于页 - 再次优化排版

奇奇怪怪

添加储存库页 - 漏了个按钮

自动完成页(组件)

添加储存库页

对话框默认按钮

开源许可页

关于页 - 优化排版

中文时间日期 - 不加空格了

和系统里的显示方式不搭

欢迎页

中文时间日期

关于页

3.0的拉取请求更新内容公告

摘选功能介绍的图

软件描述

git进度消息汉化...

修复了原本粗糙且错误的汉化操作
这个提交修订了好久的 QwQ
有兴趣的话看看CI()

修改打错字“摘选”->“摘取”

更新时退出软件的提示

“修订”操作名称

暂存区提示文本优化

更新翻译术语:revert=逆转提交

报错提示

冲突时采用哪个版本的选项文本

操作进度框

如何使用复刻 修改措辞

切换分支时改动未提交

克隆在线储存库

储存库和分支栏

修改措辞

合并/压缩合并/重构 按钮

我,去意已决 T^T

强制推送的描述

还原(Revert) -> 逆转...

不过,Revert 的提交消息是无法改动的(如果要改需要 amend 重写消息,这就没必要了)

命令行工具github(已重排)...

windows自动切换utf8编码,防止中文乱码。之前在main.ts中实现不正确,现在重排回来,在github.bat中实现。

加个空格好看一点

文件没有差异时的差异面板

克隆页面语言修改

丢回收站的语言修改

储存库设置

修复空格

一些分支和差异编辑器

统一用词(改动、审核)

未选择储存库

一些错误提示

发布储存库

统一用词,违反(规则)

统一引号样式

考虑到windows渲染上下引号的方式,我们全部使用空格加英文半角引号

优化复刻行为的用词

分支和标签的创建/删除

更新 拉取请求列表

分支的CI检查

调整排版

分支操作

提交冲突文件

中文链接

措辞

无本地改动

正在克隆

Git消息

换行符改变 优化措辞

子储存库

Git消息

重试克隆

将 "储存库" 改为 "仓库"

设置

推送时远程端有更新的提示

找不到仓库、仓库不安全

自定义编辑器和终端

打开终端

修复 lint

关于

开发者工具

错误测试 - 修复空格

修复空格

感谢小卡片

汉化右键菜单

优化换行符转换提示的措辞

汉化右键菜单 - 修复

主界面建议 - 优化翻译

重命名分支

修复空格

默认分支名 - 优化翻译

修复空格

无法打开

删除储存库

通知测试

翻译优化

授权更新工作流文件

需要重新授权

缩进宽度 -> 制表符宽度

修复空格

更新弹窗的关闭按钮

将更新地址指向汉化版

更新 README.md

更新 README.md

更新文档

更新文档

把beta版链接改到汉化版

新的辅助功能横幅

优化编辑器提示

构建显示渠道,不然我会忘

更新汉化指南

登录流程

未知协作者

教程

一些报错等

初始主页!我居然忘了这个

软件条款

绕过仓库规则

企业版账号登录文本优化

新用户登录

查找用户(读屏文本)

旧版登录

验证

创建分叉对话框

差异搜索

图像差异

文件末尾没有空行提示

Co-Authored-By: 陈生杂物房 <[email protected]>
  • Loading branch information
zetaloop and TC999 committed Oct 8, 2024
1 parent f978255 commit 134f002
Show file tree
Hide file tree
Showing 260 changed files with 2,323 additions and 2,608 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ jobs:
- name: Ensure a clean working directory
run: git diff --name-status --exit-code
build:
name: ${{ matrix.friendlyName }} ${{ matrix.arch }}
name:
${{ matrix.friendlyName }} ${{ matrix.arch }} ${{ inputs.environment }}
runs-on: ${{ matrix.os }}
permissions:
contents: read
Expand Down
32 changes: 16 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
> [!WARNING]
> ### 汉化接近完工,可前往 [发布版](https://github.com/zetaloop/Desktop/releases) 下载尝鲜,不定时更新
> ### 注意,目前汉化将会被软件自动更新覆盖,以后会有专属更新服务器
> <i>何时正式发布?<br>1. 有足够的测试表明汉化无缺漏。<br>2. 等我弄完服务器。</i>
> [!TIP]
> This is the community Chinese localized version of GitHub Desktop, please visit [desktop/desktop](https://github.com/desktop/desktop).<br>
> 这是 GitHub Desktop 的社区汉化版,原版请访问 [desktop/desktop](https://github.com/desktop/desktop)
# GitHub Desktop 中文版

[GitHub Desktop](https://desktop.github.com/) 是一个开源的 GitHub 客户端,基于 [Electron](https://www.electronjs.org/) 技术,使用 [React](https://reactjs.org/) 框架,以 [TypeScript](https://www.typescriptlang.org) 编写。
Expand All @@ -20,32 +20,32 @@

## 安装

下载对应系统的官方安装包
[**前往 GitHub 发行版**](https://github.com/zetaloop/desktop/releases/latest) 下载对应系统的中文版安装包

- [macOS](https://central.github.com/deployments/desktop/desktop/latest/darwin)
- [macOS (Apple Silicon)](https://central.github.com/deployments/desktop/desktop/latest/darwin-arm64)
- [Windows](https://central.github.com/deployments/desktop/desktop/latest/win32)
- [Windows 为所有用户安装](https://central.github.com/deployments/desktop/desktop/latest/win32?format=msi)
- macOS --> `GitHubDesktop-macOS-x64.zip`
- macOS (Apple Silicon) --> `GitHubDesktop-macOS-arm64.zip`
- Windows --> `GitHubDesktop-Windows-x64.exe`
- Windows 为所有用户安装 --> `GitHubDesktop-Windows-x64.msi`

暂未支持 Linux 系统,但是有第三方维护的分支可供使用,见 [社区发布版](https://github.com/zetaloop/Desktop#社区发布版) 一节。

### Beta 测试版

想要更早体验到新功能和问题修复吗?安装 Beta 测试版即可提前体验开发中的早期版本
想要更早体验到新功能和问题修复吗?[安装 Beta 测试版](https://github.com/zetaloop/desktop/releases) 即可提前体验开发中的早期版本

- [macOS](https://central.github.com/deployments/desktop/desktop/latest/darwin?env=beta)
- [macOS (Apple Silicon)](https://central.github.com/deployments/desktop/desktop/latest/darwin-arm64?env=beta)
- [Windows](https://central.github.com/deployments/desktop/desktop/latest/win32?env=beta)
- [Windows (ARM64)](https://central.github.com/deployments/desktop/desktop/latest/win32-arm64?env=beta)
- macOS --> `GitHubDesktop-macOS-x64.zip`
- macOS (Apple Silicon) --> `GitHubDesktop-macOS-arm64.zip`
- Windows --> `GitHubDesktop-Windows-x64.exe`
- Windows 为所有用户安装 --> `GitHubDesktop-Windows-x64.msi`

查看 [测试版更新日志](https://desktop.github.com/release-notes/?env=beta)

### 旧的版本
可在 https://desktop.githubusercontent.com 下载旧版。旧版将会在安装后尝试自动更新到最新版本
可在 [GitHub 发行版](https://github.com/zetaloop/desktop/releases) 下载中文版旧版。旧版本将会在安装后尝试自动更新到最新版本

### 社区发布版

一些社区维护的包管理器可用于安装 GitHub Desktop:
可以使用一些社区维护的包管理器来安装 GitHub Desktop **英文原版**
- Windows 用户可以用 [winget](https://docs.microsoft.com/en-us/windows/package-manager/winget/) `c:\> winget install github-desktop` 或者 [Chocolatey](https://chocolatey.org/) `c:\> choco install github-desktop`
- macOS 用户可以用 [Homebrew](https://brew.sh/) `$ brew install --cask github`

Expand Down
2 changes: 1 addition & 1 deletion app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"type": "git",
"url": "https://github.com/desktop/desktop.git"
},
"description": "Simple collaboration from your desktop",
"description": "在桌面上轻松协作",
"author": {
"name": "GitHub, Inc.",
"email": "[email protected]",
Expand Down
12 changes: 6 additions & 6 deletions app/src/cli/commands/clone.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,26 @@ interface ICloneArgs extends mriArgv {
}

export const command: ICommandModule = {
command: 'clone <url|slug>',
description: 'Clone a repository',
command: 'clone <网址|标识符>',
description: '克隆一个仓库',
args: [
{
name: 'url|slug',
name: '网址|标识符',
required: true,
description: 'The URL or the GitHub owner/name alias to clone',
description: '仓库的 URL 地址,或者 GitHub "用户/仓库名" 格式的标识符',
type: 'string',
},
],
options: {
branch: {
type: 'string',
aliases: ['b'],
description: 'The branch to checkout after cloning',
description: '克隆完成后要检出的分支',
},
},
handler({ _: [cloneUrl], branch }: ICloneArgs) {
if (!cloneUrl) {
throw new CommandError('Clone URL must be specified')
throw new CommandError('必须指定克隆地址')
}
try {
const _ = new URL(cloneUrl)
Expand Down
36 changes: 24 additions & 12 deletions app/src/cli/commands/help.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { commands, ICommandModule, IOption } from '../load-commands'
import { dasherizeOption, printTable } from '../util'

export const command: ICommandModule = {
command: 'help [command]',
description: 'Show the help page for a command',
command: 'help [命令]',
description: '显示命令的帮助页面',
handler({ _: [command] }) {
if (command) {
printCommandHelp(command, commands[command])
Expand All @@ -17,23 +17,35 @@ export const command: ICommandModule = {
}

function printHelp() {
console.log(chalk.underline('Commands:'))
console.log(chalk.underline('命令:'))
const table: string[][] = []
for (const commandName of Object.keys(commands)) {
const command = commands[commandName]
table.push([chalk.bold(command.command), command.description])
}
printTable(table)
console.log(
`\nRun ${chalk.bold(
`github help ${chalk.gray('<command>')}`
)} for details about each command`
`\n运行 ${chalk.bold(
`github help ${chalk.gray('<命令>')}`
)} 查看各个命令的详细帮助信息`
// )} for details about each command`
)
}

function typeTranslator(type: string) {
switch (type) {
case 'string':
return '字符串'
case 'boolean':
return '布尔值'
default:
return type
}
}

function printCommandHelp(name: string, command: ICommandModule) {
if (!command) {
console.log(`Unrecognized command: ${chalk.bold.red.underline(name)}`)
console.log(`未知命令: ${chalk.bold.red.underline(name)}`)
printHelp()
return
}
Expand All @@ -51,7 +63,7 @@ function printCommandHelp(name: string, command: ICommandModule) {
}
const { options, args } = command
if (options) {
console.log(chalk.underline('\nOptions:'))
console.log(chalk.underline('\n选项:'))
printTable(
Object.keys(options)
.map(k => [k, options[k]] as [string, IOption])
Expand All @@ -61,18 +73,18 @@ function printCommandHelp(name: string, command: ICommandModule) {
.map(x => chalk.bold.blue(x))
.join(chalk.gray(', ')),
option.description,
chalk.gray(`[${chalk.underline(option.type)}]`),
chalk.gray(`[${chalk.underline(typeTranslator(option.type))}]`),
])
)
}
if (args && args.length) {
console.log(chalk.underline('\nArguments:'))
console.log(chalk.underline('\n参数:'))
printTable(
args.map(arg => [
(arg.required ? chalk.bold : chalk).blue(arg.name),
arg.required ? chalk.gray('(required)') : '',
arg.required ? chalk.gray('(必填)') : '',
arg.description,
chalk.gray(`[${chalk.underline(arg.type)}]`),
chalk.gray(`[${chalk.underline(typeTranslator(arg.type))}]`),
])
)
}
Expand Down
16 changes: 8 additions & 8 deletions app/src/cli/commands/open.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import { openDesktop } from '../open-desktop'
import { parseRemote } from '../../lib/remote-parsing'

export const command: ICommandModule = {
command: 'open <path>',
aliases: ['<path>'],
description: 'Open a git repository in GitHub Desktop',
command: 'open <路径>',
aliases: ['<路径>'],
description: '用 GitHub Desktop 打开一个 git 仓库',
args: [
{
name: 'path',
description: 'The path to the repository to open',
name: '路径',
description: '仓库文件夹路径',
type: 'string',
required: false,
},
Expand All @@ -26,9 +26,9 @@ export const command: ICommandModule = {
//Check if the pathArg is a remote url
if (parseRemote(pathArg) != null) {
console.log(
`\nYou cannot open a remote URL in GitHub Desktop\n` +
`Use \`${chalk.bold(`git clone ` + pathArg)}\`` +
` instead to initiate the clone`
`\n无法直接打开远程地址\n` +
`请先使用 \`${chalk.bold(`git clone ` + pathArg)}\`` +
` 来克隆它`
)
} else {
const repositoryPath = Path.resolve(process.cwd(), pathArg)
Expand Down
24 changes: 12 additions & 12 deletions app/src/crash/crash-app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,8 @@ export class CrashApp extends React.Component<ICrashAppProps, ICrashAppState> {
private renderTitle() {
const message =
this.state.type === 'launch'
? 'GitHub Desktop failed to launch'
: 'GitHub Desktop encountered an error'
? 'GitHub Desktop 启动失败'
: 'GitHub Desktop 遇到问题'

return (
<header>
Expand All @@ -151,19 +151,19 @@ export class CrashApp extends React.Component<ICrashAppProps, ICrashAppState> {
if (this.state.type === 'launch') {
return (
<p>
GitHub Desktop encountered a catastrophic error that prevents it from
launching. This has been reported to the team, but if you encounter
this repeatedly please report this issue to the GitHub Desktop{' '}
<LinkButton uri={issuesUri}>issue tracker</LinkButton>.
GitHub Desktop
遇到了一个灾难性的错误,导致无法启动。此问题已报告给开发团队。但如果您反复遇到这个错误,请在{' '}
<LinkButton uri={issuesUri}>GitHub Desktop 的问题跟踪器</LinkButton>{' '}
中报告此问题。
</p>
)
} else {
return (
<p>
GitHub Desktop has encountered an unrecoverable error and will need to
restart. This has been reported to the team, but if you encounter this
repeatedly please report this issue to the GitHub Desktop{' '}
<LinkButton uri={issuesUri}>issue tracker</LinkButton>.
GitHub Desktop
遇到了一个无法恢复的错误,需要重新启动。此问题已报告给开发团队。但如果您反复遇到这个错误,请在{' '}
<LinkButton uri={issuesUri}>GitHub Desktop 的问题跟踪器</LinkButton>{' '}
中报告此问题。
</p>
)
}
Expand All @@ -188,9 +188,9 @@ export class CrashApp extends React.Component<ICrashAppProps, ICrashAppState> {
// We don't support restarting in dev mode since we can't
// control the life time of the dev server.
if (__DEV__) {
quitText = __DARWIN__ ? 'Quit' : 'Exit'
quitText = __DARWIN__ ? '退出' : '退出'
} else {
quitText = __DARWIN__ ? 'Quit and Restart' : 'Exit and restart'
quitText = __DARWIN__ ? '退出并重启软件' : '退出并重启软件'
}

return (
Expand Down
39 changes: 20 additions & 19 deletions app/src/lib/ci-checks/ci-checks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,26 +86,26 @@ export function getCheckRunConclusionAdjective(
conclusion: APICheckConclusion | null
): string {
if (conclusion === null) {
return 'In progress'
return '运行中'
}

switch (conclusion) {
case APICheckConclusion.ActionRequired:
return 'Action required'
return '待干预'
case APICheckConclusion.Canceled:
return 'Canceled'
return '被取消'
case APICheckConclusion.TimedOut:
return 'Timed out'
return '已超时'
case APICheckConclusion.Failure:
return 'Failed'
return '未通过'
case APICheckConclusion.Neutral:
return 'Neutral'
return '无结果'
case APICheckConclusion.Success:
return 'Successful'
return '已通过'
case APICheckConclusion.Skipped:
return 'Skipped'
return '已跳过'
case APICheckConclusion.Stale:
return 'Marked as stale'
return '已过时'
}
}

Expand All @@ -129,7 +129,7 @@ function getCheckRunShortDescription(
durationMs?: number
): string {
if (status !== APICheckStatus.Completed || conclusion === null) {
return 'In progress'
return '正在运行中'
}

const adjective = getCheckRunConclusionAdjective(conclusion)
Expand All @@ -146,10 +146,11 @@ function getCheckRunShortDescription(
return adjective
}

const preposition = conclusion === APICheckConclusion.Success ? 'in' : 'after'
const preposition =
conclusion === APICheckConclusion.Success ? '运行' : '运行'

if (durationMs !== undefined && durationMs > 0) {
return `${adjective} ${preposition} ${formatPreciseDuration(durationMs)}`
return `${adjective}${preposition}${formatPreciseDuration(durationMs)}`
}

return adjective
Expand Down Expand Up @@ -607,7 +608,7 @@ export function getCheckRunsGroupedByActionWorkflowNameAndEvent(

const groups = new Map<string, IRefCheck[]>()
for (const checkRun of checkRuns) {
let group = checkRun.actionsWorkflow?.name || 'Other'
let group = checkRun.actionsWorkflow?.name || '其他'

if (
checkRunsHaveMultipleEventTypes &&
Expand All @@ -617,8 +618,8 @@ export function getCheckRunsGroupedByActionWorkflowNameAndEvent(
group = `${group} (${checkRun.actionsWorkflow.event})`
}

if (group === 'Other' && checkRun.appName === 'GitHub Code Scanning') {
group = 'Code scanning results'
if (group === '其他' && checkRun.appName === 'GitHub Code Scanning') {
group = '代码扫描结果'
}

const existingGroup = groups.get(group)
Expand Down Expand Up @@ -648,17 +649,17 @@ export function getCheckRunGroupNames(
): ReadonlyArray<string> {
const groupNames = [...checkRunGroups.keys()]

// Sort names with 'Other' always last.
// Sort names with '其他' always last.
groupNames.sort((a, b) => {
if (a === 'Other' && b !== 'Other') {
if (a === '其他' && b !== '其他') {
return 1
}

if (a !== 'Other' && b === 'Other') {
if (a !== '其他' && b === '其他') {
return -1
}

if (a === 'Other' && b === 'Other') {
if (a === '其他' && b === '其他') {
return 0
}

Expand Down
Loading

0 comments on commit 134f002

Please sign in to comment.