Ashampoo.Translation.Systems.Formats 4.0.1-prerelease.1

Prefix Reserved
This is a prerelease version of Ashampoo.Translation.Systems.Formats.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Ashampoo.Translation.Systems.Formats --version 4.0.1-prerelease.1                
NuGet\Install-Package Ashampoo.Translation.Systems.Formats -Version 4.0.1-prerelease.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Ashampoo.Translation.Systems.Formats" Version="4.0.1-prerelease.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Ashampoo.Translation.Systems.Formats --version 4.0.1-prerelease.1                
#r "nuget: Ashampoo.Translation.Systems.Formats, 4.0.1-prerelease.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Ashampoo.Translation.Systems.Formats as a Cake Addin
#addin nuget:?package=Ashampoo.Translation.Systems.Formats&version=4.0.1-prerelease.1&prerelease

// Install Ashampoo.Translation.Systems.Formats as a Cake Tool
#tool nuget:?package=Ashampoo.Translation.Systems.Formats&version=4.0.1-prerelease.1&prerelease                

Ashampoo-Translation-Systems-Formats

This package provides the implementation of several translation file formats, such as PO and Json, for the Ashampoo Translation Studio.

Installation

To use the system, you need to install the following dependencies from NuGet:

Ashampoo.Translation.Systems.Formats
If you only want to use specific formats, you can install the corresponding packages directly.

To register all your installed formats with the IServiceCollection, you need to call the following methods:

using Ashampoo.Translation.Systems.Formats.Abstractions;

services.RegisterFormats();

If you want to register only specific formats, you can register them manually with your IServiceCollection:

using Ashampoo.Translation.Systems.Formats.Abstractions;

services.AddFormatFactory();
services.RegisterFormat<MyFormat>();

NOTE: If you want to register multiple formats individually, you only need to call services.AddFormatFactory() once.

Supported Formats

AshLang

AshLang is a file format for storing translations with their english original text.
An AshLang file is a binary file.
We recommend not to use this format for storing translations, because it is an internal format of Ashampoo,
and is not human-readable.

Gengo

The Gengo format is a simple format for storing translations.
It is meant to be used for sending it to Gengo for translating.
Gengo is based on Excel (.xlsx) and has a specific structure:

[[[ ID ]]] source target
[[[ first id ]]] first source first target
[[[ second id ]]] second source second target
[[[ third id ]]] third source third target

As you can see, the ids are always in the first column and the source and target are in the second and third columns. Also, the ids are inside of 3 square brackets.
This is because Gengo doesn't translates strings that are in three square brackets.

Json

The Json format is a simple format for storing translations.
It is a JSON file with the following structure:

{
  "first id": "first target",
  "second id": "second target",
  "third id": "third target"
}

Json also supports nested objects:

{
  "first id": "first target",
  "second id": "second target",
  "third id": {
    "first nested id": "first nested target",
    "second nested id": "second nested target",
    "third nested id": "third nested target"
  }
}

The id for translations in nested objects is constructed by concatenating the ids of the parent objects with a / .
For example, the id for the first nested id is third id/first nested id.

Additionally, arrays are supported:

{
  "first id": [
    "first target",
    "second target",
    "third target"
  ]
}

The id for translations in arrays is constructed by concatenating the id of the parent object with a / and the index of the array.
For example, the id for the first target is first id/0.

NLang

NLang is a simple key-value format.

firstId=firstTarget
secondId=secondTarget
thirdId=thirdTarget

PO

The PO format is a simple format for storing translations.
It is a text file with the following structure:

msgid "first source"
msgstr "first target"

msgid "second source"
msgstr "second target"

msgid "third source"
msgstr "third target"

Po files can also contain comments, and context.
Both can be used to store additional information about the translation.
At the moment, context and comments in files are accepted as inputs, but are not properly handled.
If a translation has a context, the id of the translation is constructed by concatenating the context with a / and the id.
For the full documentation of the PO format, see the GNU gettext manual.

Resx

The Resx format is a simple format for storing translations.
It is a XML file with the following structure:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <data name="first id">
    <value>first target</value>
  </data>
  <data name="second id">
    <value>second target</value>
  </data>
  <data name="third id">
    <value>third target</value>
  </data>
</root>

For more information about the Resx format, see the Microsoft documentation.

TsProj

TsProj is a file format for storing translation strings in a .tsproj file.
It is a xml based format, intended to use with the Ashampoo Translation Studio, with the following structure:

<?xml version="1.0" encoding="utf-8"?>
<project name="My Project" version="1.0" author="Author" mail="author@email.com" source_language="source_language"
target_language="target_language">
    <component pluginguid="{F0D8F625-2EE3-4C84-96EC-BFBDD4946878}">
        <translation id="first id">
            <comment>first comment</comment>
            <source>first source</source>
            <target>first target</target>
        </translation>
        <translation id="second id">
            <comment>second comment</comment>
            <source>second source</source>
            <target>second target</target>
        </translation>
        <translation id="third id">
            <comment>third comment</comment>
            <source>third source</source>
            <target>third target</target>
        </translation>
    </component>
</project>

License

This project is licensed under the MIT license.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
5.0.1 217 9/30/2024
5.0.0 240 9/25/2024
4.1.6 98 9/24/2024
4.1.5-prerelease.1 65 9/18/2024
4.1.4 168 9/9/2024
4.1.3-prerelease.1 55 9/9/2024
4.1.2-prerelease.1 64 9/9/2024
4.1.1-prerelease.1 60 9/6/2024
4.1.0-prerelease.3 52 9/6/2024
4.0.9 371 5/14/2024
4.0.8 152 4/30/2024
4.0.7 100 4/18/2024
4.0.6 271 2/28/2024
4.0.4-prerelease.1 61 2/22/2024
4.0.3-prerelease.1 65 2/22/2024
4.0.2-prerelease.2 60 2/22/2024
4.0.1-prerelease.1 69 2/21/2024
4.0.0-prerelease.1 63 2/21/2024
3.1.1 534 2/15/2023
3.1.0 473 11/23/2022
3.0.0 472 11/15/2022
2.3.0 589 10/20/2022
2.2.1 557 10/12/2022
2.2.0 584 9/8/2022
2.1.1 560 9/7/2022
2.1.0-prerelease.15 110 9/7/2022
2.0.0-prerelease.66 106 9/2/2022
1.1.1-prerelease.12 116 8/31/2022
1.1.0-prerelease.3 89 8/30/2022