File: Model\TranslatableNode.cs
Web Access
Project: Microsoft.DotNet.XliffTasks.csproj (Microsoft.DotNet.XliffTasks)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace XliffTasks.Model;

internal abstract class TranslatableNode
{
    protected TranslatableNode(string id, string source, string note)
    {
        Validation.ThrowIfNullOrEmpty(id, nameof(id));
        Validation.ThrowIfNullOrEmpty(source, nameof(source));

        Id = id;
        Source = source;
        Note = note;
    }

    /// <summary>
    /// The unique ID of the node within a translatable document.
    /// </summary>
    public string Id { get; }

    /// <summary>
    /// The original text of the node before any translation.
    /// </summary>
    public string Source { get; }

    /// <summary>
    /// A comment associated with the node.
    /// Null if this node cannot have comments, empty if it has none.
    /// </summary>
    public string Note { get; }

    /// <summary>
    /// Mutates the parent document such that subsequent calls to <see cref="TranslatableDocument.Save(System.IO.FileInfo)" />
    /// will replace <see cref="Source"/> with <paramref name="translation"/> in this node.
    /// </summary>
    public abstract void Translate(string translation);
}