如何向微软 Docs 和本地化社区提交翻译贡献

Docs (docs.microsoft.com)是微软新版的文档网站,重新规划了各项技术栈的文档结构,看起来比 MSDN 可读性更好。虽然 Docs 提供了各种语言的版本,但大多是机器翻译,某些中文文档基本读不下去。因此微软鼓励社区参与者提交本地化内容。对于微软 MVP 来说,参与 Docs 的本地化也是一种重要的贡献方式。除了 Docs 的本地化,微软还有一个本地化社区,可以对微软的多个软件程序进行本地化:Microsoft Localization Community。接下来给大家介绍一下如何向这两个项目提交贡献。

排行榜及积分规则

微软发布了一个排行榜,可以看到全球贡献者的分数排名:Microsoft Cloud + AI International Community Leaderboard(https://microsoftl10n.github.io/)

640?wx_fmt=png

计分规则是这样的:

  • 对于 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)。

直接在页面上修改

第一种方式是直接在页面上修改,适合修改单个词语、句子或文章。以该页面为例:https://docs.microsoft.com/zh-cn/dotnet/standard/design-guidelines/choosing-between-class-and-struct

640?wx_fmt=png

“每个框架设计器的人脸的基本设计决策之一……” 这什么乱七八糟的。Bing 翻译的质量还需提高啊。

首先点页面右上角的 登陆按钮,这里需要使用 GitHub 账户,没有的话先注册一个。然后可以看到页面上方有几个链接:

640?wx_fmt=png

可以点击 反馈 按钮来提交你的反馈意见,相当于发布评论,会显示在页面下方。如果想编辑翻译的话,就点击 编辑 按钮,这样会直接链接到该页面在 GitHub 上的地址:

640?wx_fmt=png

要编辑的话,就点击那个笔形的编辑按钮:

640?wx_fmt=png

然后就可以直接编辑了,注意页面上方的说明:

640?wx_fmt=png

使用这种方式会自动在你的仓库中创建一个分支。点击下面的 Propose file change 按钮:

640?wx_fmt=png

这样会自动生成一个页面,对比所做的修改,点击绿色的 Create pull requet 按钮就可以创建一个 PR 了:

640?wx_fmt=png

创建 PR:

640?wx_fmt=png


可以看到,这种方式实际上是创建了一个名为patch-1的分支:

640?wx_fmt=png

等 PR 被批准并合并之后,会提示你将该分支删除,因为该分支已经没用了。按提示操作就可以了。

Fork 项目到自己的仓库

直接在页面上修改的方式虽然简单,但只能在线操作,如果遇到断网或系统崩溃,可能会丢数据。此外,只改几个单词就提交一个 PR,显得比较零散。因此建议 fork 项目到自己的仓库,在本地修改后,再提交 PR 。本地编辑使用 VS Code 或其他编辑器,也不会丢失数据,VS Code 会自动暂存修改。

Fork 相当于一个仓库的副本。将源项目 fork 到自己的仓库可以让你随意修改代码而不会影响到源项目。并且你还可以将你的修改提交到源项目。一般流程是这样的:

  • Fork源项目到自己的仓库

  • 修改

  • 向源项目提交 Pull Request


如果原项目作者同意了你的修改,会将其合并到源项目中。

Fork 项目

首先,打开官方项目的主页面,将其 fork 到自己的仓库:

640?wx_fmt=png

这样会在自己的账户内生成一个新的项目,并显示是从源项目 fork 过来的:

640?wx_fmt=png

使用 VS Code,将项目 Clone 到本地。没有 VS Code 的话就装一个吧,前端神器,集成 Git,用来写 markdown 也是极好的。Docs 的文档都是markdown 格式,所以 VS Code 很适合干这个。

点击 Clone or download 的按钮,再点击路径旁边的按钮,将项目路径复制下来:

640?wx_fmt=png

因为 VS Code 已经集成了 Git,所以 VS Code 中也有两种不同的使用 Git 的方式:

  • F1,调出命令输入框,输入 Git,即可看到支持的各种 Git 命令:


    640?wx_fmt=png

  • 按 Ctrl+`,也可以在 Terminal 窗口中直接输入 Git 命令:


    640?wx_fmt=png

选择自己喜欢的方式即可。如果使用第一种方式,就选择 Git: Clone 命令,然后输入项目路径,回车,会弹出一个选择文件夹位置的对话框,选择后确定即可将项目 Clone 到该文件夹中。

如果使用第二种方式,首先要定位到你要存放该仓库的文件夹,然后输入:

git clone https://github.com/YOUR-USERNAME/dotnet.docs.zh-cn.git

640?wx_fmt=png

设置与源项目同步

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.gitc:\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)

640?wx_fmt=png

创建分支

回到自己的项目页面(不是官方源项目的页面),点击 Branch 那个下拉列表框,输入一个新的 branch 名称:

640?wx_fmt=png

注意,选择的时候要注意是以哪个分支为基础,默认是 live 分支,你也可以选择以其他的分支为基础创建自己的分支。

创建分支后,就可以在本地切换到该分支进行修改了。我还是更倾向使用 VS Code 集成的命令,不易出错。

使用 VS Code 打开刚才 Clone 的项目目录,按 F1 调出命令输入框,输入Git,即可看到支持的 Git 命令:

640?wx_fmt=png

选择 Git: Checkout to...,选择刚才创建的分支:

640?wx_fmt=png

这样本地的分支就切换为刚创建的分支了,在 VS Code 左下角可以看出来当前分支是哪个:

640?wx_fmt=png


点击左下角这个地方也可以方便的切换分支。

如果使用命令行的方式,可以输入以下命令:

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 搜索,安装前面两个即可:

640?wx_fmt=png

这两个插件能够有效提升你写 markdown 文档的效率,还可以在右侧预览效果。具体的功能可查看插件的说明。

修改完后保存。点击 VS Code 侧栏的第三个图标,可以看到已经有一个修改,输入 comment,然后点击对号提交。

640?wx_fmt=png

这样修改只是提交到本地仓库,还需要 Push 到远程仓库。点击右侧的三个点的按钮,选择 Push

640?wx_fmt=png

如果选择 Push to... 的话,还可以选择直接 Push 到上游分支,也就是官方的项目,但这样是没有权限的,所以只能先提交到自己的项目,再向官方项目提PR。

返回到自己的仓库页面,可以看到 GitHub 已经检测出来已经提交了一个更新,这时候就可以点击右侧按钮创建 Pull Request了:

640?wx_fmt=png

也可以点击 tab 栏的 Pull Request,也会有一个 New pull request 的按钮。这样会出现一个页面对修改后的文件和源文件进行比较:

640?wx_fmt=png

一定要注意上面的分支选择,是从我们自己的分支提交到源项目的分支,不要选错了。建议输入详细的 comment 便于官方人员检查。

最后点击 Crete Pull Request 的按钮,就成功创建 PR 了:

640?wx_fmt=png

等微软工作人员审核后,即可以被合并到主项目分支了。期间微软可能会做出一些修改。

删除本地分支

往往本地创建的分支都是针对一个 issue 做的修改,或者修复某个bug,或增加一个新 feature。当修改并成功被合并后,该分支就没用了。可以点击分支后面的删除按钮删除:

640?wx_fmt=png

注意,一旦删除就无法恢复了,因此一定要确认分支的内容都已成功被合并后再删除。

与源项目进行同步

时间一长,我们本地的项目可能已经大大落后源项目的更新了。因此如果本地分支不是做出很大的破坏性变更的话,建议保持与源项目的同步。

首先点击自己仓库项目的 Pull Request 栏,点击 New pull request 按钮。

此时要注意,默认是将自己项目的更改提交到源项目,我们要反过来,将源项目的更改提交到自己的项目。

所以先选择左侧的下拉列表框,选择自己的仓库:

640?wx_fmt=png

这样两边都是自己的项目了,再点击 compare across forks 链接:

640?wx_fmt=png

右侧的下拉列表框选择源项目:

640?wx_fmt=png

可以看到源项目已经更新很多了,点击 Create pull request 按钮即可创建一个 PR。

640?wx_fmt=png

因为是自己的项目,所以可以直接将 PR 合并:

640?wx_fmt=png

合并后,自己的项目就更新到源项目的进度了。然后要把更新的内容 Pull 到本地。

在 VS Code 中按 F1,打开命令行窗口,输入 git pull

640?wx_fmt=png

或者点侧栏第三个按钮,右上角的三个点按钮,选择 Pull

640?wx_fmt=png

这样本地的项目也是最新的了。

现在大家应该对如何向 Docs 贡献翻译有一个大概了解了。我并没有全部使用 Git 命令,使用 VS Code 可以很方便的代替命令行做一些操作,还是比较方便的。

向应用程序提交贡献

这个就比较简单了,将这个网址加入收藏夹:

https://envelope-community.azurewebsites.net/

首先选择语言,然后可以点击右侧的按钮对当前已存在的翻译进行投票,或在下面的输入框中输入自己的翻译:

640?wx_fmt=png

这个页面支持手机浏览,所以没事等车的时候也可以刷几个翻译。

结语

Docs 是很好的学习资料,文章质量也都比较高。参与翻译 Docs 也是提高英语水平的一个方法。每天努力看一点,时间久了就会发现英语阅读能力会有很大提高,顺便为社区做点贡献,何乐而不为呢?希望能有更多同学加入到贡献者的队伍中来,帮助他人的同时也提高自己。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【线段树】生日

题目大意 给你一个序列&#xff0c;让你进行以下操作&#xff1a; 修改一个区间的数查询区间不同数字个数 解题思路 因为数字个数很少&#xff0c;可以直接用bitset存&#xff0c;然后套线段树 code #include<bitset> #include<cstdio> #include<cstring>…

ICPC 2019-2020 North-Western Russia Regional Contest 补题部分

已做A、M&#xff0c;E和H思路已经有了没调AC 已补BEJH 最终已完成ABEJHM B - Bad Treap 大佬题解 感觉这题就很玄学。。。 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) #include<set> #include<map> #include<c…

【dfs】数字

题目大意 给出x&#xff0c;问你不小于x&#xff0c;且由相同个数的4和7组成的最小的数 解题思路 对于奇数位和大于当前位数最大数的直接特判掉 对于其他的dfs枚举&#xff0c;因为如果一个位置放得比原数大&#xff0c;那么后面的都确定了&#xff0c;所以是O(n)的 code #…

【dfs】飞行棋

题目大意 给你一个n*m的网格&#xff0c;现在让你往里面填1~k&#xff08;有的位置已经填了&#xff09;&#xff0c;使其满足所有从(1,1)到(n,m)的路径不会经过相同的数字&#xff08;只能往下或往右&#xff09;&#xff0c;求方案数 解题思路 对于k<nm-1的&#xff0c;…

API测试工具SoapUI Postman对比分析

最近公司要引入API测试工具&#xff0c;经过调查和了解&#xff0c;最终决定在SoapUI 和 Postman两种工具之间做一个选择&#xff0c;两种工具在业界都很有名&#xff0c;相信很多人两种工具也都曾使用过。SoapUISoapUI是一个开源测试工具&#xff0c;通过soap/http来检查、调用…

[POI2008]STA-Station

之前都看过有换根dp&#xff0c;一直不知道是啥意思&#xff0c;本来弱弱树形dp都不太熟悉&#xff0c;不过今天工数课的时候突然想看一下&#xff0c;写个板子题练练吧。 对于我的理解&#xff0c;换根的题目一般是根不确定&#xff0c;而求得答案与根是谁有关&#xff0c;而…

Reports

试题hduoj 题意&#xff1a; 如果相邻的任意两个数相同的话&#xff0c;则输出NO&#xff0c;反之输出YES。 题解&#xff1a; 水题 我队友做的 代码&#xff1a; #include<bits/stdc.h> #define inf 1<<30 #define maxn 200000 using namespace std; int k…

【结论】分肉

题目大意 有两个数x,y&#xff0c;一轮中&#xff0c;如果x≤yx\leq yx≤y&#xff0c;那么xx,y-x&#xff0c;否则x-y,yy&#xff0c;回答经过k轮后较小的数 解题思路 可以发现xy是保持不变的&#xff0c;且x−yx2−x−y,x2>xy(x>y)x-yx\times 2-x-y,x\times 2>xy(…

在 Windows 上可以用 Docker 吗?| 洞见

简介Docker&#xff0c;或者准确一点说&#xff0c;容器技术&#xff0c;在近几年里几乎成为了应用分发和集群部署的默认技术了。背景部分&#xff0c;如果感兴趣&#xff0c;请参考闲谈集群管理模式一文。Docker 生态的成熟还有赖于其周边工具和实践模式的兴起。比如&#xff…

泰勒及洛朗展开学习笔记

2020-1024996 最近太忙了&#xff0c;今天好像没有写题&#xff0c;不过研究了一下数学hh。 2020.10.24今天又有工数课&#xff0c;我又没听&#xff0c;我记得上节工数课我看了换根dp&#xff0c;哦&#xff1f;好吧我没听过工数&#xff0c;那没事了&#xff0c;不过这次不敢…

【结论】串串串(nowcoder 20107-A)

正题 nowcoder 20107-A 题目大意 给你两个01串&#xff0c;有若干询问&#xff0c;每次询问两段长度相等的字串不同位数的奇偶性 解题思路 因为只用判断奇偶性&#xff0c;所以同时修改两个字符是不会改变结果的&#xff0c;那么可以直接将字串修改为只有0/1个1的串&#xf…

SmartSql For Asp.Net Core 最佳实践

常规操作安装 SmartSqlInstall-Package SmartSql安装 SmartSql.DIExtensionInstall-Package SmartSql.DIExtension配置SmartSqlConfig.xml写库&#xff08;Write&#xff09;必选 唯一节点读库&#xff08;Read&#xff09;可选 多节点配置PostgresqlPostgresql 客户端 NpgsqlI…

矩阵乘法学习记录

这要从校赛的一个区间与非操作题说起&#xff0c;群里大佬用的ddp思想使其满足结合律&#xff0c;但是我连矩阵乘法都不会于是从头开始学习矩阵乘法。 P3390 【模板】矩阵快速幂 和快速幂一模一样&#xff0c;只是把数乘换成矩阵乘&#xff0c;只需要定义结构体矩阵然后重载一…

51nod1600-Simple KMP【SAM,树链剖分】

正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1600 题目大意 给出一个字符串sss&#xff0c;每次在最后插入一个字符后求它的所有分别子串构出的failfailfail树的深度和。 1≤Q≤1051\leq Q\leq 10^51≤Q≤105 解题思路 考虑两个相等的子串长度为le…

课程 预编译框架,开发高性能应用 - 微软技术暨生态大会 2018

微软技术暨生态大会&#xff08;Tech Summit&#xff09;&#xff0c;2018 年在上海世博中心召开。这是最后一次的 Tech Summit 了&#xff1b;明年开始&#xff0c;中国大陆地区就要和其他国家和地区一样&#xff0c;进行全球 Ignite Tour 了。我也有幸成为分会场讲师团队的一…

【DP】方格计数(nowcoder 20107-B)

正题 nowcoder 20107-B 题目大意 在一个H*W的平面上&#xff0c;选择N个点&#xff08;坐标为非负整数&#xff09;&#xff0c;使得每个点之间的距离大于D&#xff0c;问你有多少种方案 解题思路 设fi,j,kf_{i,j,k}fi,j,k​为有i个格子&#xff0c;选择k个格子&#xff0c;…

YbtOJ#853-平面标记【整体二分,凸壳】

正题 题目链接:http://www.ybtoj.com.cn/contest/119/problem/3 题目大意 给出nnn个点(xi,yi)(x_i,y_i)(xi​,yi​)&#xff0c;mmm次给出(ki,ai)(k_i,a_i)(ki​,ai​)表示标记所有满足 yj>kixjaiy_j>\frac{k_i}{x_j^{a_i}}yj​>xjai​​ki​​的未标记点 求每个点…

Ocelot简易教程(五)之集成IdentityServer认证以及授权

最近比较懒&#xff08;编者注&#xff1a;作者不是真懒&#xff0c;而是在憋大招&#xff0c;他最近实现了把Ocelot的配置使用数据库存储&#xff09;&#xff0c;所以隔了N天才来继续更新第五篇Ocelot简易教程&#xff0c;本篇教程会先简单介绍下官方文档记录的内容然后在前几…

【启发式合并】【dfs】树数树(nowcoder 20107-C)

正题 nowcoder 20107-C 题目大意 给一棵树&#xff0c;让你构造一个序列a&#xff0c;使得a中的数互不相等&#xff0c;且相邻点是祖先的关系&#xff0c;回答序列最长长度 解题思路 书中的每个点可以把字数的两个序列连起来 考虑维护一个堆&#xff0c;存子树中的序列&…

CF848E-Days of Floral Colours【dp,分治NTT】

正题 题目链接:https://www.luogu.com.cn/problem/CF848E 题目大意 2n2n2n个花排成一个圆环&#xff0c;nnn种颜色每种两个&#xff0c;要求两个相同颜色之间最小距离为1,21,21,2或nnn。 对于一种染色方案的权值为&#xff1a;删除掉距离为nnn的颜色后&#xff0c;剩下的连续…