public static void ToResX(ITranslationModule tp, string targetDir, string moduleName = null) { var byLanguage = tp.ByLanguage; moduleName = moduleName ?? tp.Name; ToResX(byLanguage[tp.MasterLanguage], targetDir + @"\" + moduleName + ".resx"); foreach (var l in tp.Languages) { if (l == tp.MasterLanguage) { continue; //we skip master language since we treated it already as a special case } IEnumerable <Segment> segments; if (byLanguage.Contains(l)) { segments = byLanguage[l]; } else { segments = Segment.EmptyFromTemplate(byLanguage[tp.MasterLanguage]); } if (segments.Count() > 0) { ToResX(segments, targetDir + @"\" + moduleName + "." + l + ".resx"); } } }
/// <summary> /// Proposes a resource key based on a translation message /// </summary> /// <param name="sentence"></param> /// <returns></returns> public static string KeyProposal(this ITranslationModule module, string sentence) { var words = sentence.Split(' '); StringBuilder keyBuilder = new StringBuilder(); int wordCount = 0; while (keyBuilder.Length / 2 < Math.Min(words.Length, 3)) { var word = words[wordCount++].ToUpper(); if (word.Contains("[") || word.Contains("]") || word.Contains("{") || word.Contains("}")) { continue; } keyBuilder.Append(word); keyBuilder.Append('_'); } string keyBase = keyBuilder.ToString().Replace(' ', '_').TrimEnd(' ', '_'); string key = keyBase; int keyCounter = 1; while (module.ContainsKey(key)) { key = keyBase + "_" + (keyCounter++).ToString(); } return(key); }
public static void ToAngular(ITranslationModule tp, string targetDir, string firstRowComment = "") { StringBuilder sb = new StringBuilder(); sb.Append("//").AppendLine(firstRowComment); sb.AppendLine("app.config(function($translateProvider) {"); foreach (var language in tp.ByLanguage) { sb.AppendLine(string.Format(" $translateProvider.translations('{0}', {{", language.Key)); foreach (var segment in language.Where(l => !string.IsNullOrWhiteSpace(l.Text))) { var text = segment.Text; text = text.Replace("'", "\\'"); sb.Append("'").Append(segment.Key).Append("':'").Append(text).AppendLine("',"); } sb.AppendLine("});"); } sb.AppendLine("});"); using (StreamWriter outfile = new StreamWriter(targetDir + @"\" + tp.Name + ".lang.js", false, Encoding.UTF8)) { outfile.Write(sb.ToString()); } }
public static void ToCSV(ITranslationModule project, StringBuilder sb, bool addHeader = true) { if (addHeader) { sb.Append("").Append("en").Append(";"); foreach (var l in project.Languages) { sb.Append(l); sb.Append(";"); } sb.AppendLine(); } var byKey = project.ByKey; foreach (var key in project.Keys) { sb.Append(key).Append(";"); foreach (var l in project.Languages) { sb.Append("'"); var seg = byKey[key].FirstOrDefault(s => s.Language == l); sb.Append(seg != null ? seg.Text : ""); sb.Append("';"); } sb.AppendLine(); } }
public static Stream ToXLS(ITranslationModule project) { MemoryStream stream = new MemoryStream(); _ToXLS(project).SaveToStream(stream); return(stream); }
public TranslationModuleDiff SyncWith(ITranslationModule tp) { var diff = Diff(tp); Patch(diff); return(diff); }
public static void ToXLS(ITranslationModule project, string fileName) { FileInfo newFile = new FileInfo(fileName); if (newFile.Exists) { newFile.Delete(); // ensures we create a new workbook } _ToXLS(project).Save(fileName); }
public static ITranslationModule FilterByTags(this ITranslationModule module, IEnumerable <string> tags) { if (tags == null) { return(module); } IEnumerable <Segment> filteredSegments = module.Segments.Where(s => s.Tags.Any(label => tags.Contains(label))); return(new TranslationModule(module, filteredSegments)); }
public static void ToCSV(ITranslationModule project, string targetDir) { StringBuilder sb = new StringBuilder(); ToCSV(project, sb, true); using (StreamWriter outfile = new StreamWriter(targetDir + @"\" + project.Name + ".csv", false, Encoding.UTF8)) { outfile.Write(sb.ToString()); } }
protected void ToOutputFormat(DownloadOptions options, ITranslationModule module) { if (options.Angular) { IO.Angular.ToAngular(module, options.ResXDir, options.CommandLine); } else { IO.ResX.ToResX(module, options.ResXDir); } }
protected static Workbook _ToXLS(ITranslationModule project) { Worksheet worksheet = new Worksheet("Traductions"); Export.ToIWorksheet(project, new XlsWorksheet(worksheet)); Workbook workbook = new Workbook(); workbook.Worksheets.Add(worksheet); return(workbook); }
private static void IndexDocument(IndexWriter writer, ITranslationModule tp) { var byKey = tp.ByKey; foreach (var key in tp.Keys) { Document doc = new Document(); doc.Add(new Field("key", key, Field.Store.YES, Field.Index.NOT_ANALYZED)); foreach (var seg in byKey[key]) { doc.Add(new Field(seg.Language, seg.Text, Field.Store.YES, seg.Language == "fr" ? Field.Index.ANALYZED : Field.Index.NO)); } writer.AddDocument(doc); } }
public TranslationModuleDiff Diff(ITranslationModule tp) { var allSync = new Dictionary <string, SegmentDiff>(); foreach (var l in Segments.ByLanguage()) { //if (!Dicts.ContainsKey(l) || !tp.Dicts.ContainsKey(l)) continue; var segDiff = new SegmentDiff(); segDiff.Diff(l, tp.ByLanguage[l.Key]); allSync.Add(l.Key, segDiff); } /* * foreach (var l in Languages) * { * if (!Dicts.ContainsKey(l) || !tp.Dicts.ContainsKey(l)) continue; * allSync.Add(l, DictDiff.Diff(Dicts[l], tp.Dicts[l])); * } */ return(new TranslationModuleDiff(allSync)); }
public static int ToIWorksheet(ITranslationModule project, IWorksheet worksheet, int rowStart = 0) { int columnCounter = 0; int rowCounter = rowStart; if (rowStart == 0) //write header { worksheet[rowStart, columnCounter++] = ""; foreach (var l in project.Languages) { worksheet[rowStart, columnCounter++] = l; } rowCounter++; } worksheet[rowCounter++, 0] = "ns:" + project.Name; var byKey = project.ByKey; foreach (var key in project.Keys) { columnCounter = 0; worksheet[rowCounter, columnCounter++] = key; //need to write by languages to make sure we have empty cells!! foreach (var l in project.Languages) { var seg = byKey[key].FirstOrDefault(s => s.Language == l); worksheet[rowCounter, columnCounter++] = seg != null ? seg.Text : ""; } rowCounter++; } return(rowCounter); }
public CellsViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, BuildOrdersViewModel BuildOrdersViewModel, int PlanetID) : base(PIOClient, BotsClient, TranslationModule) { this.planetID = PlanetID; this.buildOrdersViewModel = BuildOrdersViewModel; }
public WorkerViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule) : base(PIOClient, BotsClient, TranslationModule) { CreateBotCommand = new ViewModelCommand(CreateBotCommandCanExecute, CreateBotCommandExecute); DeleteBotCommand = new ViewModelCommand(DeleteBotCommandCanExecute, DeleteBotCommandExecute); ProduceCommand = new ViewModelCommand(ProduceCommandCanExecute, ProduceCommandExecute); HarvestCommand = new ViewModelCommand(HarvestCommandCanExecute, HarvestCommandExecute); }
public BuildingViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, ProduceOrdersViewModel ProduceOrdersViewModel, HarvestOrdersViewModel HarvestOrderViewModels) : base(PIOClient, BotsClient, TranslationModule) { this.produceOrdersViewModel = ProduceOrdersViewModel; this.harvestOrderViewModels = HarvestOrderViewModels; CreateProduceOrderCommand = new ViewModelCommand(CreateProduceOrderCommandCanExecute, CreateProduceOrderCommandExecute); CreateHarvestOrderCommand = new ViewModelCommand(CreateHarvestOrderCommandCanExecute, CreateHarvestOrderCommandExecute); }
public void Add(ITranslationModule module) { throw new NotImplementedException(); }
public void Add(ITranslationModule module) { Projects.Add(module.Name, module); }
public TranslationMemory(ITranslationProject tpCollection) { Index = TranslationMemoryHelpers.BuildTranslationProjectIndex(tpCollection.Modules); this.TranslationProject = tpCollection.Modules.First(); }
public TranslationMemory(TranslationModule tp) { this.Index = TranslationMemoryHelpers.BuildTranslationProjectIndex(new ITranslationModule[] { tp }); this.TranslationProject = tp; }
public PIOViewModelCollection(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule) { this.PIOClient = PIOClient; this.BotsClient = BotsClient; this.TranslationModule = TranslationModule; }
public TranslationModule(ITranslationModule other, IEnumerable <Segment> segments) : base(other) { this._Segments = segments.ToList(); }
public TranslationModule(ITranslationModule other) : base(other) { }
static int Main(string[] args) { var options = new Options(); string verb = ""; object subOptions = null; var ps = new CommandLine.ParserSettings(); IUserCredentialApplication credential = new Auth.UserCredentialApplicationFromFile(); CommandLine.Parser parser = new CommandLine.Parser(new CommandLine.ParserSettings { MutuallyExclusive = true, CaseSensitive = false, HelpWriter = Console.Error }); parser = CommandLine.Parser.Default; if (parser.ParseArguments(args, options, (_verb, _subOptions) => { verb = _verb; subOptions = _subOptions; })) { (subOptions as BaseOptions).CommandLine = string.Join(" ", args); switch (verb) { case "upload": { var uploadOptions = subOptions as UploadOptions; if (!uploadOptions.Batch && string.IsNullOrWhiteSpace(uploadOptions.ModuleName)) { Console.Error.Write(options.GetUsage("upload")); return(-1); } var drive = new IO.Google.Drive(credential); var uploader = new Uploader(drive); uploader.Upload(uploadOptions); } break; case "download": { var drive = new IO.Google.Drive(credential); var downloader = new Downloader(drive); downloader.Download(subOptions as DownloadOptions); } break; case "diff": { var diffOptions = subOptions as DiffOptions; var drive = new IO.Google.Drive(credential); var folder = drive.FindFolder(diffOptions.GDriveFolder); ITranslationModule localModule = IO.ResX.FromResX(diffOptions.ResXDir, diffOptions.ModuleName, "en"); var downloader = new Downloader(drive); var xlsx = downloader.DownloadXlsx(diffOptions); var _remoteModule = IO.XlsX.FromXLSX(diffOptions.FileName, "en", xlsx); _remoteModule.Name = diffOptions.ModuleName; ITranslationModule remoteModule = _remoteModule.FilterByTags(diffOptions.Tags); TranslationModuleDiff diff = localModule.Diff(remoteModule); var diffJson = Newtonsoft.Json.JsonConvert.SerializeObject(diff, Newtonsoft.Json.Formatting.Indented); Console.OutputEncoding = System.Text.Encoding.UTF8; Console.Write(diffJson); if (diffOptions.HTML) { var htmlLogger = new HTMLConcatLogger(); diff.Print(htmlLogger); var fileName = System.IO.Path.GetTempFileName() + ".html"; System.IO.File.WriteAllText(fileName, htmlLogger.HTML); System.Diagnostics.Process.Start(fileName); } } break; case "patch": { var patchOptions = subOptions as PatchOptions; //read patch data from stdin Console.InputEncoding = System.Text.Encoding.UTF8; var jsonReader = new System.Text.StringBuilder(); string s; while ((s = Console.ReadLine()) != null) { jsonReader.AppendLine(s); } string json = jsonReader.ToString(); //string json = System.IO.File.ReadAllText(@".\diff"); var diff = Newtonsoft.Json.JsonConvert.DeserializeObject <TranslationModuleDiff>(json); TranslationModule localModule = IO.ResX.FromResX(patchOptions.ResXDir, patchOptions.ModuleName, "en"); localModule.Patch(diff); IO.ResX.ToResX(localModule, patchOptions.ResXDir); } break; } } return(0); }
public WorkersViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, int PlanetID) : base(PIOClient, BotsClient, TranslationModule) { this.planetID = PlanetID; }
public ProduceOrderViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule) : base(PIOClient, BotsClient, TranslationModule) { }
public TasksViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, int WorkerID) : base(PIOClient, BotsClient, TranslationModule) { this.workerID = WorkerID; }
public BuildingsViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, ProduceOrdersViewModel ProduceOrdersViewModel, HarvestOrdersViewModel HarvestOrderViewModels, int PlanetID) : base(PIOClient, BotsClient, TranslationModule) { this.planetID = PlanetID; this.produceOrdersViewModel = ProduceOrdersViewModel; this.harvestOrderViewModels = HarvestOrderViewModels; }
public ApplicationViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule) : base(PIOClient, BotsClient, TranslationModule) { ProduceOrders = new ProduceOrdersViewModel(PIOClient, BotsClient, TranslationModule, planetID); HarvestOrders = new HarvestOrdersViewModel(PIOClient, BotsClient, TranslationModule, planetID); BuildOrders = new BuildOrdersViewModel(PIOClient, BotsClient, TranslationModule, planetID); Cells = new CellsViewModel(PIOClient, BotsClient, TranslationModule, BuildOrders, planetID); Workers = new WorkersViewModel(PIOClient, BotsClient, TranslationModule, planetID); Buildings = new BuildingsViewModel(PIOClient, BotsClient, TranslationModule, ProduceOrders, HarvestOrders, planetID); MapItems = new MapItemsViewModel(); SelectedItems = new MapItemsViewModel(); }