Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

I18n pull request restore with CrowdIn support #1888

Merged
merged 2 commits into from
Sep 12, 2018
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: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ Most of the extension UI lives in the Team Explorer pane, which is available fro

Official builds of this extension are available at [the official website](https://visualstudio.github.com).


[![Build status](https://ci.appveyor.com/api/projects/status/dl8is5iqwt9qf3t7/branch/master?svg=true)](https://ci.appveyor.com/project/github-windows/visualstudio/branch/master)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/github-visual-studio/localized.svg)](https://crowdin.com/project/github-visual-studio)
[![codecov](https://codecov.io/gh/GitHub/VisualStudio/branch/master/graph/badge.svg)](https://codecov.io/gh/GitHub/VisualStudio)

[![Join the chat at freenode:github-vs](https://img.shields.io/badge/irc-freenode:%20%23github--vs-blue.svg)](http://webchat.freenode.net/?channels=%23github-vs) [![Join the chat at https://gitter.im/github/VisualStudio](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/github/VisualStudio?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Expand Down
3 changes: 3 additions & 0 deletions crowdin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
files:
- source: /src/**/Resources.resx
translation: /%original_path%/Resources.%locale%.resx
3 changes: 3 additions & 0 deletions scripts/modules.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ New-Module -ScriptBlock {
elseif (Test-Path "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe") {
$msbuild = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe"
}
elseif (Test-Path "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe") {
$msbuild = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe"
}
else {
Die("No suitable msbuild.exe found.")
}
Expand Down
4 changes: 2 additions & 2 deletions src/GitHub.App/GitHub.App.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\submodules\akavache\Akavache.Sqlite3\Akavache.Sqlite3.csproj" />
<ProjectReference Include="..\..\submodules\akavache\Akavache\Akavache_Net45.csproj" />
Expand Down Expand Up @@ -67,4 +67,4 @@
<PackageReference Include="SQLitePCL.raw_basic" Version="0.7.3.0-vs2012" targetFramework="net45" />
<PackageReference Include="Stateless" Version="2.5.56.0" targetFramework="net45" />
</ItemGroup>
</Project>
</Project>
329 changes: 329 additions & 0 deletions src/GitHub.App/Resources.zh-CN.resx
Original file line number Diff line number Diff line change
@@ -0,0 +1,329 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema

Version 2.0

The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.

Example:

... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>

There are any number of "resheader" rows that contain simple
name/value pairs.

Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.

The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:

Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.

mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.

mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.

mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="BrowseForDirectory" xml:space="preserve">
<value>为新版本库选择文件夹。</value>
</data>
<data name="CloneTitle" xml:space="preserve">
<value>克隆一个 {0} 版本库</value>
</data>
<data name="CouldNotConnectToGitHub" xml:space="preserve">
<value>无法连接到github.com</value>
</data>
<data name="CreateGistTitle" xml:space="preserve">
<value>创建一个GitHub Gist</value>
</data>
<data name="CreateTitle" xml:space="preserve">
<value>创建一个{0}存储库</value>
</data>
<data name="DefaultGistFileName" xml:space="preserve">
<value>GistFromVisualStudio.cs</value>
</data>
<data name="EnterpriseUrlValidatorEmpty" xml:space="preserve">
<value>请输入企业网址</value>
</data>
<data name="EnterpriseUrlValidatorInvalid" xml:space="preserve">
<value>请输入有效的企业网址</value>
</data>
<data name="EnterpriseUrlValidatorNotAGitHubHost" xml:space="preserve">
<value>不是企业服务器。请输入企业服务器 URL</value>
</data>
<data name="ForgotPasswordLink" xml:space="preserve">
<value>(是否忘记了您的密码?)</value>
</data>
<data name="LoginFailedForbiddenMessage" xml:space="preserve">
<value>请确保使用您的密码而不是登录的个人访问令牌。</value>
</data>
<data name="LoginFailedMessage" xml:space="preserve">
<value>检查您的用户名和密码然后重试</value>
</data>
<data name="LoginFailedText" xml:space="preserve">
<value>登录失败。</value>
</data>
<data name="LoginTitle" xml:space="preserve">
<value>连接到 GitHub</value>
</data>
<data name="PasswordValidatorEmpty" xml:space="preserve">
<value>请输入您的密码</value>
</data>
<data name="PRCreatedUpstream" xml:space="preserve">
<value>在 [{1}] ({2}) 上成功创建分支 ** {0} ** 拉取请求</value>
</data>
<data name="PublishTitle" xml:space="preserve">
<value>发布版本库</value>
</data>
<data name="PublishToTitle" xml:space="preserve">
<value>发布版本库至 {0}</value>
</data>
<data name="PullRequestCreationTitleValidatorEmpty" xml:space="preserve">
<value>请输入请求的标题!</value>
</data>
<data name="PullRequestSourceAndTargetBranchTheSame" xml:space="preserve">
<value>源和目标分支不能相同</value>
</data>
<data name="PullRequestSourceBranchDoesNotExist" xml:space="preserve">
<value>远程不存在源分支, 你有没有推送它?</value>
</data>
<data name="RepositoryCloneFailedNoSelectedRepo" xml:space="preserve">
<value>没有选定的存储库。</value>
</data>
<data name="RepositoryCreationClonePathEmpty" xml:space="preserve">
<value>请输入名称</value>
</data>
<data name="RepositoryCreationClonePathInvalid" xml:space="preserve">
<value>请输入有效路径</value>
</data>
<data name="RepositoryCreationClonePathInvalidCharacters" xml:space="preserve">
<value>路径包含无效字符</value>
</data>
<data name="RepositoryCreationClonePathTooLong" xml:space="preserve">
<value>路径太长</value>
</data>
<data name="RepositoryCreationFailedAlreadyExists" xml:space="preserve">
<value>版本库 '{0}/{1}'已存在。</value>
</data>
<data name="RepositoryCreationFailedAlreadyExistsMessage" xml:space="preserve">
<value>请更改存储库名称或选择其他帐户, 然后重试。</value>
</data>
<data name="RepositoryCreationFailedQuota" xml:space="preserve">
<value>私密文档</value>
</data>
<data name="RepositoryNameValidatorAlreadyExists" xml:space="preserve">
<value>同名的广告活动已存在</value>
</data>
<data name="RepositoryNameValidatorEmpty" xml:space="preserve">
<value>请输入姓名</value>
</data>
<data name="RepositoryNameValidatorTooLong" xml:space="preserve">
<value>这个名字不能超过100个字符</value>
</data>
<data name="SafeRepositoryNameWarning" xml:space="preserve">
<value>将要创建为 {0}</value>
</data>
<data name="TwoFactorApp" xml:space="preserve">
<value>在您的手机上安装双重验证程序:Google Authenticator</value>
</data>
<data name="TwoFactorSms" xml:space="preserve">
<value>我们将发送一条验证码短信到您的手机。</value>
</data>
<data name="TwoFactorTitle" xml:space="preserve">
<value>双重身份认证</value>
</data>
<data name="TwoFactorUnknown" xml:space="preserve">
<value>在此处输入身份验证代码中的符号</value>
</data>
<data name="UsernameOrEmailValidatorEmpty" xml:space="preserve">
<value>请输入您的用户名或邮箱地址.</value>
</data>
<data name="UsernameOrEmailValidatorSpaces" xml:space="preserve">
<value>用户名或电子邮件地址不能有空格</value>
</data>
<data name="PullRequestsNavigationItemText" xml:space="preserve">
<value>拉取请求</value>
</data>
<data name="PullRequestNavigationItemText" xml:space="preserve">
<value>推送请求</value>
</data>
<data name="AddedFileStatus" xml:space="preserve">
<value>添加</value>
</data>
<data name="Fork" xml:space="preserve">
<value>fork</value>
</data>
<data name="InvalidBranchName" xml:space="preserve">
<value>[无效]</value>
</data>
<data name="MustPullBeforePush" xml:space="preserve">
<value>你必须先拉取再推送</value>
</data>
<data name="NoCommitsToPull" xml:space="preserve">
<value>没有需要拉取的提交</value>
</data>
<data name="NoCommitsToPush" xml:space="preserve">
<value>没有需要推送的提交</value>
</data>
<data name="NoDescriptionProvidedMarkdown" xml:space="preserve">
<value>* 未提供说明。*</value>
</data>
<data name="PullRequestDetailsCheckout" xml:space="preserve">
<value>签出 {0}</value>
</data>
<data name="PullRequestDetailsCheckoutTo" xml:space="preserve">
<value>签出到 {0}</value>
</data>
<data name="PullRequestDetailsPullToolTip" xml:space="preserve">
<value>从 {0} 分支 {1} 拉取</value>
</data>
<data name="PullRequestDetailsPushToolTip" xml:space="preserve">
<value>推至 {0} 分支 {1}</value>
</data>
<data name="Remote" xml:space="preserve">
<value>远程</value>
</data>
<data name="RenamedFileStatus" xml:space="preserve">
<value>重命名</value>
</data>
<data name="SourceRepositoryNoLongerAvailable" xml:space="preserve">
<value>源存版本库不再可用。</value>
</data>
<data name="WorkingDirectoryHasUncommittedCHanges" xml:space="preserve">
<value>无法签出, 因为您的工作目录有未提交的更改。</value>
</data>
<data name="SyncSubmodules" xml:space="preserve">
<value>同步 {0} 子模块</value>
</data>
<data name="CouldntFindGitOnPath" xml:space="preserve">
<value>在PATH 找不到 Git.exe。

请安装 Git for Windows : https://git-scm.com/download/win</value>
</data>
<data name="Approved" xml:space="preserve">
<value>批准</value>
</data>
<data name="ChangesRequested" xml:space="preserve">
<value>更改需求</value>
</data>
<data name="Commented" xml:space="preserve">
<value>已评论</value>
</data>
<data name="InProgress" xml:space="preserve">
<value>进行中</value>
</data>
<data name="NavigateToEditorStatusMessage" xml:space="preserve">
<value>按回车键导航到编辑器</value>
</data>
<data name="NavigateToEditorNotCheckedOutInfoMessage" xml:space="preserve">
<value>在导航到编辑器之前签出 PR 分支</value>
</data>
<data name="NavigateToEditorNotCheckedOutStatusMessage" xml:space="preserve">
<value>按回车键导航到编辑器 (PR 分支必须签出)</value>
</data>
<data name="ForkRepositoryTitle" xml:space="preserve">
<value>Fork存储库</value>
</data>
<data name="SwitchOriginTitle" xml:space="preserve">
<value>开关原点</value>
</data>
<data name="CancelPendingReviewConfirmation" xml:space="preserve">
<value>您确定要取消此评审吗?您将丢失所有待处理的评论。</value>
</data>
<data name="CancelPendingReviewConfirmationCaption" xml:space="preserve">
<value>取消评审</value>
</data>
</root>
9 changes: 4 additions & 5 deletions src/GitHub.InlineReviews/Views/CommentView.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
CornerRadius="3"
Padding="2 1"
Visibility="{Binding IsPending, Converter={ui:BooleanToVisibilityConverter}, FallbackValue=Collapsed}">
<TextBlock FontSize="10">Pending</TextBlock>
<TextBlock FontSize="10" Text="{x:Static prop:Resources.Pending}" />
</Border>
</StackPanel>

Expand Down Expand Up @@ -216,10 +216,9 @@
<Button Command="{Binding CommitEdit}" Content="{Binding CommitCaption}"/>
<Button Margin="4 0 0 0"
Command="{Binding StartReview}"
Visibility="{Binding CanStartReview, Converter={ui:BooleanToVisibilityConverter}}">
Start a review
</Button>
<Button Margin="4 0 0 0" Command="{Binding CancelEdit}">Cancel</Button>
Content="{x:Static prop:Resources.StartAReview}"
Visibility="{Binding CanStartReview, Converter={ui:BooleanToVisibilityConverter}}"/>
<Button Margin="4 0 0 0" Command="{Binding CancelEdit}" Content="{x:Static prop:Resources.Cancel}"/>
</StackPanel>
</Grid>
</Grid>
Expand Down
Loading