Example #1
0
        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");
                }
            }
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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());
            }
        }
Example #4
0
        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();
            }
        }
Example #5
0
        public static Stream ToXLS(ITranslationModule project)
        {
            MemoryStream stream = new MemoryStream();

            _ToXLS(project).SaveToStream(stream);

            return(stream);
        }
Example #6
0
        public TranslationModuleDiff SyncWith(ITranslationModule tp)
        {
            var diff = Diff(tp);

            Patch(diff);

            return(diff);
        }
Example #7
0
        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);
        }
Example #8
0
        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));
        }
Example #9
0
        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());
            }
        }
Example #10
0
 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);
     }
 }
Example #11
0
        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);
        }
Example #12
0
        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);
            }
        }
Example #13
0
        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));
        }
Example #14
0
        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);
        }
Example #15
0
 public CellsViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, BuildOrdersViewModel BuildOrdersViewModel, int PlanetID) : base(PIOClient, BotsClient, TranslationModule)
 {
     this.planetID             = PlanetID;
     this.buildOrdersViewModel = BuildOrdersViewModel;
 }
Example #16
0
        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);
        }
Example #17
0
        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);
        }
Example #18
0
 public void Add(ITranslationModule module)
 {
     throw new NotImplementedException();
 }
 public void Add(ITranslationModule module)
 {
     Projects.Add(module.Name, module);
 }
Example #20
0
 public TranslationMemory(ITranslationProject tpCollection)
 {
     Index = TranslationMemoryHelpers.BuildTranslationProjectIndex(tpCollection.Modules);
     this.TranslationProject = tpCollection.Modules.First();
 }
Example #21
0
 public TranslationMemory(TranslationModule tp)
 {
     this.Index = TranslationMemoryHelpers.BuildTranslationProjectIndex(new ITranslationModule[] { tp });
     this.TranslationProject = tp;
 }
Example #22
0
 public PIOViewModelCollection(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule)
 {
     this.PIOClient = PIOClient; this.BotsClient = BotsClient; this.TranslationModule = TranslationModule;
 }
Example #23
0
 public TranslationModule(ITranslationModule other, IEnumerable <Segment> segments)
     : base(other)
 {
     this._Segments = segments.ToList();
 }
Example #24
0
 public TranslationModule(ITranslationModule other)
     : base(other)
 {
 }
Example #25
0
        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);
        }
Example #26
0
 public WorkersViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, int PlanetID) : base(PIOClient, BotsClient, TranslationModule)
 {
     this.planetID = PlanetID;
 }
Example #27
0
 public ProduceOrderViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule) : base(PIOClient, BotsClient, TranslationModule)
 {
 }
Example #28
0
 public TasksViewModel(PIOServiceClient PIOClient, BotsRESTClient BotsClient, ITranslationModule TranslationModule, int WorkerID) : base(PIOClient, BotsClient, TranslationModule)
 {
     this.workerID = WorkerID;
 }
Example #29
0
 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;
 }
Example #30
0
        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();
        }