如何向微软 Docs 和本地化社区提交翻译贡献
Docs (docs.microsoft.com)是微软新版的文档网站,重新规划了各项技术栈的文档结构,看起来比 MSDN 可读性更好。虽然 Docs 提供了各种语言的版本,但大多是机器翻译,某些中文文档基本读不下去。因此微软鼓励社区参与者提交本地化内容。对于微软 MVP 来说,参与 Docs 的本地化也是一种重要的贡献方式。除了 Docs 的本地化,微软还有一个本地化社区,可以对微软的多个软件程序进行本地化:Microsoft Localization Community。接下来给大家介绍一下如何向这两个项目提交贡献。如果你已经很熟悉Git操作,可略过本文。
排行榜及积分规则
微软发布了一个排行榜,可以看到全球贡献者的分数排名:Microsoft Cloud + AI International Community Leaderboard(https://microsoftl10n.github.io/)
计分规则是这样的:
对于 Docs 来说,每项建议得15分,如果微软审核后接受建议,则可以得到60分。也就是说一项建议最多得75分。
1. Docs 本地化得分 = 建议数 * 15 + 接受建议数 * 60
2. 一个建议 = 15分
3. 一个通过审核的建议 = 60分
对于软件程序来说,如果审核并修改一个包含10个单词的的句子,可以得20分。如果该翻译被微软批准,则可以得到80分。也就是说翻译10个单词的句子最多得100分。同时如果审核其他人的翻译并投票,可以得2分。
1. 软件本地化得分 = 建议单词数 * 2 + 投票数 * 2 + 接受翻译单词数 * 8
2. 一个建议的单词 = 2分
3. 一个通过审核的单词 = 8分
4. 对其他人的翻译投票 = 每个投票2分
当然我想强调的是,我们并不是为了得分才去做贡献,提交 PR 是一件很有成就感的事情,你的贡献能够帮助到他人,同时对自己也是一个提高,这才是 Contribution 的意义所在。
向 Docs 提交 PR
下面详细介绍如何对 Docs 提交 PR(Pull Request)。
直接在页面上修改
第一种方式是直接在页面上修改,适合修改单个词语、句子或文章。点击链接:微软Docs 进入Docs网站,可以选一个类别的文档进行修改。但注意有些文档还没有提供本地化内容,也就是还没有提供可供修改的GitHub repo。以该页面为例:https://docs.microsoft.com/zh-cn/dotnet/standard/design-guidelines/choosing-between-class-and-struct
“每个框架设计器的人脸的基本设计决策之一……” 这什么乱七八糟的。Bing 翻译的质量还需提高啊。
首先点页面右上角的 登陆按钮,这里需要使用 GitHub 账户,没有的话先注册一个。然后可以看到页面上方有几个链接:
可以点击 反馈 按钮来提交你的反馈意见,相当于发布评论,会显示在页面下方。如果想编辑翻译的话,就点击 编辑 按钮,这样会直接链接到该页面在 GitHub 上的地址:
要编辑的话,就点击那个笔形的编辑按钮:
然后就可以直接编辑了,注意页面上方的说明:
使用这种方式会自动在你的仓库中创建一个分支。点击下面的 Propose file change按钮:
这样会自动生成一个页面,对比所做的修改,点击绿色的 Create pull requet 按钮就可以创建一个 PR 了:
创建 PR:
可以看到,这种方式实际上是创建了一个名为patch-1的分支:
等 PR 被批准并合并之后,会提示你将该分支删除,因为该分支已经没用了。按提示操作就可以了。
Fork 项目到自己的仓库
直接在页面上修改的方式虽然简单,但只能在线操作,如果遇到断网或系统崩溃,可能会丢数据。此外,只改几个单词就提交一个 PR,显得比较零散。因此建议 fork 项目到自己的仓库,在本地修改后,再提交 PR 。本地编辑使用 VS Code 或其他编辑器,也不会丢失数据,VS Code 会自动暂存修改。
Fork 相当于一个仓库的副本。将源项目 fork 到自己的仓库可以让你随意修改代码而不会影响到源项目。并且你还可以将你的修改提交到源项目。一般流程是这样的:
Fork源项目到自己的仓库
修改
向源项目提交
Pull Request
如果原项目作者同意了你的修改,会将其合并到源项目中。
Fork 项目
首先,打开官方项目的主页面,将其 fork 到自己的仓库:
这样会在自己的账户内生成一个新的项目,并显示是从源项目 fork 过来的:
使用 VS Code,将项目 Clone 到本地。没有 VS Code 的话就装一个吧,前端神器,集成 Git,用来写 markdown 也是极好的。Docs 的文档都是markdown 格式,所以 VS Code 很适合干这个。
点击 Clone or download 的按钮,再点击路径旁边的按钮,将项目路径复制下来:
因为 VS Code 已经集成了 Git,所以 VS Code 中也有两种不同的使用 Git 的方式:
按
F1,调出命令输入框,输入Git,即可看到支持的各种 Git 命令:按 Ctrl+`,也可以在 Terminal 窗口中直接输入 Git 命令:
选择自己喜欢的方式即可。如果使用第一种方式,就选择 Git: Clone 命令,然后输入项目路径,回车,会弹出一个选择文件夹位置的对话框,选择后确定即可将项目 Clone 到该文件夹中。
如果使用第二种方式,首先要定位到你要存放该仓库的文件夹,然后输入:
git clone https://github.com/YOUR-USERNAME/dotnet.docs.zh-cn.git
设置与源项目同步
Clone项目后,还需要设置一下,将本地的项目与源项目(upstream)关联起来,这样就可以进行同步了。
使用Terminal导航到项目所在目录,输入以下命令:
git remote -v
输出如下:
c:\Source\dotnet.docs.zh-cn>git remote -v
origin https://github.com/YOUR-USERNAME/dotnet.docs.zh-cn.git (fetch)
origin https://github.com/YOUR-USERNAME/dotnet.docs.zh-cn.git (push)
接下来,输入以下命令设置本地目录的 upstream:
git remote add upstream https://github.com/dotnet/docs.zh-cn.git
再输入之前的命令查看,显示已设置成功:
c:\Source\dotnet.docs.zh-cn>git remote add upstream https://github.com/dotnet/docs.zh-cn.git
c:\Source\dotnet.docs.zh-cn>git remote -v
origin https://github.com/YOUR-USERNAME/dotnet.docs.zh-cn.git (fetch)
origin https://github.com/YOUR-USERNAME/dotnet.docs.zh-cn.git (push)
upstream https://github.com/dotnet/docs.zh-cn.git (fetch)
upstream https://github.com/dotnet/docs.zh-cn.git (push)
创建分支
回到自己的项目页面(不是官方源项目的页面),点击 Branch 那个下拉列表框,输入一个新的 branch 名称:
注意,选择的时候要注意是以哪个分支为基础,默认是 live 分支,你也可以选择以其他的分支为基础创建自己的分支。
创建分支后,就可以在本地切换到该分支进行修改了。我还是更倾向使用 VS Code 集成的命令,不易出错。
使用 VS Code 打开刚才 Clone 的项目目录,按 F1 调出命令输入框,输入Git,即可看到支持的 Git 命令:
选择 Git: Checkout to...,选择刚才创建的分支:
这样本地的分支就切换为刚创建的分支了,在 VS Code 左下角可以看出来当前分支是哪个:
点击左下角这个地方也可以方便的切换分支。
如果使用命令行的方式,可以输入以下命令:
git checkout xy-test
输出如下:
C:\Source\dotnet.docs.zh-cn>git checkout xy-test
Switched to branch 'xy-test'Your branch is up to date with 'origin/xy-test'.
现在可以大胆修改了。
修改
这次我们来修改另一篇文档。打开 member.md,即https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/member页面的源文件。
对照英文原文进行翻译。为了查看 markdown 的效果,可以安装一个插件。点击 VS Code 侧栏的第五个按钮,打开插件管理器,输入 markdown 搜索,安装前面两个即可:
这两个插件能够有效提升你写 markdown 文档的效率,还可以在右侧预览效果。具体的功能可查看插件的说明。
修改完后保存。点击 VS Code 侧栏的第三个图标,可以看到已经有一个修改,输入 comment,然后点击对号提交。
这样修改只是提交到本地仓库,还需要 Push 到远程仓库。点击右侧的三个点的按钮,选择 Push:
如果选择 Push to... 的话,还可以选择直接 Push 到上游分支,也就是官方的项目,但这样是没有权限的,所以只能先提交到自己的项目,再向官方项目提PR。
返回到自己的仓库页面,可以看到 GitHub 已经检测出来已经提交了一个更新,这时候就可以点击右侧按钮创建 Pull Request了:
也可以点击 tab 栏的 Pull Request,也会有一个 New pull request 的按钮。这样会出现一个页面对修改后的文件和源文件进行比较:
一定要注意上面的分支选择,是从我们自己的分支提交到源项目的分支,不要选错了。建议输入详细的 comment 便于官方人员检查。
最后点击 Crete Pull Request 的按钮,就成功创建 PR 了:
等微软工作人员审核后,即可以被合并到主项目分支了。期间微软可能会做出一些修改。
删除本地分支
往往本地创建的分支都是针对一个 issue 做的修改,或者修复某个bug,或增加一个新 feature。当修改并成功被合并后,该分支就没用了。可以点击分支后面的删除按钮删除:
注意,一旦删除就无法恢复了,因此一定要确认分支的内容都已成功被合并后再删除。
与源项目进行同步
时间一长,我们本地的项目可能已经大大落后源项目的更新了。因此如果本地分支不是做出很大的破坏性变更的话,建议保持与源项目的同步。
首先点击自己仓库项目的 Pull Request 栏,点击 New pull request 按钮。
此时要注意,默认是将自己项目的更改提交到源项目,我们要反过来,将源项目的更改提交到自己的项目。
所以先选择左侧的下拉列表框,选择自己的仓库:
这样两边都是自己的项目了,再点击 compare across forks 链接:
右侧的下拉列表框选择源项目:
可以看到源项目已经更新很多了,点击 Create pull request 按钮即可创建一个 PR。
因为是自己的项目,所以可以直接将 PR 合并:
合并后,自己的项目就更新到源项目的进度了。然后要把更新的内容 Pull 到本地。
在 VS Code 中按 F1,打开命令行窗口,输入 git pull:
或者点侧栏第三个按钮,右上角的三个点按钮,选择 Pull:
这样本地的项目也是最新的了。
现在大家应该对如何向 Docs 贡献翻译有一个大概了解了。我并没有全部使用 Git 命令,使用 VS Code 可以很方便的代替命令行做一些操作,还是比较方便的。
向应用程序提交贡献
这个就比较简单了,将这个网址加入收藏夹:
https://envelope-community.azurewebsites.net/
首先选择语言,然后可以点击右侧的按钮对当前已存在的翻译进行投票,或在下面的输入框中输入自己的翻译:
这个页面支持手机浏览,所以没事等车的时候也可以刷几个翻译。
结语
Docs 是很好的学习资料,文章质量也都比较高。参与翻译 Docs 也是提高英语水平的一个方法。每天努力看一点,时间久了就会发现英语阅读能力会有很大提高,顺便为社区做点贡献,何乐而不为呢?希望能有更多同学加入到贡献者的队伍中来,帮助他人的同时也提高自己。
重要的几个链接,可点击直达上面所述的几个网站:
如何向微软 Docs 和本地化社区提交翻译贡献的更多相关文章
- 微软Cloud+AI本地化社区贡献指南
本文主要介绍微软Cloud+AI本地化社区,以及通过多种途径贡献本地化的操作指南. 什么是本地化社区 Cloud+AI本地化社区是微软技术社区的组成部分之一,负责对微软官方技术文档本地化的支持工作.微 ...
- 微软Cloud+AI本地化社区更新
有关微软Cloud+AI本地化方面的介绍请参见我之前的文章:<微软Cloud+AI本地化社区贡献指南>,本文将公布该社区最新的活动变更事宜. MLCP改进 我们想借此机会向您介绍我们在社区 ...
- 如何向Openstack社区提交一个新项目
前几天有个朋友问我:自己有一个idea不错的项目,也把基本的框架写好了,想贡献到Openstack社区,却不知道应该怎么做.正好之前我有过类似的经历,那么来分享一下我是如何向Openstack社区提交 ...
- 微软官方的Windowsphone社区
微软官方的Windowsphone社区 http://answers.microsoft.com/zh-hans/winphone/forum/wp8?tab=Threads http://answe ...
- 微软发布了开发社区采用.NET Standard的最新信息
最近,微软发布了开发社区当前采用.NET Standard的最新信息..NET Standard是API的正式规范,现有.NET实现在不同平台的是通用的(从而允许跨平台开发).当前规范(版本2.0)在 ...
- 一次向linux开源社区提交补丁的经历
背景 在开发过程中,偶然发现了spinand驱动的一个bug,满怀欣喜地往社区提补丁.这是怎么样的一个bug呢? static int spinand_mtd_read(struct mtd_info ...
- 【内容】MVP 三剑客活动
最近微软搞了一个活动,叫做三剑客,主旨就是“Cloud+AI本地化社区活动,为微软产品本地化做出自己的贡献”,虽然已是rMVP,但也同样收到的社区经理的来信,本人也报名参加了这个活动,同时给了我三个小 ...
- 微软“.Net社区虚拟大会”dotnetConf2015:关键词:.NET 创新、开源、跨平台
去年 11 月的时候,微软开源了 .NET CoreFX,然后是今年 2 月份的 .NET CoreCLR.自那时以来,已经有大约 3500 人在 GitHub 上进行了提交,而且贡献者的人数还在持续 ...
- 微软“.Net社区虚拟大会”dotnetConf2015 第二天 无处不在的Xamarin
今天,微软召开了“.Net 社区虚拟大会”(dotnetConf),包括微软的 Scott Hanselman 和 Xamarin 的 Miguel De Icaza 在内的知名人士,都将在 Chan ...
随机推荐
- tab 切换实现方法
ul li 实现方法(只适用于,一个页面只有一组ul>li) <!--menu--> <div class="nav"> <ul class=& ...
- 洗礼灵魂,修炼python(87)-- 知识拾遗篇 —— 线程(1)
线程(上) 1.线程含义:一段指令集,也就是一个执行某个程序的代码.不管你执行的是什么,代码量少与多,都会重新翻译为一段指令集.可以理解为轻量级进程 比如,ipconfig,或者, python ...
- Django之--通过MVC架构的html模板展示Hello World!
上一篇:Django之--网页展示Hello World! 初步说明了如何使用Django来显示hello world,本文略微进阶下使用html模板来展示hello world~ 首先在mysite ...
- C# json、xml序列化
json序列化: public static string SerializeJson<T>(T json) { // 1. 需要添加引用 Newtonsoft.Json.dll,默认为 ...
- node.js—Buffer类(二进制数据处理模块)
Buffer类概述 一个用于更好的操作二进制数据的类 我们在操作文件或者网络数据的时候,其实操作的就是二进制数据流 Node为我们提供了一个更加方便的去操作这种数据流的类 Buffer,他是一个全局的 ...
- 【CQOI2017】小Q的表格
[CQOI2017]小Q的表格 稍加推导就会发现\(f(a,b)=a\cdot b\cdot h(gcd(a,b))\). 初始时\(h(n)=1\). 询问前\(k\)行\(k\)列时我们就反演: ...
- Pandas 拼接操作 数据处理
数据分析 生成器 迭代器 装饰器 (两层传参) 单例模式() ios七层 io多路 数据分析:是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律 pandas的拼接操作 p ...
- C#事件の.net下的EventArgs和EventHandler
事件参数(EventArgs) .Net框架里边提供的一个委托EventHandler来Handle事件. 一样,搞一个场景(这个场景是书里的):买车.经销商(CarDealer)会上新车(NewCa ...
- 用deepin堆砌工作环境
用deepin堆砌工作环境 这篇文章记录了我用 deepin 15.5搭建工作环境的过程,供我个人在未来重装系统时参考.对于其他以 deepin 操作系统作为主要工作平台的看官,咱们是相亲相爱的一家人 ...
- 15.selenium_case02
# 抓取今日头条的新闻链接 from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWa ...