Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Introduction

The import of a TMX file using Congree's REST API is a three-step process:

  1. Upload the TMX file
  2. Acquire an ID for the import process
  3. Import the TMX

Each of those steps is supported by a corresponding endpoint.


Uploading a TMX

The following sample method demonstrates how to upload a TMX file.

Codeblock
languagec#
linenumberstrue
 public TmxUploadResponse UploadTmx(string path)
        {
            var client = new RestClient(this.serverUrl  + uploadTmxUrl);
           
            var request = new RestRequest(Method.POST);
            request.AddHeader("accept", "*/*");
            request.AddHeader("Content-Type", "multipart/form-data");
            request.AddHeader("authorization", "Bearer " + this.token);
            request.AlwaysMultipartFormData = true;
            
            request.AddFile("file", path);

            try
            {
              
                var cancellationTokenSource = new CancellationTokenSource();
                var response = client.Execute(request);

                Console.WriteLine(response.StatusCode);

                ResponseStatus status = response.ResponseStatus;
                if (status == RestSharp.ResponseStatus.Completed)
                {
                    TmxUploadResponse uploadResponse = JsonConvert.DeserializeObject<TmxUploadResponse>(response.Content);
                    return uploadResponse;
                }
                else
                {
                    return new TmxUploadResponse();
                }

            }
            catch (Exception ex)
            {
                return new TmxUploadResponse();
            }
        }


The only parameter the method expcects is the full path to the TMX file to be uploaded. The method returns a TMXUploadResponse shown in the code below.


Codeblock
languagec#
linenumberstrue
using System;
using System.Collections.Generic;
using System.Text;

namespace TMXImporter.Congree
{
    public class TmxUploadResponse
    {
        public string Id { get; set; }
    }
}

The Id return by this object is needed in the next step.

Acquiring an ID for the import process


Before the actual import can start the uploaded TMX file must be processed by Congree Authoring Server. To get to know if the import process can be initiated it is required to get the corresponding information as shown in the code below.

Codeblock
languagec#
linenumberstrue
public TmxUploadResult GetTmxUploadResult(string id)
        {
            var client = new RestClient(this.serverUrl + this.taskUrl + id);

            var request = new RestRequest(Method.GET);
            request.AddHeader("content-type", "application/json");
            request.AddHeader("authorization", "Bearer " + this.token);

            IRestResponse response = client.Execute(request);

            TmxUploadResult uploadResult = JsonConvert.DeserializeObject<TmxUploadResult>(response.Content);

            return uploadResult;
        }

The parameter is the id obtained in the first step.

The method returns an instance of the TmxUploadResult class shown below.

Codeblock
languagec#
linenumberstrue
using System;
using System.Collections.Generic;
using System.Text;

namespace TMXImporter.Congree
{
   public class TmxUploadResult
    {
        public Result Result { get; set; }
    }

    public class Result
    {
        public string TmxId { get; set; }
        public string SourceCultures { get; set; }

        public List<string> Cultures { get; set; }
        public int TranslationUnitsCount { get; set; }
    }
}

The reponse will be used in the last step.

Importing the TMX file

A sample method is shown below.

Codeblock
languagec#
linenumberstrue
 public void ImportTmx(ImportTmxRequest importTmxRequest)
        {
            var client = new RestClient(this.serverUrl + this.importTmxUrl);
            var request = new RestRequest(Method.POST);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Authorization", "Bearer " + this.token);
            JsonSerializerSettings settings = new JsonSerializerSettings();
            settings.TypeNameHandling = TypeNameHandling.None;
            string serializedRequestJSON = JsonConvert.SerializeObject(importTmxRequest, settings);
            request.AddParameter("application/json", serializedRequestJSON, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
        }

The parameter the method is expecting is an instance of the class TmxRequest which is shown in the sample code below.

Codeblock
languagec#
linenumberstrue
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Text;

namespace TMXImporter.Congree
{
   public class ImportTmxRequest
    {
        public string TmxId { get; set; }
        public Dictionary<string,string> ImportedCultures { get; set; }
        [JsonExtensionData]
        public Dictionary<string, JToken> Rulesets { get; set; }
        public Boolean TrackTranslations { get; set; }

    }

   
}


PropertyDescription
TmxIdThe id obtained in the second step
ImportedCulturesThe cultures to be imported. The key value is a culture contained in the TMX file. The value id the culture in Congree's Authoring Memory.
RulesetsIf certain cultures should be checked during the import the mapping between the culture and the rule set is defined here. The key is the culture in the TMX file. The value is the name of the rule set to be applied for the actual culture.
TrackTranslationstbd