示例#1
0
 public static void cancelOper2(LocPageGroup group, Langs transLang) {
   TradosDT.TradosDB db = TradosDT.TradosDB.getTradosContext();
   foreach (int pageId in db.Pages.Where(p => p.PageGroup == (short)group).Select(p => p.Id))
     db.Sentences.RemoveRange(db.Sentences.Where(s2 => s2.PageId == pageId && s2.TransLang == (short)transLang));
   db.SaveChanges();
 }
示例#2
0
    /// <summary>
    /// Import RESX souboru do databaze
    /// </summary>
    //public static IEnumerable<string> oper1(LocPageGroup grp) {
    //  LocCfgPageGroupFilter group = LocCfg.Instance().findPageGroup(grp);
    //  //RESX soubory 
    //  List<string> files = getFiles(new LocPageGroup[] { grp }).Where(s => hasResxFile(s)).Select(s => resxFileName(s)).ToList();
    //  if (File.Exists(group.GlobalResourcePath)) files.Add(group.GlobalResourcePath);
    //  if (File.Exists(group.GlobalResourcePathJS)) files.Add(group.GlobalResourcePathJS);
    //  //vsechny stranky grupy k vymazani
    //  List<int> deletePageIds = TradosDT.TradosDB.getTradosContext(false).Pages.Where(p => p.PageGroup == (short)grp).Select(p => p.Id).ToList();
    //  foreach (string fn in files.Where(f => File.Exists(f))) {
    //    TradosDT.TradosDB db = TradosDT.TradosDB.getTradosContext();
        
    //    //Adjustace stranky
    //    TradosDT.Page page = db.Pages.Where(pg => pg.FileName == fn).SingleOrDefault();
    //    if (page == null) { //nova stranka
    //      page = new TradosDT.Page();
    //      db.Pages.Add(page);
    //    } else { //stranka existuje: vymaz vety
    //      //odstran stranku ze stranek k vymazani
    //      deletePageIds.Remove(page.Id);
    //      //Vymazani vsech vet ke strance:
    //      TradosDT.TradosDB pomDb = TradosDT.TradosDB.getTradosContext();
    //      pomDb.CommandTimeout = 1000000;
    //      pomDb.ExecuteCommand("DELETE FROM Sentence WHERE pageid={0} and srclang={1}", page.Id, (short)Langs.no);
    //    }
    //    page.FileName = fn.ToLowerInvariant();
    //    page.PageGroup = (short)grp;
    //    page.SeeUrl = computeSeeUrl(group, page.FileName);
    //    page.Langs = group.fingLangFilter(fn);
    //    db.SaveChanges();
    //    StringBuilder sb = new StringBuilder();
    //    //Vety z resource:
    //    using (ResXResourceReader rdr = new ResXResourceReader(fn))
    //      foreach (System.Collections.DictionaryEntry de in rdr) {
    //        TradosDT.Sentence.insert(db, page.Id, (string)de.Key, null, Langs.no, normalizeXmlText(((string)de.Value).Replace("&nbsp;", "$nbsp;"), sb), group.PrimaryLang);
    //      }
    //    db.SaveChanges();
    //    //Odstraneni (**) zavorek ve zdrojovych resx
    //    string f = StringUtils.FileToString(fn);
    //    f = CSLocalize.transFinal(f);
    //    StringUtils.StringToFile(f, fn);

    //    yield return fn;
    //  }
    //  //Vymaz stranky pro neexistujici soubory
    //  TradosDT.TradosDB delDb = TradosDT.TradosDB.getTradosContext();
    //  foreach (int id in deletePageIds) {
    //    delDb.ExecuteCommand("DELETE FROM Sentence WHERE pageid={0}", id);
    //    delDb.ExecuteCommand("DELETE FROM Pages WHERE id={0}", id);
    //  }
    //}

    public static void oper2(LocPageGroup group, Langs transLang, bool adjustStrong) {
      TradosDT.TradosDB db = TradosDT.TradosDB.getTradosContext();
      if (db.Locks.Where(l => l.Locked && group == (LocPageGroup)l.PageGroup && l.Lang == (short)transLang).Any())
        throw new Exception("Jedna Skupin souborů a Jazyka ja zablokována (locked). Nejdříve odblokujte na unlock.aspx stránce.");
      TradosLib.tradosOper2_forLang(group, transLang, adjustStrong);
    }
示例#3
0
 public static void oper3(LocPageGroup group, Langs transLang, bool doLock, List<LocCommand> commands, Stream str) {
   TradosDT.TradosDB db = TradosDT.TradosDB.getTradosContext();
   TradosDT.Lock lck = new TradosDT.Lock(); db.Locks.Add(lck);
   lck.Created = DateTime.UtcNow;
   lck.Lang = (short)transLang;
   lck.PageGroup = (short)group;
   lck.Locked = doLock;
   db.SaveChanges();
   TradosLib.ExportXml(group, transLang, str, commands);
 }
示例#4
0
    public static IEnumerable<exportCmlItem> ExportXmlItems(LocPageGroup grp, Langs transLang, List<LocCommand> filter) {
      Langs srcLang = LocCfg.Instance().findPageGroup(grp).FindSrcLang(transLang);
      TradosDT.TradosDB db = TradosDT.TradosDB.getTradosContext(false);
      foreach (TradosDT.Page pg in db.Pages.Where(p => p.PageGroup == (short)grp))
        foreach (exportCmlItem item in ExportXmlItems(db, pg, srcLang, transLang, filter))
          yield return item;

    }
示例#5
0
 /// <summary>
 /// Najde info o grupe
 /// </summary>
 public LocCfgPageGroupFilter findPageGroup(LocPageGroup group) {
   foreach (LocCfgPageGroupFilter grp in Groups)
     if (grp.Group == group) return grp;
   throw new Exception("Missing Group in LocCfg for group: " + group.ToString());
 }
示例#6
0
 public static int ExportXml(LocPageGroup grp, Langs transLang, Stream xml, List<LocCommand> filter) {
   XElement pattern = XElement.Load(HostingEnvironment.ApplicationPhysicalPath + "app_data/TradosExcelPattern.xml", LoadOptions.PreserveWhitespace);
   XNamespace ad = "urn:schemas-microsoft-com:office:spreadsheet";
   XNamespace ss = "urn:schemas-microsoft-com:office:spreadsheet";
   XElement insertPoint = pattern.Descendants(ad + "Row").Single();
   Langs srcLang = LocCfg.Instance().findPageGroup(grp).FindSrcLang(transLang);
   int cnt = 0;
   foreach (var itemGroup in ExportXmlItems(grp, transLang, filter).GroupBy(it => it.SeeUrl)) {
     bool headerOK = false; //ridi pripravu prave jednoho radku s URL adresou na grupu
     foreach (exportCmlItem item in itemGroup) {
       if (!headerOK) {
         headerOK = true;
         insertPoint.AddAfterSelf(
           new XElement(ad + "Row",
             string.IsNullOrEmpty(itemGroup.Key)/*!isUrl(itemGroup.Key)*/ ? null : new XElement(ad + "Cell",
               new XAttribute(ss + "Index", 2),
               new XAttribute(ss + "StyleID", "s71"),
               new XAttribute(ss + "HRef", dataPath(itemGroup.Key, transLang, grp)),
               new XElement(ad + "Data",
                 new XAttribute(ss + "Type", "String"),
                 "GOTO Translation"
               )
             ),
             string.IsNullOrEmpty(itemGroup.Key)/*!isUrl(itemGroup.Key)*/ ? null : new XElement(ad + "Cell",
               new XAttribute(ss + "Index", 3),
               new XAttribute(ss + "StyleID", "s71"),
               new XAttribute(ss + "HRef", dataPath(itemGroup.Key, srcLang, grp)),
               new XElement(ad + "Data",
                 new XAttribute(ss + "Type", "String"),
                 "GOTO Source"
               )
             ),
             new XElement(ad + "Cell",
               new XAttribute(ss + "Index", 4),
           //new XAttribute(ss + "StyleID", "s71"),
               new XElement(ad + "Data",
                 new XAttribute(ss + "Type", "String"),
                 itemGroup.Key
               )
             )
           )
         );
         insertPoint = (XElement)insertPoint.NextNode;
       }
       cnt++;
       insertPoint.AddAfterSelf(
         new XElement(ad + "Row",
         //new XAttribute(ss + "AutoFitHeight", 1),
           new XElement(ad + "Cell",
             new XElement(ad + "Data",
               new XAttribute(ss + "Type", "String"),
               item.actCmd.ToString()
             )
           ),
           new XElement(ad + "Cell",
             new XElement(ad + "Data",
               new XAttribute(ss + "Type", "String"),
               HttpUtility.HtmlDecode(item.TransText)
             )
           ),
           new XElement(ad + "Cell",
             new XElement(ad + "Data",
               new XAttribute(ss + "Type", "String"),
               HttpUtility.HtmlDecode(item.NewSrcText)
             )
           ),
           new XElement(ad + "Cell",
             new XElement(ad + "Data",
               new XAttribute(ss + "Type", "String"),
               HttpUtility.HtmlDecode(item.OldSrcText)
             )
           ),
           new XElement(ad + "Cell",
             new XElement(ad + "Data",
               new XAttribute(ss + "Type", "Number"),
               item.Id
             )
           )
         )
       );
       insertPoint = (XElement)insertPoint.NextNode;
     }
   }
   string output = pattern.ToString(SaveOptions.DisableFormatting);
   output = @"<?xml version=""1.0""?><?mso-application progid=""Excel.Sheet""?>" + output.Replace(crlfCode, "&#10;");
   byte[] outputByte = Encoding.UTF8.GetBytes(output);
   xml.Write(outputByte, 0, outputByte.Length);
   return cnt;
 }
示例#7
0
 public GenResxContext(LocPageGroup grp) {
   this.grp = grp;
 }
示例#8
0
 static string dataPath(Langs lang, LocPageGroup grp) {
   if (grp.ToString().IndexOf("EA") == 0) {
     string prefix = "http://test.langmaster.cz/";
     switch (lang) {
       case Langs.cs_cz: return prefix + "eduauthornew/";
       default:
         string lng = lang.ToString().Substring(3);
         return prefix + "com" + lng + "/";
     }
   } else {
     return "http://test.langmaster.cz/lmcom/com/" + lang.ToString().Replace('_', '-') + "/";
   }
 }
示例#9
0
 public static void AutoTranslate(LocPageGroup grp, Langs transLang, StringBuilder log) {
   List<LocCommand> filter = new List<LocCommand>(); filter.Add(LocCommand.OK);
   StringBuilder sb = new StringBuilder();
   foreach (exportCmlItem item in ExportXmlItems(grp, transLang, filter)) {
     TradosDT.TradosDB db = TradosDT.TradosDB.getTradosContext();
     TradosDT.Sentence sent = db.Sentences.Where(s => s.Id == item.Id).Single();
     string srcText = item.NewSrcText;
     string transText = item.TransText;
     if (!checkTrans(item.Id, ref srcText, ref transText, sb, log)) continue;
     string oldTransText = sent.TransText;
     sent.SrcText = srcText;
     sent.TransText = transText;
     sent.finish();
     RefreshLookup(db, sent, excelTextToXmlText(item.oldSrcText, log), oldTransText, sb, log);
     db.SaveChanges();
   }
 }
示例#10
0
 public static void tradosOper2_forLang(LocPageGroup grp, Langs transLang, bool isAutoTrans) {
   LocCfgPageGroupFilter group = LocCfg.Instance().findPageGroup(grp);
   Langs srcLang = group.FindSrcLang(transLang);
   foreach (int pageId in TradosDT.TradosDB.getTradosContext().Pages.
       Where(p => p.PageGroup == (short)grp && (p.Langs == null || p.Langs.Contains(transLang.ToString()))).
       Select(p => p.Id)) {
     TradosDT.TradosDB db = TradosDT.TradosDB.getTradosContext();
     if (Machines.sb != null) Machines.sb.Length = 0;
     //Name vsech zdrojovych vet
     var srcIds = db.Sentences.Where(s => s.PageId == pageId && s.TransLang == (short)srcLang).Select(s => s.Name).ToArray();
     //Vsechny doposud pripravene vety
     var oldSents = db.Sentences.Where(s2 => s2.PageId == pageId && s2.TransLang == (short)transLang).ToArray();
     //Vymaz nepotrebne vety (neboli prelozene vety, ktere nejsou ve zdroji)
     db.Sentences.RemoveRange(oldSents.Where(s => !srcIds.Contains(s.Name)));
     //Vsechny zdroje a lookup preklady
     var autoTrans = db.Sentences.
       Where(s => s.PageId == pageId && s.TransLang == (short)srcLang && s.TransText != null).
       Select(s => new {
         name = s.Name,
         srcText = s.TransText,
         transTexts = db.Lookups.Where(l => l.SrcLang == (short)srcLang && l.TransLang == (short)transLang && l.SrcHash == s.TransHash && l.SrcText == s.TransText).
           Select(l => l.TransText).ToArray()
       }).
       ToArray();
     //Vytvoreni novych nebo uprava starych vet
     foreach (string name in srcIds) { //pro vsechny potrebne vety
       TradosDT.Sentence sent;
       //if (name == "l09/a/hufex1_l09_a03/Ttrans5") 
       //  sent = null;
       try {
         sent = oldSents.Where(s => s.Name == name).SingleOrDefault(); //stara veta
       } catch (Exception exp) {
         throw new Exception(string.Format("oldSents.SingleOrDefault: name={0}, grp={1}, lang={2}", name, grp, transLang), exp);
       }
       try {
         var item = autoTrans.Where(at => at.name == name).SingleOrDefault(); //novy zdroj a ev. preklad z lookupu
         if (sent == null) { //zalozeni nove vety
           if (isAutoTrans && item != null && item.transTexts.Count() == 1) //existuje prave jeden lookup, dopln novy zdroj a preklad (veta DONE)
             TradosDT.Sentence.insert(db, pageId, name, item.srcText, (Langs)srcLang, item.transTexts.Single(), transLang);
           else //ne, nova veta je prezdna (TRANS)
             TradosDT.Sentence.insert(db, pageId, name, null, (Langs)srcLang, null, transLang);
         } else { //veta existuje
           if (isAutoTrans && item != null && item.transTexts.Count() == 1) { //existuje prave jeden lookup
             sent.SrcText = item.srcText; sent.TransText = item.transTexts.Single(); //aktualizuj vetu (veta DONE)
             sent.finish();
           }
         }
       } catch (Exception exp) {
         throw new Exception(string.Format("autoTrans.SingleOrDefault: name={0}, grp={1}, lang={2}", name, grp, transLang), exp);
       }
     }
     db.SaveChanges();
   }
 }
示例#11
0
 public static string dataPath(string seeUrl, Langs lang, LocPageGroup grp) {
   return string.Format(seeUrl, dataPath(lang, grp));
 }
示例#12
0
文件: TradosLib.cs 项目: PavelPZ/REW
 public static void cancelOper2(LocPageGroup group, Langs transLang) {
   Trados.TradosDataContext db = Machines.getTradosContext();
   foreach (int pageId in db.Pages.Where(p => p.PageGroup == (short)group).Select(p => p.Id))
     db.Sentences.DeleteAllOnSubmit(db.Sentences.Where(s2 => s2.PageId == pageId && s2.TransLang == (short)transLang));
   db.SubmitChanges();
 }
示例#13
0
文件: TradosLib.cs 项目: PavelPZ/REW
 public static void oper5(LocPageGroup group, Langs transLang) {
   TradosLib.GenerateResx(group, transLang);
 }
示例#14
0
文件: TradosLib.cs 项目: PavelPZ/REW
 public static void oper3(LocPageGroup group, Langs transLang, bool doLock, List<LocCommand> commands, Stream str) {
   Trados.TradosDataContext db = Machines.getTradosContext();
   Trados.Lock lck = new Trados.Lock(); db.Locks.InsertOnSubmit(lck);
   lck.Created = DateTime.UtcNow;
   lck.Lang = (short)transLang;
   lck.PageGroup = (short)group;
   lck.Locked = doLock;
   db.SubmitChanges();
   TradosLib.ExportXml(group, transLang, str, commands);
 }
示例#15
0
文件: TradosLib.cs 项目: PavelPZ/REW
    /// <summary>
    /// Import RESX souboru do databaze
    /// </summary>
    public static IEnumerable<string> oper1(LocPageGroup grp) {
      LocCfgPageGroupFilter group = LocCfg.Instance().findPageGroup(grp);
      //RESX soubory 
      List<string> files = getFiles(new LocPageGroup[] { grp }).Where(s => hasResxFile(s)).Select(s => resxFileName(s)).ToList();
      if (File.Exists(group.GlobalResourcePath)) files.Add(group.GlobalResourcePath);
      if (File.Exists(group.GlobalResourcePathJS)) files.Add(group.GlobalResourcePathJS);
      //vsechny stranky grupy k vymazani
      List<int> deletePageIds = Machines.getTradosContext(false).Pages.Where(p => p.PageGroup == (short)grp).Select(p => p.Id).ToList();
      foreach (string fn in files.Where(f => File.Exists(f))) {
        Trados.TradosDataContext db = Machines.getTradosContext();
        db.CommandTimeout = 1000000;
        //Adjustace stranky
        Trados.Page page = db.Pages.Where(pg => pg.FileName == fn).SingleOrDefault();
        if (page == null) { //nova stranka
          page = new Trados.Page();
          db.Pages.InsertOnSubmit(page);
        } else { //stranka existuje: vymaz vety
          //odstran stranku ze stranek k vymazani
          deletePageIds.Remove(page.Id);
          //Vymazani vsech vet ke strance:
          Trados.TradosDataContext pomDb = Machines.getTradosContext();
          pomDb.CommandTimeout = 1000000;
          pomDb.ExecuteCommand("DELETE FROM Sentence WHERE pageid={0} and srclang={1}", page.Id, (short)Langs.no);
        }
        page.FileName = fn.ToLowerInvariant();
        page.PageGroup = (short)grp;
        page.SeeUrl = computeSeeUrl(group, page.FileName);
        page.Langs = group.fingLangFilter(fn);
        db.SubmitChanges();
        StringBuilder sb = new StringBuilder();
        //Vety z resource:
        using (ResXResourceReader rdr = new ResXResourceReader(fn))
          foreach (System.Collections.DictionaryEntry de in rdr) {
            Trados.Sentence.insert(db, page.Id, (string)de.Key, null, Langs.no, normalizeXmlText(((string)de.Value).Replace("&nbsp;", "$nbsp;"), sb), group.PrimaryLang);
          }
        db.SubmitChanges();
        //Odstraneni (**) zavorek ve zdrojovych resx
        string f = StringUtils.FileToString(fn);
        f = transFinal(f);
        StringUtils.StringToFile(f, fn);

        yield return fn;
      }
      //Vymaz stranky pro neexistujici soubory
      Trados.TradosDataContext delDb = Machines.getTradosContext();
      foreach (int id in deletePageIds) {
        delDb.ExecuteCommand("DELETE FROM Sentence WHERE pageid={0}", id);
        delDb.ExecuteCommand("DELETE FROM Pages WHERE id={0}", id);
      }
    }
示例#16
0
文件: TradosLib.cs 项目: PavelPZ/REW
 /// <summary>
 /// Pro skupinu stranek a jazyk vygeneruje RESX soubory (nebo lokalizovany .JS soubor)
 /// </summary>
 public static void GenerateResx(LocPageGroup grp, Langs transLang) {
   Trados.TradosDataContext db = Machines.getTradosContext(false);
   foreach (Trados.Page pg in db.Pages.Where(p => p.PageGroup == (short)grp))
     GenerateResx(db, pg, transLang);
 }