提交 f821e249 编写于 作者: M Manish Vasani

Address PR feedback

上级 286b8d2c
......@@ -2,10 +2,12 @@
using System;
using System.Collections.Concurrent;
using Roslyn.Utilities;
using System.Collections.Immutable;
namespace Microsoft.CodeAnalysis.FindUsages
{
using ReferenceInfoMap = ImmutableDictionary<string, ImmutableArray<string>>;
/// <summary>
/// Information about a symbol's reference that can be used for display and
/// navigation in an editor.
......@@ -14,8 +16,8 @@ internal sealed class SourceReferenceItem
{
// We can have only a handful of different values for ValueUsageInfo flags enum, so the maximum size of this dictionary is capped.
// So, we store this as a static dictionary which will be held in memory for the lifetime of the process.
private static readonly ConcurrentDictionary<ValueUsageInfo, MultiDictionary<string, string>> s_valueUsageInfoToReferenceInfoMap
= new ConcurrentDictionary<ValueUsageInfo, MultiDictionary<string, string>>();
private static readonly ConcurrentDictionary<ValueUsageInfo, ReferenceInfoMap> s_valueUsageInfoToReferenceInfoMap
= new ConcurrentDictionary<ValueUsageInfo, ReferenceInfoMap>();
/// <summary>
/// The definition this reference corresponds to.
......@@ -39,7 +41,7 @@ internal sealed class SourceReferenceItem
/// This entry indicates that the reference has additional value usage information which indicate
/// it is a read/write reference, such as say 'a++'.
/// </summary>
public MultiDictionary<string, string> ReferenceInfo { get; }
public ReferenceInfoMap ReferenceInfo { get; }
[Obsolete]
public SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, bool isWrittenTo)
......@@ -47,14 +49,14 @@ public SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, b
Definition = definition;
SourceSpan = sourceSpan;
IsWrittenTo = isWrittenTo;
ReferenceInfo = GetOrCreateReferenceInfo(ValueUsageInfo.None);
ReferenceInfo = ReferenceInfoMap.Empty;
}
public SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, MultiDictionary<string, string> referenceInfo)
public SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, ReferenceInfoMap referenceInfo)
{
Definition = definition;
SourceSpan = sourceSpan;
ReferenceInfo = referenceInfo ?? throw new ArgumentNullException(nameof(referenceInfo));
ReferenceInfo = referenceInfo ?? ReferenceInfoMap.Empty;
}
internal SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, ValueUsageInfo valueUsageInfo)
......@@ -63,18 +65,18 @@ internal SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan,
IsWrittenTo = valueUsageInfo.IsWrittenTo();
}
private static MultiDictionary<string, string> GetOrCreateReferenceInfo(ValueUsageInfo valueUsageInfo)
private static ReferenceInfoMap GetOrCreateReferenceInfo(ValueUsageInfo valueUsageInfo)
=> s_valueUsageInfoToReferenceInfoMap.GetOrAdd(valueUsageInfo, CreateReferenceInfo);
private static MultiDictionary<string, string> CreateReferenceInfo(ValueUsageInfo valueUsageInfo)
private static ReferenceInfoMap CreateReferenceInfo(ValueUsageInfo valueUsageInfo)
{
var referenceInfo = new MultiDictionary<string, string>();
foreach (var value in valueUsageInfo.ToLocalizableValues())
var referenceInfoMap = ReferenceInfoMap.Empty;
if (valueUsageInfo != ValueUsageInfo.None)
{
referenceInfo.Add(nameof(ValueUsageInfo), value);
referenceInfoMap = referenceInfoMap.Add(nameof(ValueUsageInfo), valueUsageInfo.ToLocalizableValues());
}
return referenceInfo;
return referenceInfoMap;
}
}
}
......@@ -299,7 +299,7 @@ private void OnSymbolEnd(SymbolAnalysisContext symbolEndContext, bool hasInvalid
}
// Report IDE0051 or IDE0052 based on whether the underlying member has any Write/WritableRef/NonReadWriteRef references or not.
var rule = !valueUsageInfo.IsWrittenTo() && !valueUsageInfo.IsNameReference() && !symbolsReferencedInDocComments.Contains(member)
var rule = !valueUsageInfo.IsWrittenTo() && !valueUsageInfo.IsNameOnly() && !symbolsReferencedInDocComments.Contains(member)
? s_removeUnusedMembersRule
: s_removeUnreadMembersRule;
......
......@@ -4,7 +4,6 @@
using System.Collections.Immutable;
using System.Linq;
using Microsoft.VisualStudio.Shell.TableControl;
using Roslyn.Utilities;
namespace Microsoft.VisualStudio.LanguageServices.FindUsages
{
......@@ -37,10 +36,10 @@ public override bool TryGetFilterItems(ITableEntryHandle entry, out IEnumerable<
return base.TryGetFilterItems(entry, out filterItems);
}
public abstract string GetDisplayStringForColumnValues(MultiDictionary<string, string>.ValueSet values);
protected abstract IEnumerable<string> SplitColumnDisplayValue(string displayValue);
public abstract string GetDisplayStringForColumnValues(ImmutableArray<string> values);
protected abstract ImmutableArray<string> SplitColumnDisplayValue(string displayValue);
protected static string JoinValues(MultiDictionary<string, string>.ValueSet values) => string.Join(", ", values.Order());
protected static IEnumerable<string> SplitAndTrimValue(string displayValue) => displayValue.Split(',').Select(v => v.Trim());
protected static string JoinValues(ImmutableArray<string> values) => string.Join(", ", values);
protected static ImmutableArray<string> SplitAndTrimValue(string displayValue) => displayValue.Split(',').Select(v => v.Trim()).ToImmutableArray();
}
}
......@@ -11,6 +11,7 @@
using Microsoft.CodeAnalysis.DocumentHighlighting;
using Microsoft.CodeAnalysis.Editor.FindUsages;
using Microsoft.CodeAnalysis.FindUsages;
using Microsoft.CodeAnalysis.PooledObjects;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem;
using Microsoft.VisualStudio.Shell.FindAllReferences;
......@@ -111,27 +112,41 @@ private abstract class AbstractTableDataSourceFindUsagesContext :
// tell us what the data sink is.
Debug.Assert(_tableDataSink != null);
// Initialize and update custom column states.
// Note that the TableControl.SetColumnStates is not dependent on order of the input column states.
// Initialize custom column states at start of the FAR query.
_customColumnTitleToStatesMap = GetInitialCustomColumnStates(findReferencesWindow.TableControl.ColumnStates, customColumns);
// Now update the custom columns' state/visibility in the FAR window.
// Note that the visibility of the custom column(s) can change only at two possible places:
// 1. FAR query start, i.e. below invocation to SetColumnStates and/or
// 2. First reference result which has a non-default custom column value
// (UpdateCustomColumnVisibility method below).
// Also note that the TableControl.SetColumnStates is not dependent on order of the input column states.
TableControl.SetColumnStates(_customColumnTitleToStatesMap.Values);
}
/// <summary>
/// Gets the initial column states.
/// Note that this method itself does not actually cause any UI/column updates,
/// but just computes and returns the new states.
/// </summary>
private static Dictionary<string, ColumnState2> GetInitialCustomColumnStates(
IReadOnlyList<ColumnState> allColumnStates,
ImmutableArray<AbstractFindUsagesCustomColumnDefinition> customColumns)
{
var customColumnStatesMap = new Dictionary<string, ColumnState2>(customColumns.Length);
var customColumnNames = new HashSet<string>(customColumns.Select(c => c.Name));
// Set the default visibility for each custom column.
// If there is an existing column state for the custom column, flip it to be non-visible by default at the start of FAR query.
// We do so because the column will have empty values for all results for a FAR query for certain cases such as types, literals, no references found case, etc.
// It is preferable to dynamically hide an empty column for such queries, and dynamically show the column if it has at least one non-default value.
// Compute the default visibility for each custom column.
// If there is an existing column state for the custom column, flip it to be non-visible
// by default at the start of FAR query.
// We do so because the column will have empty values for all results for a FAR query for
// certain cases such as types, literals, no references found case, etc.
// It is preferable to dynamically hide an empty column for such queries, and dynamically
// show the column if it has at least one non-default value.
foreach (ColumnState2 columnState in allColumnStates.Where(c => customColumnNames.Contains(c.Name)))
{
var newColumnState = new ColumnState2(columnState.Name, isVisible: false, columnState.Width,
columnState.SortPriority, columnState.DescendingSort, columnState.GroupingPriority);
columnState.SortPriority, columnState.DescendingSort, columnState.GroupingPriority);
customColumnStatesMap.Add(columnState.Name, newColumnState);
}
......@@ -311,7 +326,7 @@ protected async Task<(Guid, string projectName, SourceText)> GetGuidAndProjectNa
RoslynDefinitionBucket definitionBucket,
DocumentSpan documentSpan,
HighlightSpanKind spanKind,
MultiDictionary<string, string> customColumnsDataOpt)
ImmutableDictionary<string, ImmutableArray<string>> customColumnsDataOpt)
{
var document = documentSpan.Document;
var (guid, projectName, sourceText) = await GetGuidAndProjectNameAndSourceTextAsync(document).ConfigureAwait(false);
......@@ -321,36 +336,35 @@ protected async Task<(Guid, string projectName, SourceText)> GetGuidAndProjectNa
return new DocumentSpanEntry(
this, definitionBucket, documentSpan, spanKind,
projectName, guid, sourceText, classifiedSpansAndHighlightSpan, GetAggregatedCustomColumnsData());
projectName, guid, sourceText, classifiedSpansAndHighlightSpan, GetAggregatedCustomColumnsData(customColumnsDataOpt));
}
// Local functions.
ImmutableDictionary<string, string> GetAggregatedCustomColumnsData()
private ImmutableDictionary<string, string> GetAggregatedCustomColumnsData(ImmutableDictionary<string, ImmutableArray<string>> customColumnsDataOpt)
{
// Aggregate dictionary values to get column display values. For example, below input:
//
// {
// { "Column1", {"Value1", "Value2"} },
// { "Column2", {"Value3", "Value4"} }
// }
//
// will transform to:
//
// {
// { "Column1", "Value1, Value2" },
// { "Column2", "Value3, Value4" }
// }
if (customColumnsDataOpt == null || customColumnsDataOpt.Count == 0)
{
// Aggregate multidictionary values to get column display values. For example, below input:
//
// {
// { "Column1", {"Value1", "Value2"} },
// { "Column2", {"Value3", "Value4"} }
// }
//
// will transform to:
//
// {
// { "Column1", "Value1, Value2" },
// { "Column2", "Value3, Value4" }
// }
if (customColumnsDataOpt == null || customColumnsDataOpt.Count == 0)
{
return ImmutableDictionary<string, string>.Empty;
}
return customColumnsDataOpt.ToImmutableDictionary(
keySelector: kvp => kvp.Key,
elementSelector: kvp => GetCustomColumn(kvp.Key).GetDisplayStringForColumnValues(kvp.Value));
return ImmutableDictionary<string, string>.Empty;
}
return customColumnsDataOpt.ToImmutableDictionary(
keySelector: kvp => kvp.Key,
elementSelector: kvp => GetCustomColumn(kvp.Key).GetDisplayStringForColumnValues(kvp.Value));
// Local functions.
AbstractFindUsagesCustomColumnDefinition GetCustomColumn(string columnName)
=> (AbstractFindUsagesCustomColumnDefinition)TableControl.ColumnDefinitionManager.GetColumnDefinition(columnName);
}
......@@ -368,7 +382,7 @@ private TextSpan GetRegionSpanForReference(SourceText sourceText, TextSpan refer
sourceText.Lines[lastLineNumber].End);
}
private void UpdateCustomColumnsVisibility(MultiDictionary<string, string> customData)
private void UpdateCustomColumnsVisibility(ImmutableDictionary<string, ImmutableArray<string>> customData)
{
// Check if we have any custom reference data to display.
if (customData.Count == 0)
......@@ -377,52 +391,62 @@ private void UpdateCustomColumnsVisibility(MultiDictionary<string, string> custo
}
// Get the new column states corresponding to the custom columns to display for custom data.
List<ColumnState2> newColumnStatesOpt = null;
var newColumnStates = ArrayBuilder<ColumnState2>.GetInstance();
lock (Gate)
try
{
foreach (var customColumnName in customData.Keys)
lock (Gate)
{
// Get the matching custom column.
var customColumnDefinition = TableControl.ColumnDefinitionManager.GetColumnDefinition(customColumnName) as AbstractFindUsagesCustomColumnDefinition;
if (customColumnDefinition == null)
foreach (var customColumnName in customData.Keys)
{
Debug.Fail($"{nameof(SourceReferenceItem.ReferenceInfo)} has a key '{customColumnName}', but there is no exported '{nameof(AbstractFindUsagesCustomColumnDefinition)}' with this name.");
continue;
}
// Get the matching custom column.
var customColumnDefinition = TableControl.ColumnDefinitionManager.GetColumnDefinition(customColumnName) as AbstractFindUsagesCustomColumnDefinition;
if (customColumnDefinition == null)
{
Debug.Fail($"{nameof(SourceReferenceItem.ReferenceInfo)} has a key '{customColumnName}', but there is no exported '{nameof(AbstractFindUsagesCustomColumnDefinition)}' with this name.");
continue;
}
// Ensure that we flip the visibility to true for the custom column.
ColumnState2 newColumnStateOpt = null;
if (_customColumnTitleToStatesMap.TryGetValue(customColumnDefinition.Name, out var columnState))
{
if (!columnState.IsVisible)
// Ensure that we flip the visibility to true for the custom column.
// Note that the actual UI update happens outside the lock when we
// invoke "TableControl.SetColumnStates" below.
ColumnState2 newColumnStateOpt = null;
if (_customColumnTitleToStatesMap.TryGetValue(customColumnDefinition.Name, out var columnState))
{
newColumnStateOpt = new ColumnState2(columnState.Name, isVisible: true, columnState.Width,
columnState.SortPriority, columnState.DescendingSort, columnState.GroupingPriority);
if (!columnState.IsVisible)
{
newColumnStateOpt = new ColumnState2(columnState.Name, isVisible: true, columnState.Width,
columnState.SortPriority, columnState.DescendingSort, columnState.GroupingPriority);
}
}
else
{
newColumnStateOpt = customColumnDefinition.DefaultColumnState;
}
}
else
{
newColumnStateOpt = customColumnDefinition.DefaultColumnState;
}
if (newColumnStateOpt != null)
{
_customColumnTitleToStatesMap[customColumnDefinition.Name] = newColumnStateOpt;
if (newColumnStateOpt != null)
{
_customColumnTitleToStatesMap[customColumnDefinition.Name] = newColumnStateOpt;
newColumnStatesOpt = newColumnStatesOpt ?? new List<ColumnState2>();
newColumnStatesOpt.Add(newColumnStateOpt);
newColumnStates.Add(newColumnStateOpt);
}
}
}
}
// Update the column states if required.
if (newColumnStatesOpt != null)
// Update the column states if required.
if (newColumnStates.Count > 0)
{
// SetColumnStates API forces a switch to UI thread, so it should be safe to call
// from a background thread here.
// Also note that we will call it only once for each new custom column to add for
// each find references query - the lock above guarantees that newColumnStatesOpt is
// going to be non-null only for the first result that has a non-empty column value.
TableControl.SetColumnStates(newColumnStates);
}
}
finally
{
// SetColumnStates API forces a switch to UI thread, so it should be safe to call from a background thread here.
// Also note that we will call it only once for each new custom column to add for each find references query - the lock above guarantees that
// newColumnStatesOpt is going to be non-null only for the first result that has a non-empty column value.
TableControl.SetColumnStates(newColumnStatesOpt);
newColumnStates.Free();
}
}
......
......@@ -22,10 +22,10 @@ internal sealed class FindUsagesValueUsageInfoColumnDefinition : AbstractFindUsa
{
// We can have only a handful of different values for ValueUsageInfo flags enum, so the maximum size of the below dictionaries are capped.
// So, we store these as static dictionarys which will be held in memory for the lifetime of the process.
private static readonly ConcurrentDictionary<MultiDictionary<string, string>.ValueSet, string> s_constituentValuesToDisplayValuesMap
= new ConcurrentDictionary<MultiDictionary<string, string>.ValueSet, string>();
private static readonly ConcurrentDictionary<string, IEnumerable<string>> s_displayValueToConstituentValuesMap
= new ConcurrentDictionary<string, IEnumerable<string>>();
private static readonly ConcurrentDictionary<ImmutableArray<string>, string> s_constituentValuesToDisplayValuesMap
= new ConcurrentDictionary<ImmutableArray<string>, string>();
private static readonly ConcurrentDictionary<string, ImmutableArray<string>> s_displayValueToConstituentValuesMap
= new ConcurrentDictionary<string, ImmutableArray<string>>();
public const string ColumnName = nameof(ValueUsageInfo);
......@@ -42,9 +42,9 @@ internal sealed class FindUsagesValueUsageInfoColumnDefinition : AbstractFindUsa
public override string DisplayName => ServicesVSResources.Kind;
public override double DefaultWidth => 100.0;
public override string GetDisplayStringForColumnValues(MultiDictionary<string, string>.ValueSet values)
public override string GetDisplayStringForColumnValues(ImmutableArray<string> values)
=> s_constituentValuesToDisplayValuesMap.GetOrAdd(values, JoinValues);
protected override IEnumerable<string> SplitColumnDisplayValue(string displayValue)
protected override ImmutableArray<string> SplitColumnDisplayValue(string displayValue)
=> s_displayValueToConstituentValuesMap.GetOrAdd(displayValue, SplitAndTrimValue);
}
}
......@@ -66,7 +66,7 @@ public static ValueUsageInfo GetValueUsageInfo(this IOperation operation)
operation.Parent is ITypeOfOperation ||
operation.Parent is ISizeOfOperation)
{
return ValueUsageInfo.NameReference;
return ValueUsageInfo.NameOnly;
}
else if (operation.Parent is IArgumentOperation argumentOperation)
{
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Diagnostics;
using Microsoft.CodeAnalysis.PooledObjects;
namespace Microsoft.CodeAnalysis
{
......@@ -33,10 +34,11 @@ internal enum ValueUsageInfo
Reference = 0x0100,
/// <summary>
/// Represents a name reference that neither reads nor writes the underlying value.
/// For example, 'nameof(x)' does not read or write the underlying value stored in 'x'.
/// Represents a name-only reference that neither reads nor writes the underlying value.
/// For example, 'nameof(x)' or reference to a symbol 'x' in a documentation comment
/// does not read or write the underlying value stored in 'x'.
/// </summary>
NameReference = 0x1000,
NameOnly = 0x1000,
/// <summary>
/// Represents a value read and/or write.
......@@ -71,8 +73,8 @@ public static bool IsReadFrom(this ValueUsageInfo valueUsageInfo)
public static bool IsWrittenTo(this ValueUsageInfo valueUsageInfo)
=> (valueUsageInfo & ValueUsageInfo.Write) != 0;
public static bool IsNameReference(this ValueUsageInfo valueUsageInfo)
=> (valueUsageInfo & ValueUsageInfo.NameReference) != 0;
public static bool IsNameOnly(this ValueUsageInfo valueUsageInfo)
=> (valueUsageInfo & ValueUsageInfo.NameOnly) != 0;
public static string ToLocalizableString(this ValueUsageInfo value)
{
......@@ -82,16 +84,16 @@ public static string ToLocalizableString(this ValueUsageInfo value)
switch (value)
{
case ValueUsageInfo.Read:
return WorkspacesResources.Read;
return WorkspacesResources.ValueUsageInfo_Read;
case ValueUsageInfo.Write:
return WorkspacesResources.Write;
return WorkspacesResources.ValueUsageInfo_Write;
case ValueUsageInfo.Reference:
return WorkspacesResources.Reference;
return WorkspacesResources.ValueUsageInfo_Reference;
case ValueUsageInfo.NameReference:
return WorkspacesResources.NameReference;
case ValueUsageInfo.NameOnly:
return WorkspacesResources.ValueUsageInfo_NameOnly;
default:
Debug.Fail($"Unhandled value: '{value.ToString()}'");
......@@ -102,18 +104,23 @@ public static string ToLocalizableString(this ValueUsageInfo value)
public static bool IsSingleBitSet(this ValueUsageInfo valueUsageInfo)
=> (valueUsageInfo & (valueUsageInfo - 1)) == 0;
public static IEnumerable<string> ToLocalizableValues(this ValueUsageInfo valueUsageInfo)
public static ImmutableArray<string> ToLocalizableValues(this ValueUsageInfo valueUsageInfo)
{
if (valueUsageInfo != ValueUsageInfo.None)
if (valueUsageInfo == ValueUsageInfo.None)
{
foreach (ValueUsageInfo value in Enum.GetValues(typeof(ValueUsageInfo)))
return ImmutableArray<string>.Empty;
}
var builder = ArrayBuilder<string>.GetInstance();
foreach (ValueUsageInfo value in Enum.GetValues(typeof(ValueUsageInfo)))
{
if (value.IsSingleBitSet() && (valueUsageInfo & value) != 0)
{
if (value.IsSingleBitSet() && (valueUsageInfo & value) != 0)
{
yield return value.ToLocalizableString();
}
builder.Add(value.ToLocalizableString());
}
}
return builder.ToImmutableAndFree();
}
}
}
......@@ -327,12 +327,12 @@ public static SemanticModel GetOriginalSemanticModel(this SemanticModel semantic
case INameOfOperation _:
case ITypeOfOperation _:
case ISizeOfOperation _:
return ValueUsageInfo.NameReference;
return ValueUsageInfo.NameOnly;
}
if (node.IsPartOfStructuredTrivia())
{
return ValueUsageInfo.NameReference;
return ValueUsageInfo.NameOnly;
}
var usageInfo = ValueUsageInfo.Read;
......
......@@ -1052,15 +1052,6 @@ internal class WorkspacesResources {
}
}
/// <summary>
/// Looks up a localized string similar to NameReference.
/// </summary>
internal static string NameReference {
get {
return ResourceManager.GetString("NameReference", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Nested quantifier {0}.
/// </summary>
......@@ -1223,15 +1214,6 @@ internal class WorkspacesResources {
}
}
/// <summary>
/// Looks up a localized string similar to Read.
/// </summary>
internal static string Read {
get {
return ResourceManager.GetString("Read", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Refactoring Only.
/// </summary>
......@@ -1241,15 +1223,6 @@ internal class WorkspacesResources {
}
}
/// <summary>
/// Looks up a localized string similar to Reference.
/// </summary>
internal static string Reference {
get {
return ResourceManager.GetString("Reference", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to reference to undefined group.
/// </summary>
......@@ -1791,6 +1764,42 @@ internal class WorkspacesResources {
}
}
/// <summary>
/// Looks up a localized string similar to NameOnly.
/// </summary>
internal static string ValueUsageInfo_NameOnly {
get {
return ResourceManager.GetString("ValueUsageInfo_NameOnly", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Read.
/// </summary>
internal static string ValueUsageInfo_Read {
get {
return ResourceManager.GetString("ValueUsageInfo_Read", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Reference.
/// </summary>
internal static string ValueUsageInfo_Reference {
get {
return ResourceManager.GetString("ValueUsageInfo_Reference", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Write.
/// </summary>
internal static string ValueUsageInfo_Write {
get {
return ResourceManager.GetString("ValueUsageInfo_Write", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Variables captured:.
/// </summary>
......@@ -1818,15 +1827,6 @@ internal class WorkspacesResources {
}
}
/// <summary>
/// Looks up a localized string similar to Write.
/// </summary>
internal static string Write {
get {
return ResourceManager.GetString("Write", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [x-y] range in reverse order.
/// </summary>
......
......@@ -747,16 +747,16 @@
<data name="Refactoring_Only" xml:space="preserve">
<value>Refactoring Only</value>
</data>
<data name="NameReference" xml:space="preserve">
<value>NameReference</value>
<data name="ValueUsageInfo_NameOnly" xml:space="preserve">
<value>NameOnly</value>
</data>
<data name="Read" xml:space="preserve">
<data name="ValueUsageInfo_Read" xml:space="preserve">
<value>Read</value>
</data>
<data name="Reference" xml:space="preserve">
<data name="ValueUsageInfo_Reference" xml:space="preserve">
<value>Reference</value>
</data>
<data name="Write" xml:space="preserve">
<data name="ValueUsageInfo_Write" xml:space="preserve">
<value>Write</value>
</data>
</root>
\ No newline at end of file
......@@ -7,26 +7,11 @@
<target state="translated">Došlo k chybě při čtení zadaného konfiguračního souboru: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">Pouze refaktoring</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">Symbol {0} nepochází ze zdroje.</target>
......@@ -102,16 +87,31 @@
<target state="translated">Přidávání projektů se nepodporuje.</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Pracovní prostor není platný.</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Pracovní prostor není platný.</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'{0} není součástí pracovního prostoru.</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">Beim Lesen der angegebenen Konfigurationsdatei ist ein Fehler aufgetreten: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">Nur Refactoring</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">Symbol "{0}" ist nicht aus Quelle.</target>
......@@ -102,16 +87,31 @@
<target state="translated">Das Hinzufügen von Projekten wird nicht unterstützt.</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Arbeitsbereich ist nicht leer.</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Arbeitsbereich ist nicht leer.</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'"{0}" ist nicht Teil des Arbeitsbereichs.</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">Error al leer el archivo de configuración especificado: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">Solo refactorización</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">El símbolo "{0}" no procede del código fuente.</target>
......@@ -102,16 +87,31 @@
<target state="translated">No se admite la adición de proyectos.</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">El área de trabajo no está vacía.</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">El área de trabajo no está vacía.</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'{0}' no es parte del área de trabajo.</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">Une erreur s'est produite lors de la lecture du fichier de configuration spécifié : {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">Refactorisation uniquement</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">Le symbole "{0}" ne provient pas de la source.</target>
......@@ -102,16 +87,31 @@
<target state="translated">L'ajout de projets n'est pas pris en charge.</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">L'espace de travail n'est pas vide.</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">L'espace de travail n'est pas vide.</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'{0}' ne fait pas partie de l'espace de travail.</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">Si è verificato un errore durante la lettura del file di configurazione specificato: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">Solo refactoring</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">Il simbolo "{0}" non proviene dall'origine.</target>
......@@ -102,16 +87,31 @@
<target state="translated">L'aggiunta di progetti non è supportata.</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">L'area di lavoro non è vuota.</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">L'area di lavoro non è vuota.</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'{0}' non fa parte dell'area di lavoro.</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">指定した構成ファイルの読み取り中にエラーが発生しました: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">リファクタリングのみ</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">シンボル "{0}" は、ソースからではありません。</target>
......@@ -102,16 +87,31 @@
<target state="translated">プロジェクトの追加はサポートされていません。</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">ワークスペースが空ではありません。</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">ワークスペースが空ではありません。</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'{0}' はワークスペースの一部ではありません。</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">지정한 구성 파일을 읽는 동안 오류가 발생했습니다({0}).</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">리팩터링만</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">"{0}" 기호가 소스에 없습니다.</target>
......@@ -102,16 +87,31 @@
<target state="translated">프로젝트 추가가 지원되지 않습니다.</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">작업 영역이 비어 있지 않습니다.</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">작업 영역이 비어 있지 않습니다.</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'{0}'은(는) 작업 영역의 일부가 아닙니다.</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">Wystąpił błąd podczas odczytywania określonego pliku konfiguracji: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">Tylko refaktoryzacja</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">Symbol „{0}” nie pochodzi ze źródła.</target>
......@@ -102,16 +87,31 @@
<target state="translated">Dodawanie projektów nie jest obsługiwane.</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Obszar roboczy nie jest pusty.</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Obszar roboczy nie jest pusty.</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'Element „{0}” nie jest częścią obszaru roboczego.</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">Ocorreu um erro ao ler o arquivo de configuração especificado: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">Somente Refatoração</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">Símbolo "{0}" não é da fonte.</target>
......@@ -102,16 +87,31 @@
<target state="translated">Não há suporte para adicionar projetos.</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Espaço de trabalho não está vazio.</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Espaço de trabalho não está vazio.</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'"{0}" não é parte do espaço de trabalho.</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">Произошла ошибка при чтении указанного файла конфигурации: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">Только рефакторинг</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">Символ "{0}" не из источника.</target>
......@@ -102,16 +87,31 @@
<target state="translated">Добавление проектов не поддерживается.</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Рабочая область не пуста.</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Рабочая область не пуста.</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'"{0}" не является частью рабочей области.</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">Belirtilen yapılandırma dosyası okunurken bir hata oluştu: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">Sadece Yeniden Düzenlenme</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">"{0}" sembolü kaynağa ait değil.</target>
......@@ -102,16 +87,31 @@
<target state="translated">Projelerin eklenmesi desteklenmiyor.</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Çalışma alanı boş değil.</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">Çalışma alanı boş değil.</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'{0}' çalışma alanının parçası değildir.</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">读取指定的配置文件时出错: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">仅重构</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">符号“{0}”不是来自源。</target>
......@@ -102,16 +87,31 @@
<target state="translated">不支持添加项目。</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">工作区不为空。</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">工作区不为空。</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'“{0}”不是工作区的一部分。</target>
......
......@@ -7,26 +7,11 @@
<target state="translated">讀取指定的組態檔時發生錯誤: {0}</target>
<note />
</trans-unit>
<trans-unit id="NameReference">
<source>NameReference</source>
<target state="new">NameReference</target>
<note />
</trans-unit>
<trans-unit id="Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="Refactoring_Only">
<source>Refactoring Only</source>
<target state="translated">僅重構</target>
<note />
</trans-unit>
<trans-unit id="Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="Symbol_0_is_not_from_source">
<source>Symbol "{0}" is not from source.</source>
<target state="translated">符號 "{0}" 非來自來源。</target>
......@@ -102,16 +87,31 @@
<target state="translated">不支援新增專案。</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">工作區不是空的。</target>
<trans-unit id="ValueUsageInfo_NameOnly">
<source>NameOnly</source>
<target state="new">NameOnly</target>
<note />
</trans-unit>
<trans-unit id="Write">
<trans-unit id="ValueUsageInfo_Read">
<source>Read</source>
<target state="new">Read</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Reference">
<source>Reference</source>
<target state="new">Reference</target>
<note />
</trans-unit>
<trans-unit id="ValueUsageInfo_Write">
<source>Write</source>
<target state="new">Write</target>
<note />
</trans-unit>
<trans-unit id="Workspace_is_not_empty">
<source>Workspace is not empty.</source>
<target state="translated">工作區不是空的。</target>
<note />
</trans-unit>
<trans-unit id="_0_is_not_part_of_the_workspace">
<source>'{0}' is not part of the workspace.</source>
<target state="translated">'{0}' 不是工作區的一部分。</target>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册