提交 9c43de5e 编写于 作者: D David Poeschl

Status indicator for whether added type name binds

上级 0df804a7
......@@ -6,6 +6,8 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vs="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Shell.15.0"
xmlns:imaging="clr-namespace:Microsoft.VisualStudio.Imaging;assembly=Microsoft.VisualStudio.Imaging"
xmlns:imagecatalog="clr-namespace:Microsoft.VisualStudio.Imaging;assembly=Microsoft.VisualStudio.ImageCatalog"
Width="600"
MinWidth="600"
SizeToContent="Height"
......@@ -36,21 +38,31 @@
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label x:Name="TypeNameLabelName" Grid.Row="0" Padding="0,5,0,5" Content="{Binding ElementName=dialog, Path=TypeNameLabel}" />
<TextBox x:Name="TypeContentControl"
Grid.Row="1"
Margin="0,5,0,5"
MinHeight="19"
TextChanged="TypeContentControl_TextChanged"
AutomationProperties.LabeledBy="{Binding ElementName=TypeNameLabelName}"/>
<Label x:Name="ParameterNameLabelName" Grid.Row="2" Padding="0,5,0,5" Content="{Binding ElementName=dialog, Path=ParameterNameLabel}" />
<StackPanel Orientation="Horizontal" Grid.Row="2" Margin="0,5,0,5">
<imaging:CrispImage Moniker="{x:Static imagecatalog:KnownMonikers.StatusInformation}" Visibility="{Binding TypeIsEmptyImage, Mode=OneWay}"/>
<imaging:CrispImage Moniker="{x:Static imagecatalog:KnownMonikers.StatusError}" Visibility="{Binding TypeDoesNotParseImage, Mode=OneWay}"/>
<imaging:CrispImage Moniker="{x:Static imagecatalog:KnownMonikers.StatusOK}" Visibility="{Binding TypeBindsImage, Mode=OneWay}"/>
<imaging:CrispImage Moniker="{x:Static imagecatalog:KnownMonikers.StatusWarning}" Visibility="{Binding TypeDoesNotBindImage, Mode=OneWay}"/>
<TextBlock Padding="5 0 0 0" Grid.Row="2" x:Name="TypeBindsTextBlock"
Text="{Binding Path=TypeBindsDynamicStatus, Mode=OneWay}"/>
</StackPanel>
<Label x:Name="ParameterNameLabelName" Grid.Row="3" Padding="0,5,0,5" Content="{Binding ElementName=dialog, Path=ParameterNameLabel}" />
<TextBox x:Name="NameContentControl"
Grid.Row="3"
Grid.Row="4"
Margin="0,5,0,5"
AutomationProperties.LabeledBy="{Binding ElementName=ParameterNameLabelName}"/>
<Label x:Name="ParameterKindLabelName" Grid.Row="4" Content="{Binding ElementName=dialog, Path=ParameterKind}" />
<RadioButton x:Name="RequiredParameterRadioButton" Grid.Row="5" Margin="5" GroupName="ParameterKind" IsChecked="True" Content="{Binding ElementName=dialog, Path=Required}" />
<Grid Grid.Row="6" Margin="5">
<Label x:Name="ParameterKindLabelName" Grid.Row="5" Content="{Binding ElementName=dialog, Path=ParameterKind}" />
<RadioButton x:Name="RequiredParameterRadioButton" Grid.Row="6" Margin="5" GroupName="ParameterKind" IsChecked="True" Content="{Binding ElementName=dialog, Path=Required}" />
<Grid Grid.Row="7" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
......@@ -58,8 +70,8 @@
<RadioButton x:Name="OptionalParameterRadioButton" Grid.Column="0" GroupName="ParameterKind" VerticalContentAlignment="Center" Content="{Binding ElementName=dialog, Path=OptionalWithDefaultValue}" />
<TextBox x:Name="DefaultValue" Grid.Column="1" Margin="5,0,0,0" IsEnabled="{Binding IsChecked, ElementName=OptionalParameterRadioButton}"></TextBox>
</Grid>
<Label Grid.Row="7" Grid.Column="0" Grid.ColumnSpan="2" Content="{Binding ElementName=dialog, Path=ValueToInjectAtCallsites}" />
<Grid Grid.Row="8" Margin="5">
<Label Grid.Row="8" Grid.Column="0" Grid.ColumnSpan="2" Content="{Binding ElementName=dialog, Path=ValueToInjectAtCallsites}" />
<Grid Grid.Row="9" Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
......@@ -72,8 +84,8 @@
<TextBox x:Name="CallsiteValueTextBox" Grid.Column="1" Grid.Row="0" Margin="5,0,0,0" IsEnabled="{Binding IsChecked, ElementName=CallsiteValueRadioButton}" Text="{Binding CallsiteValue, Mode=TwoWay}"></TextBox>
<CheckBox x:Name="UseNamedArgumentButton" Grid.Row="1" Grid.ColumnSpan="2" Margin="25,5,0,0" Content="{Binding ElementName=dialog, Path=UseNamedArgument}" />
</Grid>
<RadioButton x:Name="IntroduceErrorRadioButton" Grid.Row="9" Margin="5,5,0,0" Grid.Column="0" GroupName="CallsiteKind" VerticalContentAlignment="Center" Content="{Binding ElementName=dialog, Path=IntroduceUndefinedTodoVariables}"/>
<RadioButton x:Name="OmitArgumentRadioButton" Grid.Row="10" Margin="5,10,0,0" GroupName="CallsiteKind" IsEnabled="{Binding IsChecked, ElementName=OptionalParameterRadioButton}" Content="{Binding ElementName=dialog, Path=OmitOnlyForOptionalParameters}" />
<RadioButton x:Name="IntroduceErrorRadioButton" Grid.Row="10" Margin="5,5,0,0" Grid.Column="0" GroupName="CallsiteKind" VerticalContentAlignment="Center" Content="{Binding ElementName=dialog, Path=IntroduceUndefinedTodoVariables}"/>
<RadioButton x:Name="OmitArgumentRadioButton" Grid.Row="11" Margin="5,10,0,0" GroupName="CallsiteKind" IsEnabled="{Binding IsChecked, ElementName=OptionalParameterRadioButton}" Content="{Binding ElementName=dialog, Path=OmitOnlyForOptionalParameters}" />
</Grid>
<StackPanel Grid.Row="1"
HorizontalAlignment="Right"
......
......@@ -60,7 +60,7 @@ private void OK_Click(object sender, RoutedEventArgs e)
_viewModel.CallSiteValue = CallsiteValueTextBox.Text;
_viewModel.UseNamedArguments = UseNamedArgumentButton.IsChecked ?? false;
if (_viewModel.TrySubmit(_viewModel.Document))
if (_viewModel.TrySubmit())
{
DialogResult = true;
}
......@@ -87,5 +87,10 @@ public TestAccessor(AddParameterDialog dialog)
public DialogButton CancelButton => _dialog.CancelButton;
}
private void TypeContentControl_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
{
_viewModel.SetCurrentTextAndUpdateBindingStatus(TypeContentControl.Text);
}
}
}
......@@ -5,11 +5,13 @@
#nullable enable
using System.Threading;
using System.Windows;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.LanguageServices;
using Microsoft.CodeAnalysis.Notification;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.VisualStudio.LanguageServices.Implementation.Utilities;
using Microsoft.VisualStudio.Utilities.Internal;
using Roslyn.Utilities;
namespace Microsoft.VisualStudio.LanguageServices.Implementation.ChangeSignature
......@@ -28,6 +30,12 @@ public AddParameterDialogViewModel(Document document, int insertPosition)
_notificationService = document.Project.Solution.Workspace.Services.GetService<INotificationService>();
_semanticModel = document.GetRequiredSemanticModelAsync(CancellationToken.None).WaitAndGetResult(CancellationToken.None);
TypeIsEmptyImage = Visibility.Visible;
TypeBindsImage = Visibility.Collapsed;
TypeDoesNotParseImage = Visibility.Collapsed;
TypeDoesNotBindImage = Visibility.Collapsed;
TypeBindsDynamicStatus = ServicesVSResources.Please_enter_a_type_name;
Document = document;
InsertPosition = insertPosition;
ParameterName = string.Empty;
......@@ -70,7 +78,7 @@ internal void UpdateTypeSymbol(string typeName)
TypeSymbol = _semanticModel.GetSpeculativeTypeInfo(InsertPosition, languageService.GetTypeNode(typeName), SpeculativeBindingOption.BindAsTypeOrNamespace).Type;
}
internal bool TrySubmit(Document document)
internal bool TrySubmit()
{
if (string.IsNullOrEmpty(_verbatimTypeName) || string.IsNullOrEmpty(ParameterName))
{
......@@ -78,13 +86,13 @@ internal bool TrySubmit(Document document)
return false;
}
if (!IsParameterTypeValid(_verbatimTypeName, document))
if (!IsParameterTypeSyntacticallyValid(_verbatimTypeName))
{
SendFailureNotification(ServicesVSResources.Parameter_type_contains_invalid_characters);
return false;
}
if (!IsParameterNameValid(ParameterName, document))
if (!IsParameterNameValid(ParameterName))
{
SendFailureNotification(ServicesVSResources.Parameter_name_contains_invalid_characters);
return false;
......@@ -98,15 +106,89 @@ private void SendFailureNotification(string message)
_notificationService?.SendNotification(message, severity: NotificationSeverity.Information);
}
private bool IsParameterTypeValid(string typeName, Document document)
internal void SetCurrentTextAndUpdateBindingStatus(string typeName)
{
var languageService = document.GetRequiredLanguageService<IChangeSignatureViewModelFactoryService>();
if (typeName.IsNullOrWhiteSpace())
{
TypeIsEmptyImage = Visibility.Visible;
TypeDoesNotParseImage = Visibility.Collapsed;
TypeDoesNotBindImage = Visibility.Collapsed;
TypeBindsImage = Visibility.Collapsed;
TypeBindsDynamicStatus = ServicesVSResources.Please_enter_a_type_name;
}
else
{
TypeIsEmptyImage = Visibility.Collapsed;
var languageService = Document.GetRequiredLanguageService<IChangeSignatureViewModelFactoryService>();
var type = _semanticModel.GetSpeculativeTypeInfo(InsertPosition, languageService.GetTypeNode(typeName), SpeculativeBindingOption.BindAsTypeOrNamespace).Type;
var typeParses = IsParameterTypeSyntacticallyValid(typeName);
if (!typeParses)
{
TypeDoesNotParseImage = Visibility.Visible;
TypeDoesNotBindImage = Visibility.Collapsed;
TypeBindsImage = Visibility.Collapsed;
TypeBindsDynamicStatus = ServicesVSResources.Type_name_does_not_parse_correctly;
}
else
{
var parameterTypeBinds = DoesTypeFullyBind(type);
TypeDoesNotParseImage = Visibility.Collapsed;
TypeBindsImage = parameterTypeBinds ? Visibility.Visible : Visibility.Collapsed;
TypeDoesNotBindImage = !parameterTypeBinds ? Visibility.Visible : Visibility.Collapsed;
TypeBindsDynamicStatus = parameterTypeBinds
? ServicesVSResources.Type_name_parses_correctly_and_is_recognized
: ServicesVSResources.Type_name_parses_correctly_but_is_not_recognized;
}
}
NotifyPropertyChanged(nameof(TypeBindsDynamicStatus));
NotifyPropertyChanged(nameof(TypeBindsImage));
NotifyPropertyChanged(nameof(TypeDoesNotBindImage));
NotifyPropertyChanged(nameof(TypeDoesNotParseImage));
NotifyPropertyChanged(nameof(TypeIsEmptyImage));
}
private bool IsParameterTypeSyntacticallyValid(string typeName)
{
var languageService = Document.GetRequiredLanguageService<IChangeSignatureViewModelFactoryService>();
return languageService.IsTypeNameValid(typeName);
}
private bool IsParameterNameValid(string identifierName, Document document)
private bool DoesTypeFullyBind(ITypeSymbol? type)
{
if (type == null || type.IsErrorType())
{
return false;
}
foreach (var typeArgument in type.GetTypeArguments())
{
if (typeArgument is ITypeParameterSymbol)
{
return false;
}
if (!DoesTypeFullyBind(typeArgument))
{
return false;
}
}
return true;
}
public string? TypeBindsDynamicStatus { get; set; }
public Visibility TypeBindsImage { get; set; }
public Visibility TypeDoesNotBindImage { get; set; }
public Visibility TypeDoesNotParseImage { get; set; }
public Visibility TypeIsEmptyImage { get; set; }
private bool IsParameterNameValid(string identifierName)
{
var languageService = document.GetRequiredLanguageService<ISyntaxFactsService>();
var languageService = Document.GetRequiredLanguageService<ISyntaxFactsService>();
return languageService.IsValidIdentifier(identifierName);
}
}
......
......@@ -1453,4 +1453,20 @@ I agree to all of the foregoing:</value>
<data name="Razor_CSharp_Language_Server_Client" xml:space="preserve">
<value>Razor C# Language Server Client</value>
</data>
<data name="Type_name_does_not_parse_correctly" xml:space="preserve">
<value>Type name does not parse correctly</value>
<comment>"Type" is the programming language concept</comment>
</data>
<data name="Type_name_parses_correctly_and_is_recognized" xml:space="preserve">
<value>Type name parses correctly and is recognized</value>
<comment>"Type" is the programming language concept</comment>
</data>
<data name="Type_name_parses_correctly_but_is_not_recognized" xml:space="preserve">
<value>Type name parses correctly but is not recognized</value>
<comment>"Type" is the programming language concept</comment>
</data>
<data name="Please_enter_a_type_name" xml:space="preserve">
<value>Please enter a type name</value>
<comment>"Type" is the programming language concept</comment>
</data>
</root>
\ No newline at end of file
......@@ -487,6 +487,11 @@
<target state="translated">Pozastaveno (počet úloh ve frontě: {0})</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">Upřednostňovat System.HashCode v GetHashCode</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">Nepoužitá hodnota se explicitně přiřadí nepoužité lokální hodnotě.</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">Angehalten ({0} Tasks in der Warteschlange)</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">"System.HashCode" in "GetHashCode" bevorzugen</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">Der nicht verwendete Wert wird explizit einer nicht verwendeten lokalen Variablen zugewiesen.</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">En pausa ({0} tareas en cola)</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">Preferir "System.HashCode" en "GetHashCode"</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">El valor sin usar se asigna explícitamente a una variable local sin usar</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">Suspendu ({0} tâches en file d'attente)</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">Préférer 'System.HashCode' dans 'GetHashCode'</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">La valeur inutilisée est explicitement affectée à une variable locale inutilisée</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">Sospeso ({0} attività in coda)</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">Preferisci 'System.HashCode' in 'GetHashCode'</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">Il valore inutilizzato viene assegnato in modo esplicito a una variabile locale inutilizzata</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">一時停止中 ({0} 個のタスクがキューにあります)</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">'GetHashCode' の 'System.HashCode' を優先する</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">未使用のローカルに未使用の値が明示的に割り当てられます</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">일시 중지됨(큐의 {0}개 작업)</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">'GetHashCode'에서 'System.HashCode' 선호</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">사용되지 않는 값이 사용되지 않는 로컬에 명시적으로 할당됩니다.</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">Wstrzymano (zadania w kolejce: {0})</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">Preferuj element „System.HashCode” w metodzie „GetHashCode”</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">Nieużywana wartość jest jawnie przypisywana do nieużywanej zmiennej lokalnej</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">Em pausa ({0} tarefas na fila)</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">Prefira 'System.HashCode' em 'GetHashCode'</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">O valor não utilizado é explicitamente atribuído a um local não utilizado</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">Приостановлено (задач в очереди: {0})</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">Предпочитать "System.HashCode" в "GetHashCode"</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">Неиспользуемое значение явным образом задано неиспользуемой локальной переменной.</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">Duraklatıldı (kuyrukta {0} görev var)</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">'GetHashCode' içinde 'System.HashCode' tercih et</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">Kullanılmayan değer açıkça kullanılmayan bir yerele atandı</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">已暂停(队列中有 {0} 个任务)</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">在 "GetHashCode" 中首选 "System.HashCode"</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">未使用的值会显式分配给未使用的本地函数</target>
......
......@@ -487,6 +487,11 @@
<target state="translated">已暫停 (佇列中的 {0} 工作)</target>
<note />
</trans-unit>
<trans-unit id="Please_enter_a_type_name">
<source>Please enter a type name</source>
<target state="new">Please enter a type name</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Prefer_System_HashCode_in_GetHashCode">
<source>Prefer 'System.HashCode' in 'GetHashCode'</source>
<target state="translated">建議在 'GetHashCode' 中使用 'System.HashCode'</target>
......@@ -657,6 +662,21 @@
<target state="new">Type name:</target>
<note />
</trans-unit>
<trans-unit id="Type_name_does_not_parse_correctly">
<source>Type name does not parse correctly</source>
<target state="new">Type name does not parse correctly</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_and_is_recognized">
<source>Type name parses correctly and is recognized</source>
<target state="new">Type name parses correctly and is recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Type_name_parses_correctly_but_is_not_recognized">
<source>Type name parses correctly but is not recognized</source>
<target state="new">Type name parses correctly but is not recognized</target>
<note>"Type" is the programming language concept</note>
</trans-unit>
<trans-unit id="Unused_value_is_explicitly_assigned_to_an_unused_local">
<source>Unused value is explicitly assigned to an unused local</source>
<target state="translated">未使用的值已明確指派至未使用的區域</target>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册