private void CreateThreadForSync(object translationJob)
 {
     try
     {
         string result = "";
         cc.ExecuteQuery();
         TranslationItemInfo itemInfo = ((ClientResult <TranslationItemInfo>)translationJob).Value;
         result += "DateTime.Now \n";
         result += "Input: " + itemInfo.InputFile + "\n";
         result += "Output: " + itemInfo.OutputFile + "\n";;
         result += "ErrorMessage: " + itemInfo.ErrorMessage + "\n";
         result += "TranslationId: " + itemInfo.TranslationId + "\n";
         result += "JobStatus....\n";
         result += "Succeeded: " + itemInfo.Succeeded + "\n";
         result += "Failed: " + itemInfo.Failed + "\n";
         result += "Canceled: " + itemInfo.Canceled + "\n";
         result += "InProgress: " + itemInfo.InProgress + "\n";
         result += "NotStarted: " + itemInfo.NotStarted + "\n";
         result += DateTime.Now + "\n";
         result += "Done";
         DispatcherOperation dop = Dispatcher.BeginInvoke(new Action <string>(PrintResult), result);
     }
     catch (Exception e)
     {
         DispatcherOperation dop = Dispatcher.BeginInvoke(new Action <string>(PrintResult), e.ToString());
     }
 }
    /// <summary>
    /// submit a sync job to translate a file
    /// </summary>
    /// <param name="culture">target langauge</param>
    /// <param name="input">full URL of input file on SharePoint</param>
    /// <param name="output">full URL of output file on SharePoint</param>
    static void AddSyncFile(string culture, string input, string output)
    {
        SyncTranslator job = createSyncTranslationJob(culture);

        Console.WriteLine("Adding files");
        Console.WriteLine("Input: " + input);
        Console.WriteLine("Output: " + output);
        TranslationItemInfo itemInfo = job.Translate(input, output);

        Console.WriteLine("Targetlang: {0}", job.TargetLanguage.Name);
        Console.WriteLine("OutputSaveBehavior: {0}", job.OutputSaveBehavior.ToString());
        PrintItemInfo(itemInfo);
    }
    /// <summary>
    /// submit a sync job to translate stream
    /// the input file will be converted to stream and send to translation
    /// </summary>
    /// <param name="culture">target langauge</param>
    /// <param name="input">input file location (not on SharePoint)</param>
    /// <param name="output">output file location (not on SharePoint)</param>
    /// <param name="fileFormat">file extension of the input file</param>
    static void AddSyncStream(string culture, string input, string output, string fileFormat)
    {
        SyncTranslator      job          = createSyncTranslationJob(culture);
        FileStream          inputStream  = new FileStream(input, FileMode.Open);
        FileStream          outputStream = new FileStream(output, FileMode.Create);
        TranslationItemInfo itemInfo     = job.Translate(inputStream, outputStream, fileFormat);

        Console.WriteLine("Targetlang: {0}", job.TargetLanguage.Name);
        Console.WriteLine("OutputSaveBehavior: {0}", job.OutputSaveBehavior.ToString());
        PrintItemInfo(itemInfo);
        inputStream.Close();
        outputStream.Flush();
        outputStream.Close();
    }
 static void PrintItemInfo(TranslationItemInfo itemInfo)
 {
     Console.WriteLine("Input: " + itemInfo.InputFile);
     Console.WriteLine("Output: " + itemInfo.OutputFile);
     Console.WriteLine("StartTime: " + itemInfo.StartTime);
     Console.WriteLine("CompleteTime: " + itemInfo.CompleteTime);
     Console.WriteLine("ErrorMessage: " + itemInfo.ErrorMessage);
     Console.WriteLine("TranslationId: " + itemInfo.TranslationId);
     Console.WriteLine("JobStatus....");
     Console.WriteLine("Succeeded: " + itemInfo.Succeeded);
     Console.WriteLine("Failed: " + itemInfo.Failed);
     Console.WriteLine("Canceled: " + itemInfo.Canceled);
     Console.WriteLine("InProgress: " + itemInfo.InProgress);
     Console.WriteLine("NotStarted: " + itemInfo.NotStarted);
 }
    /// <summary>
    /// submit a sync job to translate array of bytes
    /// the input file will be converted to array of bytes and send to translation
    /// </summary>
    /// <param name="culture">target langauge</param>
    /// <param name="input">input file location (not on SharePoint)</param>
    /// <param name="output">output file location (not on SharePoint)</param>
    /// <param name="fileFormat">file extension of the input file</param>
    static void AddSyncByte(string culture, string input, string output, string fileFormat)
    {
        SyncTranslator job = createSyncTranslationJob(culture);

        Byte[] inputByte;
        Byte[] outputByte;
        inputByte  = File.ReadAllBytes(input);
        outputByte = null;
        TranslationItemInfo itemInfo = job.Translate(inputByte, out outputByte, fileFormat);

        Console.WriteLine("Targetlang: {0}", job.TargetLanguage.Name);
        Console.WriteLine("OutputSaveBehavior: {0}", job.OutputSaveBehavior.ToString());
        PrintItemInfo(itemInfo);
        Console.WriteLine("Writing to output file");
        FileStream   outputStream = File.Open(output, FileMode.Create);
        MemoryStream memoryStream = new MemoryStream(outputByte);

        memoryStream.WriteTo(outputStream);
        outputStream.Flush();
        outputStream.Close();
    }
 static void PrintItemInfo(TranslationItemInfo itemInfo)
 {
     Console.WriteLine("Input: " + itemInfo.InputFile);
     Console.WriteLine("Output: " + itemInfo.OutputFile);
     Console.WriteLine("StartTime: " + itemInfo.StartTime);
     Console.WriteLine("CompleteTime: " + itemInfo.CompleteTime);
     Console.WriteLine("ErrorMessage: " + itemInfo.ErrorMessage);
     Console.WriteLine("TranslationId: " + itemInfo.TranslationId);
     Console.WriteLine("JobStatus....");
     Console.WriteLine("Succeeded: " + itemInfo.Succeeded);
     Console.WriteLine("Failed: " + itemInfo.Failed);
     Console.WriteLine("Canceled: " + itemInfo.Canceled);
     Console.WriteLine("InProgress: " + itemInfo.InProgress);
     Console.WriteLine("NotStarted: " + itemInfo.NotStarted);
 }