diff --git a/.gitignore b/.gitignore index aececac..814a185 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ -~* \ No newline at end of file +~* +/TranslationsBuilder/obj +/.vs +/TranslationsBuilder/bin +/TranslationsBuilder/TranslationsBuilder.csproj.user +/.gitignore diff --git a/README.md b/README.md index 7a2f6e7..91c51bf 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,17 @@ +# This fork + +**Excel Export/Import** +- Translation Builder always use comma as a separator which is not convenient for Canadien French computers (where semicolon is used because comma is a decimal separator). +- This version use the ClosedXml open source libray to Export and Import Excel files. When exporting it creates a real table that is autosized by column content and can be sorted/filtered. + +**Display Folder support** +- Fixed DisplayFolder bugs : import from CSV and directly in the UI grid. + +**UI changes** +- Changed default shortcut keys to avoid Ctrl+C and Ctrl+S which are usually associated with Copy and Save. +- A wait cursor is shown when importing translations from Excel +- Always show descriptions for Tables, Columns, Measures and Hierarchies + # Translations Builder Translations Builder is an external tool created for Power BI Desktop @@ -17,4 +31,4 @@ Here are the primary links for learning how to build multi-language reports for - [**Multi-language Report Live Demo**](https://multilanguagereportdemo.azurewebsites.net) - [**Installation Guide**](Docs/Installation%20Guide.md) - [**User Guide**](Docs/User%20Guide.md) - - [**Developer Guide**](Docs/Developer%20Guide.md) \ No newline at end of file + - [**Developer Guide**](Docs/Developer%20Guide.md) diff --git a/SetupFiles/TranslationsBuilderInstaller.msi b/SetupFiles/TranslationsBuilderInstaller.msi new file mode 100644 index 0000000..dbda0ba Binary files /dev/null and b/SetupFiles/TranslationsBuilderInstaller.msi differ diff --git a/SetupFiles/TranslationsBuilderSetup.msi b/SetupFiles/TranslationsBuilderSetup.msi deleted file mode 100644 index 1907734..0000000 Binary files a/SetupFiles/TranslationsBuilderSetup.msi and /dev/null differ diff --git a/SetupFiles/setup.exe b/SetupFiles/setup.exe index ad4aea9..207c95b 100644 Binary files a/SetupFiles/setup.exe and b/SetupFiles/setup.exe differ diff --git a/TranslationsBuilder/DeployExternalTool/translationsbuilder.pbitool.json b/TranslationsBuilder/DeployExternalTool/translationsbuilder.pbitool.json index 0e8c0db..be5347b 100644 --- a/TranslationsBuilder/DeployExternalTool/translationsbuilder.pbitool.json +++ b/TranslationsBuilder/DeployExternalTool/translationsbuilder.pbitool.json @@ -2,7 +2,7 @@ "version": "1.0", "name": "Translations Builder", "description": "Launch Translations Builder to add translations to yout data model.", - "path": "c:\\Program Files\\Translations Builder\\TranslationsBuilder.exe", + "path": "c:\\Program Files\\Power BI Translations Builder\\TranslationsBuilder.exe", "arguments": "\"%server%\" \"%database%\"", "iconData": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAABSJJREFUaIHtmctzU1Ucxz/33qRN8+ojpEkTqrVAS1JApAwzAiICioLgiC50ZOPGP8EZV+6YYevKhQtlxkFxgXREhQXgDKDYDlWqQ2sL1cbSpk1bCKZ53+siJWloknvzaqczfFdJzjm/8/2e8z2/8wiscggAH39y6pTD3uRZ7s5j0TgTU9MnTn74wdlSY+gAHPYmz/G3Dm+vHDVtmPAH+Pz0uTXlxBArRWal8ETASkNXTuP+gUEAWt1O1jQ1VIRQsShLwA+XrgHw2r5dKyZg1Vto1QsoaKHA7H16LlxRDXKt9zf6/xjMWda5ro1dO7aWRE4LCgqIxxNMTs2oBgk+DBF8GMpZ5mwua59SRUEBxjoDWzd1FhXw3uQ0U4FZALZ4O2h1OUtnpwEFBdRbzRzav1tzMEVR+OzL1LFmrcvB6y+/UB47DdC8iH3jk/x195+CdYbvjjE9MwfAts3LczbUtA/cHBjkwuXr6CSJd948mNMWiWSSy9d6AWist+LpeKZgzERSpm8ogG/euufoR+eLJp6U5cD5k0fOahLgdtrR63TE4nG+PneRY4f20/60O6vO1Rv9zMw9AGDvru1IYv7JTSRlPv12gGDSSrt353HgeLECRkbu9AHaBDjsNt4+coAzPReJxeKc6bnI3p3d7HhuM6IoMPK3j5/7fgdgXVsrG9e3qZKPSDZsDZZieachLgyQ5jXQ1urivWOHqDMYkGWZS1d7+eJMDzdv3ebs95dQFDCbjBw+sBtBEFTJWyylk88SUkxld0sz7797lLUuB5C6kPx4+TrxeAKArs513H/wEFmWl7StBnko4SjRYLXwxqt7aahfSuLGzQFOffMdsqxk/V4t8qAxCymKQiQaxXfPz+DwKLeHR0kmU6PcYLXQbG/CNz5JOBJFkkQkKTMu1SSvKsA/PUvPhSvMhyOE5sNZZaIosm3zRl58vpva2hoURSE0HyYSiS4beVUBiiKnN6ZHMJuMeDva2f6sN8tGgiBgNhkxm4zA8pAHFQEmYx3dWzwYDLU01ltwNq/BbmvMm2UeQY380a1GNjiyu/7q1xDjc8nKCrCYTRx8aWdRAdXIG/QC7XbdkkHwuvQlCajohUaLbTqdenTS0hnscOiRSmBTMQFaPd/l1qc/D/vjKEoq5dbViLTbi7+iV0SAVvKNRpGWein9vXc0ij+YsY2npabovssWUEy28br1ae//F5GZuJ9k2J9Il7c366jVFU4Qj6MsAcWmyi5XZoRHpuIoZNtIJwp0OvV5WueGDhZeif2BohoC9A0FCCatmk6VrU0SFkNmdB+N/GxIZjYkYzOnrOV16bn1b0wzBx3AxNT0iVJeiX3z1j0L53lVdLlq0vaJxGV8sxnrDPvjaQHuRglrnUAwrOSM8zh0AKW+zy/cpFQF6CXYsMgawbDCpkXZaHFaFQQBb0sNv9yNogVlPS1qxXqHPmtxNlslXtlkzFvf49JrFrAsL3NdruIWZpNJxGGV1CuyDALMBoGnbMVNtCAIeDWKrrqFvC01iIvOPT8NhRmbyX3mOdZtxFSbGtONLXquDEVQVNZy9QUsWqwJWeGWL0Y0kbvunakEW1pTe4WpVqTNpmM0kKfyAqpqIYdVwmbKdOGbSeQlD6l0uhgeDTaq6gy4GiT8wcwF/8/xeIHaMDaTYHwugSSmLGcxiIgCyAVsVFUB/WMx+se076pJBU7fyP3KnQ+r/g+OJwJWGqteQFmLOCnLgZGRO31igZfoaiEUCuX+U2614X/iVOfIxR9TaAAAAABJRU5ErkJggg==" } diff --git a/TranslationsBuilder/Forms/FormEditDefaultTranslation.cs b/TranslationsBuilder/Forms/FormEditDefaultTranslation.cs index 156fd11..bbd9660 100644 --- a/TranslationsBuilder/Forms/FormEditDefaultTranslation.cs +++ b/TranslationsBuilder/Forms/FormEditDefaultTranslation.cs @@ -35,7 +35,7 @@ public FormEditDefaultTranslation(string objectType, string propertyName, string } private void btnUpdate_Click(object sender, EventArgs e) { - TranslationsManager.SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, Language, txtTranslation.Text); + TranslationsManager.SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, Language, txtTranslation.Text, saveModel:true); this.DialogResult = DialogResult.OK; this.Close(); } @@ -48,7 +48,7 @@ private void btnCancel_Click(object sender, EventArgs e) { private void btnRevertToDefault_Click(object sender, EventArgs e) { txtTranslation.Text = DefaultTranslationFromObjectName; - TranslationsManager.SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, Language, DefaultTranslationFromObjectName); + TranslationsManager.SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, Language, DefaultTranslationFromObjectName, saveModel:true); } } diff --git a/TranslationsBuilder/Forms/FormEditTranslation.cs b/TranslationsBuilder/Forms/FormEditTranslation.cs index 576b4f3..7a83d0c 100644 --- a/TranslationsBuilder/Forms/FormEditTranslation.cs +++ b/TranslationsBuilder/Forms/FormEditTranslation.cs @@ -35,7 +35,7 @@ public FormEditTranslation(string objectType, string propertyName, string object } private void btnUpdate_Click(object sender, EventArgs e) { - TranslationsManager.SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, Language, txtTranslation.Text); + TranslationsManager.SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, Language, txtTranslation.Text, saveModel: true); this.DialogResult = DialogResult.OK; this.Close(); } diff --git a/TranslationsBuilder/Forms/FormMain.Designer.cs b/TranslationsBuilder/Forms/FormMain.Designer.cs index 43de8ca..9b93cb0 100644 --- a/TranslationsBuilder/Forms/FormMain.Designer.cs +++ b/TranslationsBuilder/Forms/FormMain.Designer.cs @@ -20,646 +20,675 @@ protected override void Dispose(bool disposing) { base.Dispose(disposing); } - #region Windows Form Designer generated code + #region Windows Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() { - components = new System.ComponentModel.Container(); - DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain)); - gridTranslations = new DataGridView(); - dialogOpenFile = new OpenFileDialog(); - groupDatasetProperties = new GroupBox(); - lbldefaultLanguageNameLabel = new Label(); - txtdefaultLanguage = new TextBox(); - txtCompatibilityLevel = new TextBox(); - lblCompatibilityLevel = new Label(); - txtDatasetName = new TextBox(); - txtServerConnection = new TextBox(); - lblDatasetName = new Label(); - lblServerConnection = new Label(); - panel2 = new Panel(); - grpMachineTranslationsAllLanguages = new GroupBox(); - btnFillAllEmptyTranslations = new Button(); - btnGenenrateAllMachineTranslations = new Button(); - grpImportExportTranslations = new GroupBox(); - btnExportAllTranslationSheets = new Button(); - chkOpenExportInExcel = new CheckBox(); - listLanguageForTransation = new ComboBox(); - btnExportTranslations = new Button(); - btnImportTranslations = new Button(); - btnExportTranslationsSheet = new Button(); - grpMachineTranslationsSingleLanguage = new GroupBox(); - btnFillEmptyTranslations = new Button(); - btnGenenrateMachineTranslations = new Button(); - listCultureToPopulate = new ComboBox(); - grpSecondaryCultures = new GroupBox(); - btnAddSecondaryLanguage = new Button(); - listSecondaryLanguages = new ListBox(); - menuStrip = new MenuStrip(); - menuConnection = new ToolStripMenuItem(); - menuConnect = new ToolStripMenuItem(); - menuDisconnect = new ToolStripMenuItem(); - toolStripSeparator2 = new ToolStripSeparator(); - menuConfigureSettings = new ToolStripMenuItem(); - toolStripSeparator1 = new ToolStripSeparator(); - exportModelAsJson = new ToolStripMenuItem(); - menuTranslatedTables = new ToolStripMenuItem(); - menuCreateLocalizedLabelsTable = new ToolStripMenuItem(); - menuAddLabelsToLocalizedLabelsTable = new ToolStripMenuItem(); - menuGenerateTranslatedLocalizedLabelsTable = new ToolStripMenuItem(); - menuGenerateTranslatedDatasetObjectNamesTable = new ToolStripMenuItem(); - menuSyncDataModel = new ToolStripMenuItem(); - statusStrip1 = new StatusStrip(); - labelStatusBar = new ToolStripStatusLabel(); - toolStripStatusLabel1 = new ToolStripStatusLabel(); - toolStripStatusLabel2 = new ToolStripStatusLabel(); - tooltipDatasetName = new ToolTip(components); - tooltipServiceConnection = new ToolTip(components); - contextMenuSecondaryLanguageHeader = new ContextMenuStrip(components); - toolStripSeparator5 = new ToolStripSeparator(); - menuCommandDuplicateSecondaryLanguage = new ToolStripMenuItem(); - menuCommandCopyToSecondaryLanguage = new ToolStripMenuItem(); - toolStripSeparator3 = new ToolStripSeparator(); - menuCommandExportLanguageToTranslationSheet = new ToolStripMenuItem(); - toolStripSeparator4 = new ToolStripSeparator(); - menuCommandDeleteSecondaryLanguage = new ToolStripMenuItem(); - toolStripSeparator6 = new ToolStripSeparator(); - ((System.ComponentModel.ISupportInitialize)gridTranslations).BeginInit(); - groupDatasetProperties.SuspendLayout(); - panel2.SuspendLayout(); - grpMachineTranslationsAllLanguages.SuspendLayout(); - grpImportExportTranslations.SuspendLayout(); - grpMachineTranslationsSingleLanguage.SuspendLayout(); - grpSecondaryCultures.SuspendLayout(); - menuStrip.SuspendLayout(); - statusStrip1.SuspendLayout(); - contextMenuSecondaryLanguageHeader.SuspendLayout(); - SuspendLayout(); - // - // gridTranslations - // - gridTranslations.AllowUserToAddRows = false; - gridTranslations.AllowUserToDeleteRows = false; - gridTranslations.AllowUserToResizeColumns = false; - gridTranslations.AllowUserToResizeRows = false; - dataGridViewCellStyle1.Alignment = DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle1.BackColor = Color.Black; - dataGridViewCellStyle1.Font = new Font("Arial Black", 7F, FontStyle.Bold, GraphicsUnit.Point); - dataGridViewCellStyle1.ForeColor = SystemColors.WindowText; - dataGridViewCellStyle1.SelectionBackColor = SystemColors.Highlight; - dataGridViewCellStyle1.SelectionForeColor = SystemColors.HighlightText; - dataGridViewCellStyle1.WrapMode = DataGridViewTriState.True; - gridTranslations.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; - gridTranslations.ColumnHeadersHeight = 29; - gridTranslations.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; - gridTranslations.Dock = DockStyle.Fill; - gridTranslations.EditMode = DataGridViewEditMode.EditProgrammatically; - gridTranslations.EnableHeadersVisualStyles = false; - gridTranslations.Location = new Point(0, 323); - gridTranslations.MultiSelect = false; - gridTranslations.Name = "gridTranslations"; - gridTranslations.RowHeadersWidth = 24; - gridTranslations.RowTemplate.Height = 28; - gridTranslations.Size = new Size(1519, 394); - gridTranslations.TabIndex = 0; - gridTranslations.TabStop = false; - gridTranslations.CellBeginEdit += gridTranslations_CellBeginEdit; - gridTranslations.CellDoubleClick += gridTranslations_CellDoubleClick; - gridTranslations.CellEndEdit += gridTranslations_CellEndEdit; - // - // groupDatasetProperties - // - groupDatasetProperties.Controls.Add(lbldefaultLanguageNameLabel); - groupDatasetProperties.Controls.Add(txtdefaultLanguage); - groupDatasetProperties.Controls.Add(txtCompatibilityLevel); - groupDatasetProperties.Controls.Add(lblCompatibilityLevel); - groupDatasetProperties.Controls.Add(txtDatasetName); - groupDatasetProperties.Controls.Add(txtServerConnection); - groupDatasetProperties.Controls.Add(lblDatasetName); - groupDatasetProperties.Controls.Add(lblServerConnection); - groupDatasetProperties.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); - groupDatasetProperties.Location = new Point(9, 47); - groupDatasetProperties.Name = "groupDatasetProperties"; - groupDatasetProperties.Size = new Size(472, 269); - groupDatasetProperties.TabIndex = 0; - groupDatasetProperties.TabStop = false; - groupDatasetProperties.Text = "Dataset Properties"; - // - // lbldefaultLanguageNameLabel - // - lbldefaultLanguageNameLabel.AutoSize = true; - lbldefaultLanguageNameLabel.Location = new Point(6, 115); - lbldefaultLanguageNameLabel.Name = "lbldefaultLanguageNameLabel"; - lbldefaultLanguageNameLabel.Size = new Size(130, 20); - lbldefaultLanguageNameLabel.TabIndex = 33; - lbldefaultLanguageNameLabel.Text = "Default Language:"; - // - // txtdefaultLanguage - // - txtdefaultLanguage.Location = new Point(141, 112); - txtdefaultLanguage.Name = "txtdefaultLanguage"; - txtdefaultLanguage.Size = new Size(307, 27); - txtdefaultLanguage.TabIndex = 32; - txtdefaultLanguage.TabStop = false; - // - // txtCompatibilityLevel - // - txtCompatibilityLevel.Location = new Point(141, 152); - txtCompatibilityLevel.Name = "txtCompatibilityLevel"; - txtCompatibilityLevel.ReadOnly = true; - txtCompatibilityLevel.Size = new Size(307, 27); - txtCompatibilityLevel.TabIndex = 22; - txtCompatibilityLevel.TabStop = false; - // - // lblCompatibilityLevel - // - lblCompatibilityLevel.AutoSize = true; - lblCompatibilityLevel.Location = new Point(33, 153); - lblCompatibilityLevel.Name = "lblCompatibilityLevel"; - lblCompatibilityLevel.Size = new Size(103, 20); - lblCompatibilityLevel.TabIndex = 21; - lblCompatibilityLevel.Text = "Compat Level:"; - lblCompatibilityLevel.TextAlign = ContentAlignment.MiddleRight; - // - // txtDatasetName - // - txtDatasetName.Location = new Point(141, 72); - txtDatasetName.Name = "txtDatasetName"; - txtDatasetName.ReadOnly = true; - txtDatasetName.Size = new Size(307, 27); - txtDatasetName.TabIndex = 20; - txtDatasetName.TabStop = false; - // - // txtServerConnection - // - txtServerConnection.Location = new Point(141, 32); - txtServerConnection.Margin = new Padding(10, 3, 3, 3); - txtServerConnection.Name = "txtServerConnection"; - txtServerConnection.ReadOnly = true; - txtServerConnection.Size = new Size(307, 27); - txtServerConnection.TabIndex = 0; - txtServerConnection.TabStop = false; - // - // lblDatasetName - // - lblDatasetName.AutoSize = true; - lblDatasetName.Location = new Point(29, 75); - lblDatasetName.Name = "lblDatasetName"; - lblDatasetName.Size = new Size(107, 20); - lblDatasetName.TabIndex = 18; - lblDatasetName.Text = "Dataset Name:"; - lblDatasetName.TextAlign = ContentAlignment.MiddleRight; - // - // lblServerConnection - // - lblServerConnection.AutoSize = true; - lblServerConnection.Location = new Point(49, 36); - lblServerConnection.Name = "lblServerConnection"; - lblServerConnection.Size = new Size(87, 20); - lblServerConnection.TabIndex = 17; - lblServerConnection.Text = "Connection:"; - lblServerConnection.TextAlign = ContentAlignment.MiddleRight; - // - // panel2 - // - panel2.BackColor = SystemColors.ActiveCaption; - panel2.Controls.Add(grpMachineTranslationsAllLanguages); - panel2.Controls.Add(grpImportExportTranslations); - panel2.Controls.Add(grpMachineTranslationsSingleLanguage); - panel2.Controls.Add(grpSecondaryCultures); - panel2.Controls.Add(groupDatasetProperties); - panel2.Controls.Add(menuStrip); - panel2.Dock = DockStyle.Top; - panel2.Location = new Point(0, 0); - panel2.Name = "panel2"; - panel2.Size = new Size(1519, 323); - panel2.TabIndex = 8; - // - // grpMachineTranslationsAllLanguages - // - grpMachineTranslationsAllLanguages.Controls.Add(btnFillAllEmptyTranslations); - grpMachineTranslationsAllLanguages.Controls.Add(btnGenenrateAllMachineTranslations); - grpMachineTranslationsAllLanguages.Location = new Point(981, 191); - grpMachineTranslationsAllLanguages.Name = "grpMachineTranslationsAllLanguages"; - grpMachineTranslationsAllLanguages.Size = new Size(294, 125); - grpMachineTranslationsAllLanguages.TabIndex = 10; - grpMachineTranslationsAllLanguages.TabStop = false; - grpMachineTranslationsAllLanguages.Text = "Machine Translations - All Languages"; - // - // btnFillAllEmptyTranslations - // - btnFillAllEmptyTranslations.BackColor = SystemColors.ControlLight; - btnFillAllEmptyTranslations.Location = new Point(11, 72); - btnFillAllEmptyTranslations.Name = "btnFillAllEmptyTranslations"; - btnFillAllEmptyTranslations.Size = new Size(267, 37); - btnFillAllEmptyTranslations.TabIndex = 15; - btnFillAllEmptyTranslations.Text = "Fill All Empty Translations"; - btnFillAllEmptyTranslations.UseVisualStyleBackColor = false; - btnFillAllEmptyTranslations.Click += FillAllEmptyTranslations; - // - // btnGenenrateAllMachineTranslations - // - btnGenenrateAllMachineTranslations.BackColor = SystemColors.ControlLight; - btnGenenrateAllMachineTranslations.Location = new Point(10, 28); - btnGenenrateAllMachineTranslations.Name = "btnGenenrateAllMachineTranslations"; - btnGenenrateAllMachineTranslations.Size = new Size(269, 36); - btnGenenrateAllMachineTranslations.TabIndex = 14; - btnGenenrateAllMachineTranslations.Text = "Generate All Translations"; - btnGenenrateAllMachineTranslations.UseVisualStyleBackColor = false; - btnGenenrateAllMachineTranslations.Click += GenenrateAllMachineTranslations; - // - // grpImportExportTranslations - // - grpImportExportTranslations.Controls.Add(btnExportAllTranslationSheets); - grpImportExportTranslations.Controls.Add(chkOpenExportInExcel); - grpImportExportTranslations.Controls.Add(listLanguageForTransation); - grpImportExportTranslations.Controls.Add(btnExportTranslations); - grpImportExportTranslations.Controls.Add(btnImportTranslations); - grpImportExportTranslations.Controls.Add(btnExportTranslationsSheet); - grpImportExportTranslations.Location = new Point(730, 47); - grpImportExportTranslations.Name = "grpImportExportTranslations"; - grpImportExportTranslations.Size = new Size(235, 269); - grpImportExportTranslations.TabIndex = 4; - grpImportExportTranslations.TabStop = false; - grpImportExportTranslations.Text = "Export/Import Translations"; - // - // btnExportAllTranslationSheets - // - btnExportAllTranslationSheets.BackColor = SystemColors.ControlLight; - btnExportAllTranslationSheets.Location = new Point(13, 144); - btnExportAllTranslationSheets.Name = "btnExportAllTranslationSheets"; - btnExportAllTranslationSheets.Size = new Size(209, 36); - btnExportAllTranslationSheets.TabIndex = 10; - btnExportAllTranslationSheets.Text = "Export All Translation Sheets"; - btnExportAllTranslationSheets.UseVisualStyleBackColor = false; - btnExportAllTranslationSheets.Click += ExportAllTranslationSheets; - // - // chkOpenExportInExcel - // - chkOpenExportInExcel.AutoSize = true; - chkOpenExportInExcel.Checked = true; - chkOpenExportInExcel.CheckState = CheckState.Checked; - chkOpenExportInExcel.Location = new Point(31, 187); - chkOpenExportInExcel.Name = "chkOpenExportInExcel"; - chkOpenExportInExcel.Size = new Size(168, 24); - chkOpenExportInExcel.TabIndex = 9; - chkOpenExportInExcel.Text = "Open Export in Excel"; - chkOpenExportInExcel.UseVisualStyleBackColor = true; - // - // listLanguageForTransation - // - listLanguageForTransation.BackColor = SystemColors.Window; - listLanguageForTransation.FormattingEnabled = true; - listLanguageForTransation.Location = new Point(13, 68); - listLanguageForTransation.Name = "listLanguageForTransation"; - listLanguageForTransation.Size = new Size(207, 28); - listLanguageForTransation.TabIndex = 6; - // - // btnExportTranslations - // - btnExportTranslations.BackColor = SystemColors.ControlLight; - btnExportTranslations.Location = new Point(11, 101); - btnExportTranslations.Name = "btnExportTranslations"; - btnExportTranslations.Size = new Size(210, 36); - btnExportTranslations.TabIndex = 7; - btnExportTranslations.Text = "Export All Translations"; - btnExportTranslations.UseVisualStyleBackColor = false; - btnExportTranslations.Click += ExportAllTranslations; - // - // btnImportTranslations - // - btnImportTranslations.BackColor = SystemColors.ControlLight; - btnImportTranslations.Location = new Point(11, 216); - btnImportTranslations.Name = "btnImportTranslations"; - btnImportTranslations.Size = new Size(210, 36); - btnImportTranslations.TabIndex = 8; - btnImportTranslations.Text = "Import Translations"; - btnImportTranslations.UseVisualStyleBackColor = false; - btnImportTranslations.Click += ImportTranslations; - // - // btnExportTranslationsSheet - // - btnExportTranslationsSheet.AutoSizeMode = AutoSizeMode.GrowAndShrink; - btnExportTranslationsSheet.BackColor = SystemColors.ControlLight; - btnExportTranslationsSheet.Location = new Point(11, 27); - btnExportTranslationsSheet.Name = "btnExportTranslationsSheet"; - btnExportTranslationsSheet.Size = new Size(210, 36); - btnExportTranslationsSheet.TabIndex = 5; - btnExportTranslationsSheet.Text = "Export Translations Sheet"; - btnExportTranslationsSheet.UseVisualStyleBackColor = false; - btnExportTranslationsSheet.Click += ExportTranslationsSheet; - // - // grpMachineTranslationsSingleLanguage - // - grpMachineTranslationsSingleLanguage.Controls.Add(btnFillEmptyTranslations); - grpMachineTranslationsSingleLanguage.Controls.Add(btnGenenrateMachineTranslations); - grpMachineTranslationsSingleLanguage.Controls.Add(listCultureToPopulate); - grpMachineTranslationsSingleLanguage.Location = new Point(978, 47); - grpMachineTranslationsSingleLanguage.Name = "grpMachineTranslationsSingleLanguage"; - grpMachineTranslationsSingleLanguage.Size = new Size(294, 140); - grpMachineTranslationsSingleLanguage.TabIndex = 9; - grpMachineTranslationsSingleLanguage.TabStop = false; - grpMachineTranslationsSingleLanguage.Text = "Machine Translations - Single Language"; - // - // btnFillEmptyTranslations - // - btnFillEmptyTranslations.BackColor = SystemColors.ControlLight; - btnFillEmptyTranslations.ForeColor = SystemColors.ControlText; - btnFillEmptyTranslations.Location = new Point(8, 99); - btnFillEmptyTranslations.Name = "btnFillEmptyTranslations"; - btnFillEmptyTranslations.Size = new Size(271, 36); - btnFillEmptyTranslations.TabIndex = 14; - btnFillEmptyTranslations.Text = "Fill Empty Translations"; - btnFillEmptyTranslations.UseVisualStyleBackColor = false; - btnFillEmptyTranslations.Click += FillEmptyTranslations; - // - // btnGenenrateMachineTranslations - // - btnGenenrateMachineTranslations.BackColor = SystemColors.ControlLight; - btnGenenrateMachineTranslations.ForeColor = SystemColors.ControlText; - btnGenenrateMachineTranslations.Location = new Point(8, 27); - btnGenenrateMachineTranslations.Name = "btnGenenrateMachineTranslations"; - btnGenenrateMachineTranslations.Size = new Size(271, 36); - btnGenenrateMachineTranslations.TabIndex = 10; - btnGenenrateMachineTranslations.Text = "Generate Translations"; - btnGenenrateMachineTranslations.UseVisualStyleBackColor = false; - btnGenenrateMachineTranslations.Click += GenenrateMachineTranslations; - // - // listCultureToPopulate - // - listCultureToPopulate.FormattingEnabled = true; - listCultureToPopulate.Location = new Point(8, 67); - listCultureToPopulate.Name = "listCultureToPopulate"; - listCultureToPopulate.Size = new Size(271, 28); - listCultureToPopulate.TabIndex = 11; - // - // grpSecondaryCultures - // - grpSecondaryCultures.Controls.Add(btnAddSecondaryLanguage); - grpSecondaryCultures.Controls.Add(listSecondaryLanguages); - grpSecondaryCultures.Location = new Point(494, 45); - grpSecondaryCultures.Name = "grpSecondaryCultures"; - grpSecondaryCultures.Size = new Size(224, 269); - grpSecondaryCultures.TabIndex = 2; - grpSecondaryCultures.TabStop = false; - grpSecondaryCultures.Text = "Secondary Languages"; - // - // btnAddSecondaryLanguage - // - btnAddSecondaryLanguage.Location = new Point(8, 27); - btnAddSecondaryLanguage.Name = "btnAddSecondaryLanguage"; - btnAddSecondaryLanguage.Size = new Size(200, 36); - btnAddSecondaryLanguage.TabIndex = 3; - btnAddSecondaryLanguage.Text = "Add Language"; - btnAddSecondaryLanguage.UseVisualStyleBackColor = true; - btnAddSecondaryLanguage.Click += AddSecondaryLanguage; - // - // listSecondaryLanguages - // - listSecondaryLanguages.FormattingEnabled = true; - listSecondaryLanguages.ItemHeight = 20; - listSecondaryLanguages.Location = new Point(9, 69); - listSecondaryLanguages.Name = "listSecondaryLanguages"; - listSecondaryLanguages.Size = new Size(201, 184); - listSecondaryLanguages.TabIndex = 0; - listSecondaryLanguages.TabStop = false; - listSecondaryLanguages.UseTabStops = false; - // - // menuStrip - // - menuStrip.BackColor = Color.FromArgb(221, 221, 221); - menuStrip.ImageScalingSize = new Size(20, 20); - menuStrip.Items.AddRange(new ToolStripItem[] { menuConnection, menuTranslatedTables, menuSyncDataModel }); - menuStrip.Location = new Point(0, 0); - menuStrip.Name = "menuStrip"; - menuStrip.Padding = new Padding(6, 3, 6, 3); - menuStrip.Size = new Size(1519, 38); - menuStrip.TabIndex = 1; - menuStrip.Text = "menuMain"; - // - // menuConnection - // - menuConnection.DropDownItems.AddRange(new ToolStripItem[] { menuConnect, menuDisconnect, toolStripSeparator2, menuConfigureSettings, toolStripSeparator1, exportModelAsJson }); - menuConnection.Name = "menuConnection"; - menuConnection.ShortcutKeys = Keys.Control | Keys.Shift | Keys.S; - menuConnection.Size = new Size(153, 32); - menuConnection.Text = "Dataset Connection"; - // - // menuConnect - // - menuConnect.Name = "menuConnect"; - menuConnect.ShortcutKeys = Keys.Control | Keys.Shift | Keys.C; - menuConnect.Size = new Size(281, 26); - menuConnect.Text = "Connect..."; - menuConnect.Click += menuConnect_Click; - // - // menuDisconnect - // - menuDisconnect.Name = "menuDisconnect"; - menuDisconnect.ShortcutKeys = Keys.Control | Keys.Shift | Keys.D; - menuDisconnect.Size = new Size(281, 26); - menuDisconnect.Text = "Disconnect"; - menuDisconnect.Click += menuDisconnect_Click; - // - // toolStripSeparator2 - // - toolStripSeparator2.Name = "toolStripSeparator2"; - toolStripSeparator2.Size = new Size(278, 6); - // - // menuConfigureSettings - // - menuConfigureSettings.Name = "menuConfigureSettings"; - menuConfigureSettings.ShortcutKeys = Keys.Control | Keys.S; - menuConfigureSettings.Size = new Size(281, 26); - menuConfigureSettings.Text = "Configure Settings..."; - menuConfigureSettings.Click += ConfigureSettings; - // - // toolStripSeparator1 - // - toolStripSeparator1.Name = "toolStripSeparator1"; - toolStripSeparator1.Size = new Size(278, 6); - // - // exportModelAsJson - // - exportModelAsJson.Name = "exportModelAsJson"; - exportModelAsJson.ShortcutKeys = Keys.Control | Keys.E; - exportModelAsJson.Size = new Size(281, 26); - exportModelAsJson.Text = "Export As Model.bim"; - exportModelAsJson.Click += exportModelAsJson_Click; - // - // menuTranslatedTables - // - menuTranslatedTables.DropDownItems.AddRange(new ToolStripItem[] { menuCreateLocalizedLabelsTable, menuAddLabelsToLocalizedLabelsTable, menuGenerateTranslatedLocalizedLabelsTable, menuGenerateTranslatedDatasetObjectNamesTable }); - menuTranslatedTables.Name = "menuTranslatedTables"; - menuTranslatedTables.ShortcutKeys = Keys.Control | Keys.Shift | Keys.T; - menuTranslatedTables.Size = new Size(200, 32); - menuTranslatedTables.Text = "Generate Translated Tables"; - // - // menuCreateLocalizedLabelsTable - // - menuCreateLocalizedLabelsTable.Name = "menuCreateLocalizedLabelsTable"; - menuCreateLocalizedLabelsTable.ShortcutKeys = Keys.Control | Keys.C; - menuCreateLocalizedLabelsTable.Size = new Size(469, 26); - menuCreateLocalizedLabelsTable.Text = "Create Localized Labels Table"; - menuCreateLocalizedLabelsTable.Click += CreateLocalizedLabelsTable; - // - // menuAddLabelsToLocalizedLabelsTable - // - menuAddLabelsToLocalizedLabelsTable.Name = "menuAddLabelsToLocalizedLabelsTable"; - menuAddLabelsToLocalizedLabelsTable.ShortcutKeys = Keys.Control | Keys.A; - menuAddLabelsToLocalizedLabelsTable.Size = new Size(469, 26); - menuAddLabelsToLocalizedLabelsTable.Text = "Add Labels to Localized Labels Table..."; - menuAddLabelsToLocalizedLabelsTable.Click += AddLocalizedLabels; - // - // menuGenerateTranslatedLocalizedLabelsTable - // - menuGenerateTranslatedLocalizedLabelsTable.Name = "menuGenerateTranslatedLocalizedLabelsTable"; - menuGenerateTranslatedLocalizedLabelsTable.ShortcutKeys = Keys.Control | Keys.L; - menuGenerateTranslatedLocalizedLabelsTable.Size = new Size(469, 26); - menuGenerateTranslatedLocalizedLabelsTable.Text = "Generate Translated Localized Labels Table"; - menuGenerateTranslatedLocalizedLabelsTable.Click += GenerateTranslatedLocalizedLabelsTable; - // - // menuGenerateTranslatedDatasetObjectNamesTable - // - menuGenerateTranslatedDatasetObjectNamesTable.Name = "menuGenerateTranslatedDatasetObjectNamesTable"; - menuGenerateTranslatedDatasetObjectNamesTable.ShortcutKeys = Keys.Control | Keys.D; - menuGenerateTranslatedDatasetObjectNamesTable.Size = new Size(469, 26); - menuGenerateTranslatedDatasetObjectNamesTable.Text = "Generate Translated Dataset Object Names Table"; - menuGenerateTranslatedDatasetObjectNamesTable.Click += GenerateTranslatedDatasetObjectNamesTable; - // - // menuSyncDataModel - // - menuSyncDataModel.Alignment = ToolStripItemAlignment.Right; - menuSyncDataModel.BackColor = Color.LemonChiffon; - menuSyncDataModel.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); - menuSyncDataModel.ForeColor = Color.DarkRed; - menuSyncDataModel.Margin = new Padding(4); - menuSyncDataModel.Name = "menuSyncDataModel"; - menuSyncDataModel.Size = new Size(140, 24); - menuSyncDataModel.Text = "Sync Data Model"; - menuSyncDataModel.Click += SyncDataModel; - // - // statusStrip1 - // - statusStrip1.ImageScalingSize = new Size(20, 20); - statusStrip1.Items.AddRange(new ToolStripItem[] { labelStatusBar, toolStripStatusLabel1, toolStripStatusLabel2 }); - statusStrip1.Location = new Point(0, 717); - statusStrip1.Name = "statusStrip1"; - statusStrip1.Padding = new Padding(1, 0, 16, 0); - statusStrip1.Size = new Size(1519, 22); - statusStrip1.TabIndex = 9; - statusStrip1.Text = "statusStrip1"; - // - // labelStatusBar - // - labelStatusBar.Name = "labelStatusBar"; - labelStatusBar.Size = new Size(0, 16); - // - // toolStripStatusLabel1 - // - toolStripStatusLabel1.Name = "toolStripStatusLabel1"; - toolStripStatusLabel1.Size = new Size(0, 16); - // - // toolStripStatusLabel2 - // - toolStripStatusLabel2.Name = "toolStripStatusLabel2"; - toolStripStatusLabel2.Size = new Size(0, 16); - // - // contextMenuSecondaryLanguageHeader - // - contextMenuSecondaryLanguageHeader.ImageScalingSize = new Size(20, 20); - contextMenuSecondaryLanguageHeader.Items.AddRange(new ToolStripItem[] { toolStripSeparator5, menuCommandDuplicateSecondaryLanguage, menuCommandCopyToSecondaryLanguage, toolStripSeparator3, menuCommandExportLanguageToTranslationSheet, toolStripSeparator4, menuCommandDeleteSecondaryLanguage, toolStripSeparator6 }); - contextMenuSecondaryLanguageHeader.Name = "contextMenuSecondaryLanguageHeader"; - contextMenuSecondaryLanguageHeader.Size = new Size(341, 124); - contextMenuSecondaryLanguageHeader.Text = "Actions on This Language"; - // - // toolStripSeparator5 - // - toolStripSeparator5.Name = "toolStripSeparator5"; - toolStripSeparator5.Size = new Size(337, 6); - // - // menuCommandDuplicateSecondaryLanguage - // - menuCommandDuplicateSecondaryLanguage.Name = "menuCommandDuplicateSecondaryLanguage"; - menuCommandDuplicateSecondaryLanguage.Size = new Size(340, 24); - menuCommandDuplicateSecondaryLanguage.Text = "Copy Translations to New Language"; - menuCommandDuplicateSecondaryLanguage.MouseDown += menuCommandDuplicateSecondaryLanguage_MouseDown; - // - // menuCommandCopyToSecondaryLanguage - // - menuCommandCopyToSecondaryLanguage.Name = "menuCommandCopyToSecondaryLanguage"; - menuCommandCopyToSecondaryLanguage.Size = new Size(340, 24); - menuCommandCopyToSecondaryLanguage.Text = "Copy Translations to Existing Language"; - menuCommandCopyToSecondaryLanguage.MouseDown += menuCommandCopyToSecondaryLanguage_MouseDown; - // - // toolStripSeparator3 - // - toolStripSeparator3.Name = "toolStripSeparator3"; - toolStripSeparator3.Size = new Size(337, 6); - // - // menuCommandExportLanguageToTranslationSheet - // - menuCommandExportLanguageToTranslationSheet.Name = "menuCommandExportLanguageToTranslationSheet"; - menuCommandExportLanguageToTranslationSheet.Size = new Size(340, 24); - menuCommandExportLanguageToTranslationSheet.Text = "Export Language to Translation Sheet"; - menuCommandExportLanguageToTranslationSheet.MouseDown += menuCommandExportLanguageToTranslationSheet_MouseDown; - // - // toolStripSeparator4 - // - toolStripSeparator4.Name = "toolStripSeparator4"; - toolStripSeparator4.Size = new Size(337, 6); - // - // menuCommandDeleteSecondaryLanguage - // - menuCommandDeleteSecondaryLanguage.Name = "menuCommandDeleteSecondaryLanguage"; - menuCommandDeleteSecondaryLanguage.Size = new Size(340, 24); - menuCommandDeleteSecondaryLanguage.Text = "Delete This Language from Data Model"; - menuCommandDeleteSecondaryLanguage.MouseDown += menuCommandDeleteSecondaryLanguage_MouseDown; - // - // toolStripSeparator6 - // - toolStripSeparator6.Name = "toolStripSeparator6"; - toolStripSeparator6.Size = new Size(337, 6); - // - // FormMain - // - AutoScaleDimensions = new SizeF(8F, 20F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(1519, 739); - Controls.Add(gridTranslations); - Controls.Add(statusStrip1); - Controls.Add(panel2); - Icon = (Icon)resources.GetObject("$this.Icon"); - MainMenuStrip = menuStrip; - Name = "FormMain"; - StartPosition = FormStartPosition.CenterScreen; - Text = "Translations Builder"; - Load += onLoad; - ((System.ComponentModel.ISupportInitialize)gridTranslations).EndInit(); - groupDatasetProperties.ResumeLayout(false); - groupDatasetProperties.PerformLayout(); - panel2.ResumeLayout(false); - panel2.PerformLayout(); - grpMachineTranslationsAllLanguages.ResumeLayout(false); - grpImportExportTranslations.ResumeLayout(false); - grpImportExportTranslations.PerformLayout(); - grpMachineTranslationsSingleLanguage.ResumeLayout(false); - grpSecondaryCultures.ResumeLayout(false); - menuStrip.ResumeLayout(false); - menuStrip.PerformLayout(); - statusStrip1.ResumeLayout(false); - statusStrip1.PerformLayout(); - contextMenuSecondaryLanguageHeader.ResumeLayout(false); - ResumeLayout(false); - PerformLayout(); - } + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain)); + gridTranslations = new DataGridView(); + dialogOpenFile = new OpenFileDialog(); + groupDatasetProperties = new GroupBox(); + lbldefaultLanguageNameLabel = new Label(); + txtdefaultLanguage = new TextBox(); + txtCompatibilityLevel = new TextBox(); + lblCompatibilityLevel = new Label(); + txtDatasetName = new TextBox(); + txtServerConnection = new TextBox(); + lblDatasetName = new Label(); + lblServerConnection = new Label(); + panel2 = new Panel(); + grpMachineTranslationsAllLanguages = new GroupBox(); + btnFillAllEmptyTranslations = new Button(); + btnGenenrateAllMachineTranslations = new Button(); + grpImportExportTranslations = new GroupBox(); + btnExportAllTranslationSheets = new Button(); + chkOpenExportInExcel = new CheckBox(); + listLanguageForTransation = new ComboBox(); + btnExportTranslations = new Button(); + btnImportTranslations = new Button(); + btnExportTranslationsSheet = new Button(); + grpMachineTranslationsSingleLanguage = new GroupBox(); + btnFillEmptyTranslations = new Button(); + btnGenenrateMachineTranslations = new Button(); + listCultureToPopulate = new ComboBox(); + grpSecondaryCultures = new GroupBox(); + btnAddSecondaryLanguage = new Button(); + listSecondaryLanguages = new ListBox(); + menuStrip = new MenuStrip(); + menuConnection = new ToolStripMenuItem(); + menuConnect = new ToolStripMenuItem(); + menuDisconnect = new ToolStripMenuItem(); + toolStripSeparator2 = new ToolStripSeparator(); + menuConfigureSettings = new ToolStripMenuItem(); + toolStripSeparator1 = new ToolStripSeparator(); + exportModelAsJson = new ToolStripMenuItem(); + menuTranslatedTables = new ToolStripMenuItem(); + menuCreateLocalizedLabelsTable = new ToolStripMenuItem(); + menuAddLabelsToLocalizedLabelsTable = new ToolStripMenuItem(); + menuGenerateTranslatedLocalizedLabelsTable = new ToolStripMenuItem(); + menuGenerateTranslatedDatasetObjectNamesTable = new ToolStripMenuItem(); + menuSyncDataModel = new ToolStripMenuItem(); + statusStrip1 = new StatusStrip(); + labelStatusBar = new ToolStripStatusLabel(); + toolStripStatusLabel1 = new ToolStripStatusLabel(); + toolStripStatusLabel2 = new ToolStripStatusLabel(); + tooltipDatasetName = new ToolTip(components); + tooltipServiceConnection = new ToolTip(components); + contextMenuSecondaryLanguageHeader = new ContextMenuStrip(components); + toolStripSeparator5 = new ToolStripSeparator(); + menuCommandDuplicateSecondaryLanguage = new ToolStripMenuItem(); + menuCommandCopyToSecondaryLanguage = new ToolStripMenuItem(); + toolStripSeparator3 = new ToolStripSeparator(); + menuCommandExportLanguageToTranslationSheet = new ToolStripMenuItem(); + toolStripSeparator4 = new ToolStripSeparator(); + menuCommandDeleteSecondaryLanguage = new ToolStripMenuItem(); + toolStripSeparator6 = new ToolStripSeparator(); + ((System.ComponentModel.ISupportInitialize)gridTranslations).BeginInit(); + groupDatasetProperties.SuspendLayout(); + panel2.SuspendLayout(); + grpMachineTranslationsAllLanguages.SuspendLayout(); + grpImportExportTranslations.SuspendLayout(); + grpMachineTranslationsSingleLanguage.SuspendLayout(); + grpSecondaryCultures.SuspendLayout(); + menuStrip.SuspendLayout(); + statusStrip1.SuspendLayout(); + contextMenuSecondaryLanguageHeader.SuspendLayout(); + SuspendLayout(); + // + // gridTranslations + // + gridTranslations.AllowUserToAddRows = false; + gridTranslations.AllowUserToDeleteRows = false; + gridTranslations.AllowUserToResizeColumns = false; + gridTranslations.AllowUserToResizeRows = false; + dataGridViewCellStyle1.Alignment = DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = Color.Black; + dataGridViewCellStyle1.Font = new Font("Arial Black", 7F, FontStyle.Bold, GraphicsUnit.Point); + dataGridViewCellStyle1.ForeColor = SystemColors.WindowText; + dataGridViewCellStyle1.SelectionBackColor = SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = DataGridViewTriState.True; + gridTranslations.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1; + gridTranslations.ColumnHeadersHeight = 29; + gridTranslations.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + gridTranslations.Dock = DockStyle.Fill; + gridTranslations.EditMode = DataGridViewEditMode.EditProgrammatically; + gridTranslations.EnableHeadersVisualStyles = false; + gridTranslations.Location = new Point(0, 242); + gridTranslations.Margin = new Padding(3, 2, 3, 2); + gridTranslations.MultiSelect = false; + gridTranslations.Name = "gridTranslations"; + gridTranslations.RowHeadersWidth = 24; + gridTranslations.RowTemplate.Height = 28; + gridTranslations.Size = new Size(1329, 290); + gridTranslations.TabIndex = 0; + gridTranslations.TabStop = false; + gridTranslations.CellBeginEdit += gridTranslations_CellBeginEdit; + gridTranslations.CellDoubleClick += gridTranslations_CellDoubleClick; + gridTranslations.CellEndEdit += gridTranslations_CellEndEdit; + // + // groupDatasetProperties + // + groupDatasetProperties.Controls.Add(lbldefaultLanguageNameLabel); + groupDatasetProperties.Controls.Add(txtdefaultLanguage); + groupDatasetProperties.Controls.Add(txtCompatibilityLevel); + groupDatasetProperties.Controls.Add(lblCompatibilityLevel); + groupDatasetProperties.Controls.Add(txtDatasetName); + groupDatasetProperties.Controls.Add(txtServerConnection); + groupDatasetProperties.Controls.Add(lblDatasetName); + groupDatasetProperties.Controls.Add(lblServerConnection); + groupDatasetProperties.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + groupDatasetProperties.Location = new Point(8, 35); + groupDatasetProperties.Margin = new Padding(3, 2, 3, 2); + groupDatasetProperties.Name = "groupDatasetProperties"; + groupDatasetProperties.Padding = new Padding(3, 2, 3, 2); + groupDatasetProperties.Size = new Size(413, 202); + groupDatasetProperties.TabIndex = 0; + groupDatasetProperties.TabStop = false; + groupDatasetProperties.Text = "Dataset Properties"; + // + // lbldefaultLanguageNameLabel + // + lbldefaultLanguageNameLabel.AutoSize = true; + lbldefaultLanguageNameLabel.Location = new Point(5, 86); + lbldefaultLanguageNameLabel.Name = "lbldefaultLanguageNameLabel"; + lbldefaultLanguageNameLabel.Size = new Size(103, 15); + lbldefaultLanguageNameLabel.TabIndex = 33; + lbldefaultLanguageNameLabel.Text = "Default Language:"; + // + // txtdefaultLanguage + // + txtdefaultLanguage.Location = new Point(123, 84); + txtdefaultLanguage.Margin = new Padding(3, 2, 3, 2); + txtdefaultLanguage.Name = "txtdefaultLanguage"; + txtdefaultLanguage.Size = new Size(269, 23); + txtdefaultLanguage.TabIndex = 32; + txtdefaultLanguage.TabStop = false; + // + // txtCompatibilityLevel + // + txtCompatibilityLevel.Location = new Point(123, 114); + txtCompatibilityLevel.Margin = new Padding(3, 2, 3, 2); + txtCompatibilityLevel.Name = "txtCompatibilityLevel"; + txtCompatibilityLevel.ReadOnly = true; + txtCompatibilityLevel.Size = new Size(269, 23); + txtCompatibilityLevel.TabIndex = 22; + txtCompatibilityLevel.TabStop = false; + // + // lblCompatibilityLevel + // + lblCompatibilityLevel.AutoSize = true; + lblCompatibilityLevel.Location = new Point(29, 115); + lblCompatibilityLevel.Name = "lblCompatibilityLevel"; + lblCompatibilityLevel.Size = new Size(83, 15); + lblCompatibilityLevel.TabIndex = 21; + lblCompatibilityLevel.Text = "Compat Level:"; + lblCompatibilityLevel.TextAlign = ContentAlignment.MiddleRight; + // + // txtDatasetName + // + txtDatasetName.Location = new Point(123, 54); + txtDatasetName.Margin = new Padding(3, 2, 3, 2); + txtDatasetName.Name = "txtDatasetName"; + txtDatasetName.ReadOnly = true; + txtDatasetName.Size = new Size(269, 23); + txtDatasetName.TabIndex = 20; + txtDatasetName.TabStop = false; + // + // txtServerConnection + // + txtServerConnection.Location = new Point(123, 24); + txtServerConnection.Margin = new Padding(9, 2, 3, 2); + txtServerConnection.Name = "txtServerConnection"; + txtServerConnection.ReadOnly = true; + txtServerConnection.Size = new Size(269, 23); + txtServerConnection.TabIndex = 0; + txtServerConnection.TabStop = false; + // + // lblDatasetName + // + lblDatasetName.AutoSize = true; + lblDatasetName.Location = new Point(25, 56); + lblDatasetName.Name = "lblDatasetName"; + lblDatasetName.Size = new Size(84, 15); + lblDatasetName.TabIndex = 18; + lblDatasetName.Text = "Dataset Name:"; + lblDatasetName.TextAlign = ContentAlignment.MiddleRight; + // + // lblServerConnection + // + lblServerConnection.AutoSize = true; + lblServerConnection.Location = new Point(43, 27); + lblServerConnection.Name = "lblServerConnection"; + lblServerConnection.Size = new Size(72, 15); + lblServerConnection.TabIndex = 17; + lblServerConnection.Text = "Connection:"; + lblServerConnection.TextAlign = ContentAlignment.MiddleRight; + // + // panel2 + // + panel2.BackColor = SystemColors.ActiveCaption; + panel2.Controls.Add(grpMachineTranslationsAllLanguages); + panel2.Controls.Add(grpImportExportTranslations); + panel2.Controls.Add(grpMachineTranslationsSingleLanguage); + panel2.Controls.Add(grpSecondaryCultures); + panel2.Controls.Add(groupDatasetProperties); + panel2.Controls.Add(menuStrip); + panel2.Dock = DockStyle.Top; + panel2.Location = new Point(0, 0); + panel2.Margin = new Padding(3, 2, 3, 2); + panel2.Name = "panel2"; + panel2.Size = new Size(1329, 242); + panel2.TabIndex = 8; + // + // grpMachineTranslationsAllLanguages + // + grpMachineTranslationsAllLanguages.Controls.Add(btnFillAllEmptyTranslations); + grpMachineTranslationsAllLanguages.Controls.Add(btnGenenrateAllMachineTranslations); + grpMachineTranslationsAllLanguages.Location = new Point(858, 143); + grpMachineTranslationsAllLanguages.Margin = new Padding(3, 2, 3, 2); + grpMachineTranslationsAllLanguages.Name = "grpMachineTranslationsAllLanguages"; + grpMachineTranslationsAllLanguages.Padding = new Padding(3, 2, 3, 2); + grpMachineTranslationsAllLanguages.Size = new Size(257, 94); + grpMachineTranslationsAllLanguages.TabIndex = 10; + grpMachineTranslationsAllLanguages.TabStop = false; + grpMachineTranslationsAllLanguages.Text = "Machine Translations - All Languages"; + // + // btnFillAllEmptyTranslations + // + btnFillAllEmptyTranslations.BackColor = SystemColors.ControlLight; + btnFillAllEmptyTranslations.Location = new Point(10, 54); + btnFillAllEmptyTranslations.Margin = new Padding(3, 2, 3, 2); + btnFillAllEmptyTranslations.Name = "btnFillAllEmptyTranslations"; + btnFillAllEmptyTranslations.Size = new Size(234, 28); + btnFillAllEmptyTranslations.TabIndex = 15; + btnFillAllEmptyTranslations.Text = "Fill All Empty Translations"; + btnFillAllEmptyTranslations.UseVisualStyleBackColor = false; + btnFillAllEmptyTranslations.Click += FillAllEmptyTranslations; + // + // btnGenenrateAllMachineTranslations + // + btnGenenrateAllMachineTranslations.BackColor = SystemColors.ControlLight; + btnGenenrateAllMachineTranslations.Location = new Point(9, 21); + btnGenenrateAllMachineTranslations.Margin = new Padding(3, 2, 3, 2); + btnGenenrateAllMachineTranslations.Name = "btnGenenrateAllMachineTranslations"; + btnGenenrateAllMachineTranslations.Size = new Size(235, 27); + btnGenenrateAllMachineTranslations.TabIndex = 14; + btnGenenrateAllMachineTranslations.Text = "Generate All Translations"; + btnGenenrateAllMachineTranslations.UseVisualStyleBackColor = false; + btnGenenrateAllMachineTranslations.Click += GenenrateAllMachineTranslations; + // + // grpImportExportTranslations + // + grpImportExportTranslations.Controls.Add(btnExportAllTranslationSheets); + grpImportExportTranslations.Controls.Add(chkOpenExportInExcel); + grpImportExportTranslations.Controls.Add(listLanguageForTransation); + grpImportExportTranslations.Controls.Add(btnExportTranslations); + grpImportExportTranslations.Controls.Add(btnImportTranslations); + grpImportExportTranslations.Controls.Add(btnExportTranslationsSheet); + grpImportExportTranslations.Location = new Point(639, 35); + grpImportExportTranslations.Margin = new Padding(3, 2, 3, 2); + grpImportExportTranslations.Name = "grpImportExportTranslations"; + grpImportExportTranslations.Padding = new Padding(3, 2, 3, 2); + grpImportExportTranslations.Size = new Size(206, 202); + grpImportExportTranslations.TabIndex = 4; + grpImportExportTranslations.TabStop = false; + grpImportExportTranslations.Text = "Export/Import Translations"; + // + // btnExportAllTranslationSheets + // + btnExportAllTranslationSheets.BackColor = SystemColors.ControlLight; + btnExportAllTranslationSheets.Location = new Point(11, 108); + btnExportAllTranslationSheets.Margin = new Padding(3, 2, 3, 2); + btnExportAllTranslationSheets.Name = "btnExportAllTranslationSheets"; + btnExportAllTranslationSheets.Size = new Size(183, 27); + btnExportAllTranslationSheets.TabIndex = 10; + btnExportAllTranslationSheets.Text = "Export All Translation Sheets"; + btnExportAllTranslationSheets.UseVisualStyleBackColor = false; + btnExportAllTranslationSheets.Click += ExportAllTranslationSheets; + // + // chkOpenExportInExcel + // + chkOpenExportInExcel.AutoSize = true; + chkOpenExportInExcel.Checked = true; + chkOpenExportInExcel.CheckState = CheckState.Checked; + chkOpenExportInExcel.Location = new Point(27, 140); + chkOpenExportInExcel.Margin = new Padding(3, 2, 3, 2); + chkOpenExportInExcel.Name = "chkOpenExportInExcel"; + chkOpenExportInExcel.Size = new Size(135, 19); + chkOpenExportInExcel.TabIndex = 9; + chkOpenExportInExcel.Text = "Open Export in Excel"; + chkOpenExportInExcel.UseVisualStyleBackColor = true; + // + // listLanguageForTransation + // + listLanguageForTransation.BackColor = SystemColors.Window; + listLanguageForTransation.FormattingEnabled = true; + listLanguageForTransation.Location = new Point(11, 51); + listLanguageForTransation.Margin = new Padding(3, 2, 3, 2); + listLanguageForTransation.Name = "listLanguageForTransation"; + listLanguageForTransation.Size = new Size(182, 23); + listLanguageForTransation.TabIndex = 6; + // + // btnExportTranslations + // + btnExportTranslations.BackColor = SystemColors.ControlLight; + btnExportTranslations.Location = new Point(10, 76); + btnExportTranslations.Margin = new Padding(3, 2, 3, 2); + btnExportTranslations.Name = "btnExportTranslations"; + btnExportTranslations.Size = new Size(184, 27); + btnExportTranslations.TabIndex = 7; + btnExportTranslations.Text = "Export All Translations"; + btnExportTranslations.UseVisualStyleBackColor = false; + btnExportTranslations.Click += ExportAllTranslations; + // + // btnImportTranslations + // + btnImportTranslations.BackColor = SystemColors.ControlLight; + btnImportTranslations.Location = new Point(10, 162); + btnImportTranslations.Margin = new Padding(3, 2, 3, 2); + btnImportTranslations.Name = "btnImportTranslations"; + btnImportTranslations.Size = new Size(184, 27); + btnImportTranslations.TabIndex = 8; + btnImportTranslations.Text = "Import Translations"; + btnImportTranslations.UseVisualStyleBackColor = false; + btnImportTranslations.Click += ImportTranslations; + // + // btnExportTranslationsSheet + // + btnExportTranslationsSheet.AutoSizeMode = AutoSizeMode.GrowAndShrink; + btnExportTranslationsSheet.BackColor = SystemColors.ControlLight; + btnExportTranslationsSheet.Location = new Point(10, 20); + btnExportTranslationsSheet.Margin = new Padding(3, 2, 3, 2); + btnExportTranslationsSheet.Name = "btnExportTranslationsSheet"; + btnExportTranslationsSheet.Size = new Size(184, 27); + btnExportTranslationsSheet.TabIndex = 5; + btnExportTranslationsSheet.Text = "Export Translations Sheet"; + btnExportTranslationsSheet.UseVisualStyleBackColor = false; + btnExportTranslationsSheet.Click += ExportTranslationsSheet; + // + // grpMachineTranslationsSingleLanguage + // + grpMachineTranslationsSingleLanguage.Controls.Add(btnFillEmptyTranslations); + grpMachineTranslationsSingleLanguage.Controls.Add(btnGenenrateMachineTranslations); + grpMachineTranslationsSingleLanguage.Controls.Add(listCultureToPopulate); + grpMachineTranslationsSingleLanguage.Location = new Point(856, 35); + grpMachineTranslationsSingleLanguage.Margin = new Padding(3, 2, 3, 2); + grpMachineTranslationsSingleLanguage.Name = "grpMachineTranslationsSingleLanguage"; + grpMachineTranslationsSingleLanguage.Padding = new Padding(3, 2, 3, 2); + grpMachineTranslationsSingleLanguage.Size = new Size(257, 105); + grpMachineTranslationsSingleLanguage.TabIndex = 9; + grpMachineTranslationsSingleLanguage.TabStop = false; + grpMachineTranslationsSingleLanguage.Text = "Machine Translations - Single Language"; + // + // btnFillEmptyTranslations + // + btnFillEmptyTranslations.BackColor = SystemColors.ControlLight; + btnFillEmptyTranslations.ForeColor = SystemColors.ControlText; + btnFillEmptyTranslations.Location = new Point(7, 74); + btnFillEmptyTranslations.Margin = new Padding(3, 2, 3, 2); + btnFillEmptyTranslations.Name = "btnFillEmptyTranslations"; + btnFillEmptyTranslations.Size = new Size(237, 27); + btnFillEmptyTranslations.TabIndex = 14; + btnFillEmptyTranslations.Text = "Fill Empty Translations"; + btnFillEmptyTranslations.UseVisualStyleBackColor = false; + btnFillEmptyTranslations.Click += FillEmptyTranslations; + // + // btnGenenrateMachineTranslations + // + btnGenenrateMachineTranslations.BackColor = SystemColors.ControlLight; + btnGenenrateMachineTranslations.ForeColor = SystemColors.ControlText; + btnGenenrateMachineTranslations.Location = new Point(7, 20); + btnGenenrateMachineTranslations.Margin = new Padding(3, 2, 3, 2); + btnGenenrateMachineTranslations.Name = "btnGenenrateMachineTranslations"; + btnGenenrateMachineTranslations.Size = new Size(237, 27); + btnGenenrateMachineTranslations.TabIndex = 10; + btnGenenrateMachineTranslations.Text = "Generate Translations"; + btnGenenrateMachineTranslations.UseVisualStyleBackColor = false; + btnGenenrateMachineTranslations.Click += GenenrateMachineTranslations; + // + // listCultureToPopulate + // + listCultureToPopulate.FormattingEnabled = true; + listCultureToPopulate.Location = new Point(7, 50); + listCultureToPopulate.Margin = new Padding(3, 2, 3, 2); + listCultureToPopulate.Name = "listCultureToPopulate"; + listCultureToPopulate.Size = new Size(238, 23); + listCultureToPopulate.TabIndex = 11; + // + // grpSecondaryCultures + // + grpSecondaryCultures.Controls.Add(btnAddSecondaryLanguage); + grpSecondaryCultures.Controls.Add(listSecondaryLanguages); + grpSecondaryCultures.Location = new Point(432, 34); + grpSecondaryCultures.Margin = new Padding(3, 2, 3, 2); + grpSecondaryCultures.Name = "grpSecondaryCultures"; + grpSecondaryCultures.Padding = new Padding(3, 2, 3, 2); + grpSecondaryCultures.Size = new Size(196, 202); + grpSecondaryCultures.TabIndex = 2; + grpSecondaryCultures.TabStop = false; + grpSecondaryCultures.Text = "Secondary Languages"; + // + // btnAddSecondaryLanguage + // + btnAddSecondaryLanguage.Location = new Point(7, 20); + btnAddSecondaryLanguage.Margin = new Padding(3, 2, 3, 2); + btnAddSecondaryLanguage.Name = "btnAddSecondaryLanguage"; + btnAddSecondaryLanguage.Size = new Size(175, 27); + btnAddSecondaryLanguage.TabIndex = 3; + btnAddSecondaryLanguage.Text = "Add Language"; + btnAddSecondaryLanguage.UseVisualStyleBackColor = true; + btnAddSecondaryLanguage.Click += AddSecondaryLanguage; + // + // listSecondaryLanguages + // + listSecondaryLanguages.FormattingEnabled = true; + listSecondaryLanguages.ItemHeight = 15; + listSecondaryLanguages.Location = new Point(8, 52); + listSecondaryLanguages.Margin = new Padding(3, 2, 3, 2); + listSecondaryLanguages.Name = "listSecondaryLanguages"; + listSecondaryLanguages.Size = new Size(176, 139); + listSecondaryLanguages.TabIndex = 0; + listSecondaryLanguages.TabStop = false; + listSecondaryLanguages.UseTabStops = false; + // + // menuStrip + // + menuStrip.BackColor = Color.FromArgb(221, 221, 221); + menuStrip.ImageScalingSize = new Size(20, 20); + menuStrip.Items.AddRange(new ToolStripItem[] { menuConnection, menuTranslatedTables, menuSyncDataModel }); + menuStrip.Location = new Point(0, 0); + menuStrip.Name = "menuStrip"; + menuStrip.Padding = new Padding(5, 2, 5, 2); + menuStrip.Size = new Size(1329, 31); + menuStrip.TabIndex = 1; + menuStrip.Text = "menuMain"; + // + // menuConnection + // + menuConnection.DropDownItems.AddRange(new ToolStripItem[] { menuConnect, menuDisconnect, toolStripSeparator2, menuConfigureSettings, toolStripSeparator1, exportModelAsJson }); + menuConnection.Name = "menuConnection"; + menuConnection.ShortcutKeys = Keys.Control | Keys.Shift | Keys.S; + menuConnection.Size = new Size(123, 27); + menuConnection.Text = "Dataset Connection"; + // + // menuConnect + // + menuConnect.Name = "menuConnect"; + menuConnect.ShortcutKeys = Keys.Control | Keys.Shift | Keys.C; + menuConnect.Size = new Size(253, 22); + menuConnect.Text = "Connect..."; + menuConnect.Click += menuConnect_Click; + // + // menuDisconnect + // + menuDisconnect.Name = "menuDisconnect"; + menuDisconnect.ShortcutKeys = Keys.Control | Keys.Shift | Keys.D; + menuDisconnect.Size = new Size(253, 22); + menuDisconnect.Text = "Disconnect"; + menuDisconnect.Click += menuDisconnect_Click; + // + // toolStripSeparator2 + // + toolStripSeparator2.Name = "toolStripSeparator2"; + toolStripSeparator2.Size = new Size(250, 6); + // + // menuConfigureSettings + // + menuConfigureSettings.Name = "menuConfigureSettings"; + menuConfigureSettings.ShortcutKeys = Keys.Control | Keys.Shift | Keys.S; + menuConfigureSettings.Size = new Size(253, 22); + menuConfigureSettings.Text = "Configure Settings..."; + menuConfigureSettings.Click += ConfigureSettings; + // + // toolStripSeparator1 + // + toolStripSeparator1.Name = "toolStripSeparator1"; + toolStripSeparator1.Size = new Size(250, 6); + // + // exportModelAsJson + // + exportModelAsJson.Name = "exportModelAsJson"; + exportModelAsJson.ShortcutKeys = Keys.Control | Keys.E; + exportModelAsJson.Size = new Size(253, 22); + exportModelAsJson.Text = "Export As Model.bim"; + exportModelAsJson.Click += exportModelAsJson_Click; + // + // menuTranslatedTables + // + menuTranslatedTables.DropDownItems.AddRange(new ToolStripItem[] { menuCreateLocalizedLabelsTable, menuAddLabelsToLocalizedLabelsTable, menuGenerateTranslatedLocalizedLabelsTable, menuGenerateTranslatedDatasetObjectNamesTable }); + menuTranslatedTables.Name = "menuTranslatedTables"; + menuTranslatedTables.ShortcutKeys = Keys.Control | Keys.Shift | Keys.T; + menuTranslatedTables.Size = new Size(157, 27); + menuTranslatedTables.Text = "Generate Translated Tables"; + // + // menuCreateLocalizedLabelsTable + // + menuCreateLocalizedLabelsTable.Name = "menuCreateLocalizedLabelsTable"; + menuCreateLocalizedLabelsTable.ShortcutKeys = Keys.Control | Keys.T; + menuCreateLocalizedLabelsTable.Size = new Size(369, 22); + menuCreateLocalizedLabelsTable.Text = "Create Localized Labels Table"; + menuCreateLocalizedLabelsTable.Click += CreateLocalizedLabelsTable; + // + // menuAddLabelsToLocalizedLabelsTable + // + menuAddLabelsToLocalizedLabelsTable.Name = "menuAddLabelsToLocalizedLabelsTable"; + menuAddLabelsToLocalizedLabelsTable.ShortcutKeys = Keys.Control | Keys.A; + menuAddLabelsToLocalizedLabelsTable.Size = new Size(369, 22); + menuAddLabelsToLocalizedLabelsTable.Text = "Add Labels to Localized Labels Table..."; + menuAddLabelsToLocalizedLabelsTable.Click += AddLocalizedLabels; + // + // menuGenerateTranslatedLocalizedLabelsTable + // + menuGenerateTranslatedLocalizedLabelsTable.Name = "menuGenerateTranslatedLocalizedLabelsTable"; + menuGenerateTranslatedLocalizedLabelsTable.ShortcutKeys = Keys.Control | Keys.L; + menuGenerateTranslatedLocalizedLabelsTable.Size = new Size(369, 22); + menuGenerateTranslatedLocalizedLabelsTable.Text = "Generate Translated Localized Labels Table"; + menuGenerateTranslatedLocalizedLabelsTable.Click += GenerateTranslatedLocalizedLabelsTable; + // + // menuGenerateTranslatedDatasetObjectNamesTable + // + menuGenerateTranslatedDatasetObjectNamesTable.Name = "menuGenerateTranslatedDatasetObjectNamesTable"; + menuGenerateTranslatedDatasetObjectNamesTable.ShortcutKeys = Keys.Control | Keys.D; + menuGenerateTranslatedDatasetObjectNamesTable.Size = new Size(369, 22); + menuGenerateTranslatedDatasetObjectNamesTable.Text = "Generate Translated Dataset Object Names Table"; + menuGenerateTranslatedDatasetObjectNamesTable.Click += GenerateTranslatedDatasetObjectNamesTable; + // + // menuSyncDataModel + // + menuSyncDataModel.Alignment = ToolStripItemAlignment.Right; + menuSyncDataModel.BackColor = Color.LemonChiffon; + menuSyncDataModel.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); + menuSyncDataModel.ForeColor = Color.DarkRed; + menuSyncDataModel.Margin = new Padding(4); + menuSyncDataModel.Name = "menuSyncDataModel"; + menuSyncDataModel.Size = new Size(112, 19); + menuSyncDataModel.Text = "Sync Data Model"; + menuSyncDataModel.Click += SyncDataModel; + // + // statusStrip1 + // + statusStrip1.ImageScalingSize = new Size(20, 20); + statusStrip1.Items.AddRange(new ToolStripItem[] { labelStatusBar, toolStripStatusLabel1, toolStripStatusLabel2 }); + statusStrip1.Location = new Point(0, 532); + statusStrip1.Name = "statusStrip1"; + statusStrip1.Size = new Size(1329, 22); + statusStrip1.TabIndex = 9; + statusStrip1.Text = "statusStrip1"; + // + // labelStatusBar + // + labelStatusBar.Name = "labelStatusBar"; + labelStatusBar.Size = new Size(0, 17); + // + // toolStripStatusLabel1 + // + toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + toolStripStatusLabel1.Size = new Size(0, 17); + // + // toolStripStatusLabel2 + // + toolStripStatusLabel2.Name = "toolStripStatusLabel2"; + toolStripStatusLabel2.Size = new Size(0, 17); + // + // contextMenuSecondaryLanguageHeader + // + contextMenuSecondaryLanguageHeader.ImageScalingSize = new Size(20, 20); + contextMenuSecondaryLanguageHeader.Items.AddRange(new ToolStripItem[] { toolStripSeparator5, menuCommandDuplicateSecondaryLanguage, menuCommandCopyToSecondaryLanguage, toolStripSeparator3, menuCommandExportLanguageToTranslationSheet, toolStripSeparator4, menuCommandDeleteSecondaryLanguage, toolStripSeparator6 }); + contextMenuSecondaryLanguageHeader.Name = "contextMenuSecondaryLanguageHeader"; + contextMenuSecondaryLanguageHeader.Size = new Size(281, 116); + contextMenuSecondaryLanguageHeader.Text = "Actions on This Language"; + // + // toolStripSeparator5 + // + toolStripSeparator5.Name = "toolStripSeparator5"; + toolStripSeparator5.Size = new Size(277, 6); + // + // menuCommandDuplicateSecondaryLanguage + // + menuCommandDuplicateSecondaryLanguage.Name = "menuCommandDuplicateSecondaryLanguage"; + menuCommandDuplicateSecondaryLanguage.Size = new Size(280, 22); + menuCommandDuplicateSecondaryLanguage.Text = "Copy Translations to New Language"; + menuCommandDuplicateSecondaryLanguage.MouseDown += menuCommandDuplicateSecondaryLanguage_MouseDown; + // + // menuCommandCopyToSecondaryLanguage + // + menuCommandCopyToSecondaryLanguage.Name = "menuCommandCopyToSecondaryLanguage"; + menuCommandCopyToSecondaryLanguage.Size = new Size(280, 22); + menuCommandCopyToSecondaryLanguage.Text = "Copy Translations to Existing Language"; + menuCommandCopyToSecondaryLanguage.MouseDown += menuCommandCopyToSecondaryLanguage_MouseDown; + // + // toolStripSeparator3 + // + toolStripSeparator3.Name = "toolStripSeparator3"; + toolStripSeparator3.Size = new Size(277, 6); + // + // menuCommandExportLanguageToTranslationSheet + // + menuCommandExportLanguageToTranslationSheet.Name = "menuCommandExportLanguageToTranslationSheet"; + menuCommandExportLanguageToTranslationSheet.Size = new Size(280, 22); + menuCommandExportLanguageToTranslationSheet.Text = "Export Language to Translation Sheet"; + menuCommandExportLanguageToTranslationSheet.MouseDown += menuCommandExportLanguageToTranslationSheet_MouseDown; + // + // toolStripSeparator4 + // + toolStripSeparator4.Name = "toolStripSeparator4"; + toolStripSeparator4.Size = new Size(277, 6); + // + // menuCommandDeleteSecondaryLanguage + // + menuCommandDeleteSecondaryLanguage.Name = "menuCommandDeleteSecondaryLanguage"; + menuCommandDeleteSecondaryLanguage.Size = new Size(280, 22); + menuCommandDeleteSecondaryLanguage.Text = "Delete This Language from Data Model"; + menuCommandDeleteSecondaryLanguage.MouseDown += menuCommandDeleteSecondaryLanguage_MouseDown; + // + // toolStripSeparator6 + // + toolStripSeparator6.Name = "toolStripSeparator6"; + toolStripSeparator6.Size = new Size(277, 6); + // + // FormMain + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1329, 554); + Controls.Add(gridTranslations); + Controls.Add(statusStrip1); + Controls.Add(panel2); + Icon = (Icon)resources.GetObject("$this.Icon"); + MainMenuStrip = menuStrip; + Margin = new Padding(3, 2, 3, 2); + Name = "FormMain"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Customized Translations Builder"; + Load += onLoad; + ((System.ComponentModel.ISupportInitialize)gridTranslations).EndInit(); + groupDatasetProperties.ResumeLayout(false); + groupDatasetProperties.PerformLayout(); + panel2.ResumeLayout(false); + panel2.PerformLayout(); + grpMachineTranslationsAllLanguages.ResumeLayout(false); + grpImportExportTranslations.ResumeLayout(false); + grpImportExportTranslations.PerformLayout(); + grpMachineTranslationsSingleLanguage.ResumeLayout(false); + grpSecondaryCultures.ResumeLayout(false); + menuStrip.ResumeLayout(false); + menuStrip.PerformLayout(); + statusStrip1.ResumeLayout(false); + statusStrip1.PerformLayout(); + contextMenuSecondaryLanguageHeader.ResumeLayout(false); + ResumeLayout(false); + PerformLayout(); + } - #endregion - private System.Windows.Forms.DataGridView gridTranslations; + #endregion + private System.Windows.Forms.DataGridView gridTranslations; private OpenFileDialog dialogOpenFile; private GroupBox groupDatasetProperties; private Panel panel2; diff --git a/TranslationsBuilder/Forms/FormMain.cs b/TranslationsBuilder/Forms/FormMain.cs index d3ffbd1..c6577aa 100644 --- a/TranslationsBuilder/Forms/FormMain.cs +++ b/TranslationsBuilder/Forms/FormMain.cs @@ -228,7 +228,7 @@ private void ExportAllTranslationSheets(object sender, EventArgs e) { private void ImportTranslations(object sender, EventArgs e) { dialogOpenFile.InitialDirectory = AppSettings.TranslationsInboxFolderPath; - dialogOpenFile.Filter = "CSV files (*.csv)|*.csv"; + dialogOpenFile.Filter = "Excel files (*.xlsx)|*.xlsx"; dialogOpenFile.FilterIndex = 1; dialogOpenFile.RestoreDirectory = true; @@ -481,7 +481,7 @@ private void gridTranslations_CellEndEdit(object sender, DataGridViewCellEventAr var ObjectName = gridTranslations.Rows[e.RowIndex].Cells[2].Value.ToString(); var Language = SupportedLanguages.GetLanguageFromFullName(gridTranslations.Columns[e.ColumnIndex].HeaderText).LanguageId; string Translation = (cell.Value != null) ? cell.Value.ToString() : ""; - TranslationsManager.SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, Language, Translation); + TranslationsManager.SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, Language, Translation, saveModel: true); cell.Style.BackColor = System.Drawing.Color.White; } diff --git a/TranslationsBuilder/Forms/FormMain.resx b/TranslationsBuilder/Forms/FormMain.resx index d2d7d06..ea7b050 100644 --- a/TranslationsBuilder/Forms/FormMain.resx +++ b/TranslationsBuilder/Forms/FormMain.resx @@ -1,4 +1,64 @@ - + + + diff --git a/TranslationsBuilder/GlobalConstants.cs b/TranslationsBuilder/GlobalConstants.cs index 576aacd..982b286 100644 --- a/TranslationsBuilder/GlobalConstants.cs +++ b/TranslationsBuilder/GlobalConstants.cs @@ -9,8 +9,8 @@ namespace TranslationsBuilder { class GlobalConstants { - public const string VersionNumber = "2.2"; - public const string ApplicationName = "Translations Builder"; + public const string VersionNumber = "2.5"; + public const string ApplicationName = "Power BI Translations Builder"; public const string ApplicationTitle = ApplicationName + " | Version " + VersionNumber; } diff --git a/TranslationsBuilder/Models/SupportedLanguages.cs b/TranslationsBuilder/Models/SupportedLanguages.cs index 7b6b4ab..4d8120b 100644 --- a/TranslationsBuilder/Models/SupportedLanguages.cs +++ b/TranslationsBuilder/Models/SupportedLanguages.cs @@ -386,7 +386,7 @@ static public Dictionary GetCommonLangauges() { } static public Language GetLanguageFromFullName(string FullName) { - return AllLanguages.First(languageEntry => languageEntry.Value.FullName == FullName).Value; + return AllLanguages.FirstOrDefault(languageEntry => languageEntry.Value.FullName == FullName).Value; } static public string[] GetLanguageGroups() { diff --git a/TranslationsBuilder/Services/ExcelUtilities.cs b/TranslationsBuilder/Services/ExcelUtilities.cs index 14e8c72..a02957d 100644 --- a/TranslationsBuilder/Services/ExcelUtilities.cs +++ b/TranslationsBuilder/Services/ExcelUtilities.cs @@ -7,7 +7,7 @@ namespace TranslationsBuilder.Services { class ExcelUtilities { - public static void OpenCsvInExcel(string FilePath) { + public static void OpenInExcel(string FilePath) { ProcessStartInfo startInfo = new ProcessStartInfo(); diff --git a/TranslationsBuilder/Services/TranslationsManager.cs b/TranslationsBuilder/Services/TranslationsManager.cs index 9051b3f..e0a29c6 100644 --- a/TranslationsBuilder/Services/TranslationsManager.cs +++ b/TranslationsBuilder/Services/TranslationsManager.cs @@ -16,6 +16,7 @@ using System.Diagnostics; using System.Linq; using Newtonsoft.Json.Linq; +using ClosedXML.Excel; namespace TranslationsBuilder.Services { @@ -251,18 +252,19 @@ public static List GetTableRows(Table table, Culture defaultLanguage, } rows.Add(captionRowValues.ToArray()); - if (!string.IsNullOrEmpty(table.Description)) { - List descriptionRowValues = new List { - "Table", - "Description", - table.Name, - defaultLanguage.ObjectTranslations[table, TranslatedProperty.Description]?.Value ?? table.Name - }; - foreach (var language in translationSet.SecondaryLanguages) { - descriptionRowValues.Add(model.Cultures[language.LanguageId].ObjectTranslations[table, TranslatedProperty.Description]?.Value); - } - rows.Add(descriptionRowValues.ToArray()); + // Always add row for Description + + List descriptionRowValues = new List { + "Table", + "Description", + table.Name, + defaultLanguage.ObjectTranslations[table, TranslatedProperty.Description]?.Value ?? table.Name + }; + foreach (var language in translationSet.SecondaryLanguages) { + descriptionRowValues.Add(model.Cultures[language.LanguageId].ObjectTranslations[table, TranslatedProperty.Description]?.Value); } + rows.Add(descriptionRowValues.ToArray()); + return rows; } @@ -292,14 +294,14 @@ public static List GetColumnRows(Table table, Column column, Culture d displayFoldersForTable.Add(column.DisplayFolder); } - if (!string.IsNullOrEmpty(column.Description)) { - List descriptionRowValues = new List { "Column", "Description", $"{table.Name}[{column.Name}]", defaultLanguage.ObjectTranslations[column, TranslatedProperty.Description]?.Value }; - foreach (var language in translationSet.SecondaryLanguages) { - descriptionRowValues.Add(model.Cultures[language.LanguageId].ObjectTranslations[column, TranslatedProperty.Description]?.Value); - } - rows.Add(descriptionRowValues.ToArray()); + // Always add row for Description + + List descriptionRowValues = new List { "Column", "Description", $"{table.Name}[{column.Name}]", defaultLanguage.ObjectTranslations[column, TranslatedProperty.Description]?.Value }; + foreach (var language in translationSet.SecondaryLanguages) { + descriptionRowValues.Add(model.Cultures[language.LanguageId].ObjectTranslations[column, TranslatedProperty.Description]?.Value); } - + rows.Add(descriptionRowValues.ToArray()); + return rows; } @@ -328,14 +330,14 @@ public static List GetMeasureRows(Table table, Measure measure, Cultur displayFoldersForTable.Add(measure.DisplayFolder); } - if (!string.IsNullOrEmpty(measure.Description)) { - List descriptionRowValues = new List { "Measure", "Description", $"{table.Name}[{measure.Name}]{measure.Name}", defaultLanguage.ObjectTranslations[measure, TranslatedProperty.Description]?.Value }; - foreach (var language in translationSet.SecondaryLanguages) { - descriptionRowValues.Add(model.Cultures[language.LanguageId].ObjectTranslations[measure, TranslatedProperty.Description]?.Value); - } - rows.Add(descriptionRowValues.ToArray()); + // Always add row for Description + + List descriptionRowValues = new List { "Measure", "Description", $"{table.Name}[{measure.Name}]{measure.Name}", defaultLanguage.ObjectTranslations[measure, TranslatedProperty.Description]?.Value }; + foreach (var language in translationSet.SecondaryLanguages) { + descriptionRowValues.Add(model.Cultures[language.LanguageId].ObjectTranslations[measure, TranslatedProperty.Description]?.Value); } - + rows.Add(descriptionRowValues.ToArray()); + return rows; } @@ -381,16 +383,14 @@ public static List GetHierarchyRows(Table table, Hierarchy hierarchy, rows.Add(levelCaptionRowValues.ToArray()); } - - - if (!string.IsNullOrEmpty(hierarchy.Description)) { - List descriptionRowValues = new List { "Hierarchy", "Description", $"{table.Name}[{hierarchy.Name}]", defaultLanguage.ObjectTranslations[hierarchy, TranslatedProperty.Description]?.Value }; - foreach (var language in translationSet.SecondaryLanguages) { - descriptionRowValues.Add(model.Cultures[language.LanguageId].ObjectTranslations[hierarchy, TranslatedProperty.Description]?.Value); - } - rows.Add(descriptionRowValues.ToArray()); + // Always add row for Description + + List descriptionRowValues = new List { "Hierarchy", "Description", $"{table.Name}[{hierarchy.Name}]", defaultLanguage.ObjectTranslations[hierarchy, TranslatedProperty.Description]?.Value }; + foreach (var language in translationSet.SecondaryLanguages) { + descriptionRowValues.Add(model.Cultures[language.LanguageId].ObjectTranslations[hierarchy, TranslatedProperty.Description]?.Value); } - + rows.Add(descriptionRowValues.ToArray()); + return rows; } @@ -544,7 +544,7 @@ public static void PopulateDatasetObjectWithMachineTranslations(string ObjectTyp MetadataObject DatasetObject = GetMetadataObject(ObjectType, PropertyName, ObjectName); var DefaultTranslation = GetDefaultTranslation(ObjectName, ObjectType, PropertyName); - SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, model.Culture, DefaultTranslation); + SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, model.Culture, DefaultTranslation, saveModel:true); UpdateStatus(StatusCalback, model.Culture, ObjectName, DefaultTranslation, DefaultTranslation); @@ -559,13 +559,13 @@ public static void PopulateDatasetObjectWithMachineTranslations(string ObjectTyp foreach (string language in secondaryLanguages) { var translation = TranslateContent(DefaultTranslation, language); Culture culture = model.Cultures[language]; - SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, language, translation); + SetDatasetObjectTranslation(ObjectType, PropertyName, ObjectName, language, translation, saveModel:true); UpdateStatus(StatusCalback, language, ObjectName, DefaultTranslation, translation); } } - public static void PopulateEmptyTranslations(string CultureName, IStatusCalback StatusCalback = null) { + public static void PopulateEmptyTranslations(string CultureName, IStatusCalback StatusCalback = null) { // add culture to data model if it doesn't already exist if (!model.Cultures.ContainsName(CultureName)) { @@ -704,101 +704,100 @@ public static void ExportModelAsBim() { startInfo.FileName = "Notepad.exe"; startInfo.Arguments = filePath; Process.Start(startInfo); - - } public static void ExportTranslations(string targetLanguage = null, bool OpenInExcel = true) { - try { - var translationsTable = GetTranslationsTable(targetLanguage); - - string linebreak = "\r\n"; - - // set csv file headers - string csv = string.Join(",", translationsTable.Headers) + linebreak; - - // add line for each row - foreach (var row in translationsTable.Rows) { - csv += string.Join(",", row) + linebreak; - } + try + { + // Build output file path DirectoryInfo path = Directory.CreateDirectory(AppSettings.TranslationsOutboxFolderPath); string filePath; - if (targetLanguage == null) { - filePath = path + @"/" + DatasetName + "-Translations-Master.csv"; + if (targetLanguage == null) + { + filePath = path + @"/" + DatasetName + "-Translations-Master.xlsx"; } - else { + else + { string targetLanguageDisplayName = SupportedLanguages.AllLanguages[targetLanguage].DisplayName; - filePath = path + @"/" + DatasetName + "-Translations-" + targetLanguageDisplayName + ".csv"; + filePath = path + @"/" + DatasetName + "-Translations-" + targetLanguageDisplayName + ".xlsx"; } - StreamWriter writer = new StreamWriter(File.Open(filePath, FileMode.Create), Encoding.UTF8); - writer.Write(csv); - writer.Flush(); - writer.Dispose(); + // Save to Excel - //StreamWriter writerJson = new StreamWriter(File.Open(filePath.Replace(".csv", ".json"), FileMode.Create), Encoding.UTF8); - //writerJson.Write(System.Text.Json.JsonSerializer.Serialize(translationsTable)); - //writerJson.Flush(); - //writerJson.Dispose(); + TranslationsTable translationsTable = GetTranslationsTable(targetLanguage); - if (OpenInExcel) { + WriteTranslationsTableToExcel(filePath, translationsTable); + + if (OpenInExcel) + { string excelFilePath = @"""" + filePath + @""""; - ExcelUtilities.OpenCsvInExcel(excelFilePath); + ExcelUtilities.OpenInExcel(excelFilePath); } - } catch (Exception ex) { UserInteraction.PromptUserWithError(ex); } - - } - + public static void ExportAllTranslationSheets(bool OpenInExcel = false) { try { - - string linebreak = "\r\n"; - + DirectoryInfo path = Directory.CreateDirectory(AppSettings.TranslationsOutboxFolderPath); + foreach (var culture in model.Cultures) { if (culture.Name != model.Culture) { string targetLanguage = culture.Name; var translationsTable = GetTranslationsTable(targetLanguage); - string csv = string.Join(",", translationsTable.Headers) + linebreak; - - // add line for each row - foreach (var row in translationsTable.Rows) { - csv += string.Join(",", row) + linebreak; - } - - DirectoryInfo path = Directory.CreateDirectory(AppSettings.TranslationsOutboxFolderPath); string targetLanguageDisplayName = SupportedLanguages.AllLanguages[targetLanguage].DisplayName; - string filePath = path + @"/" + DatasetName + "-Translations-" + targetLanguageDisplayName + ".csv"; - - StreamWriter writer = new StreamWriter(File.Open(filePath, FileMode.Create), Encoding.UTF8); - writer.Write(csv); - writer.Flush(); - writer.Dispose(); + string filePath = path + @"/" + DatasetName + "-Translations-" + targetLanguageDisplayName + ".xlsx"; + WriteTranslationsTableToExcel(filePath, translationsTable); + if (OpenInExcel) { string excelFilePath = @"""" + filePath + @""""; - ExcelUtilities.OpenCsvInExcel(excelFilePath); + ExcelUtilities.OpenInExcel(excelFilePath); } - } } - } catch (Exception ex) { UserInteraction.PromptUserWithError(ex); } + } + + private static void WriteTranslationsTableToExcel(string filePath, TranslationsTable translationsTable) + { + using (var workbook = new XLWorkbook()) + { + var worksheet = workbook.Worksheets.Add("Translations"); + + for (int col = 0; col < translationsTable.Headers.Length; ++col) + { + worksheet.Cell(1, col + 1).Value = translationsTable.Headers[col]; + } + + for (int row = 0; row < translationsTable.Rows.Count; ++row) + { + string[] curRow = translationsTable.Rows[row]; + + for (int col = 0; col < curRow.Length; ++col) + { + worksheet.Cell(row + 2, col + 1).Value = curRow[col]; + } + } + + var range = worksheet.Range(1, 1, translationsTable.Rows.Count + 1, translationsTable.Headers.Length); + var table = range.CreateTable(); + worksheet.Columns().AdjustToContents(); + workbook.SaveAs(filePath); + } } private static string GetTableName(string ObjectName) { @@ -809,6 +808,10 @@ private static string GetChildName(string ObjectName) { return ObjectName.Substring(ObjectName.IndexOf("[") + 1, (ObjectName.IndexOf("]") - ObjectName.IndexOf("[") - 1)); } + private static string GetDisplayFolder(string ObjectName) { + return ObjectName.Substring(ObjectName.IndexOf("]") + 1, ObjectName.Length - ObjectName.IndexOf("]") - 1); + } + private static string GetLevelName(string ObjectName) { return ObjectName.Substring(ObjectName.IndexOf("]") + 1, ObjectName.Length - ObjectName.IndexOf("]") - 1); } @@ -819,7 +822,7 @@ public static MetadataObject GetMetadataObject(string ObjectType, string Propert // display folder translations for child columns, measures and hierchies if (ObjectType.Equals("Table") && PropertyName.Equals("DisplayFolder")) { return null; } - if (ObjectType.Equals("Table") && PropertyName.Equals("Caption")) { + if (ObjectType.Equals("Table") && (PropertyName.Equals("Caption") || PropertyName.Equals("Description"))) { return model.Tables[ObjectName]; } else { @@ -845,7 +848,8 @@ public static MetadataObject GetMetadataObject(string ObjectType, string Propert public static bool EnsureMetadataObjectExists(string ObjectType, string ObjectName) { if (ObjectType.Equals("Table")) { - return model.Tables.Contains(ObjectName); + string useTableName = ObjectName.IndexOf("[") != -1 ? GetTableName(ObjectName) : ObjectName; // Display Folder ObjectName format: D_TEMPS[ID_DATE]Date + return model.Tables.Contains(useTableName); } else { string tableName = GetTableName(ObjectName); @@ -888,7 +892,7 @@ public static bool EnsureMetadataObjectExists(string ObjectType, string ObjectNa } } - public static void SetDatasetObjectTranslation(string ObjectType, string PropertyName, string ObjectName, string TargetLanguage, string TranslatedValue) { + public static void SetDatasetObjectTranslation(string ObjectType, string PropertyName, string ObjectName, string TargetLanguage, string TranslatedValue, bool saveModel) { MetadataObject targetObject = TranslationsManager.GetMetadataObject(ObjectType, PropertyName, ObjectName); @@ -910,19 +914,20 @@ public static void SetDatasetObjectTranslation(string ObjectType, string Propert } - model.SaveChanges(); - + if (saveModel) { + model.SaveChanges(); + } } public static void UpdateDisplayFolderForTable(string ObjectName, string TargetLanguage, string TranslatedValue) { string tableName = GetTableName(ObjectName); - string folderName = GetChildName(ObjectName); + string folderName = GetDisplayFolder(ObjectName); Table table = model.Tables[tableName]; - foreach (Column column in table.Columns) { + foreach (Column column in table.Columns.Where(c => c.Type != ColumnType.RowNumber)) { // Important : Skip RowNumber columns or it will fail if (column.DisplayFolder.Equals(folderName)) { model.Cultures[TargetLanguage].ObjectTranslations.SetTranslation(column, TranslatedProperty.DisplayFolder, TranslatedValue); } @@ -957,7 +962,11 @@ public static string GetDefaultTranslation(string FullObjectName, string ObjectT break; }; - var customizedDefaultTranslation = model.Cultures[model.Culture].ObjectTranslations[targetObject, PropertyType]?.Value; + string customizedDefaultTranslation = null; + + if (targetObject != null) { // FS: Always null for DisplayFolder + customizedDefaultTranslation = model.Cultures[model.Culture].ObjectTranslations[targetObject, PropertyType]?.Value; + } if (!string.IsNullOrEmpty(customizedDefaultTranslation)) { return customizedDefaultTranslation; @@ -995,54 +1004,75 @@ public static string GetDefaultTranslationFromObjectName(string FullObjectName, public static void ImportTranslations(string filePath) { try { - - string linebreak = "\r\n"; - - FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); - StreamReader reader = new StreamReader(stream); - var lines = reader.ReadToEnd().Trim().Split(linebreak); - var headers = lines[0].Split(","); - - var cultureCount = headers.Length - 3; - var culturesList = new List(); - - for (int columnNumber = 3; (columnNumber < headers.Length); columnNumber++) { - var language = SupportedLanguages.GetLanguageFromFullName(headers[columnNumber]); - culturesList.Add(language.LanguageId); - } - - foreach (string cultureName in culturesList) { - if (!model.Cultures.Contains(cultureName)) { - model.Cultures.Add(new Culture { Name = cultureName }); - } - } - - // enumerate through lines in CSV data - for (int lineNumber = 1; lineNumber <= lines.Length - 1; lineNumber++) { - var row = lines[lineNumber]; - var rowValues = row.Split(","); - string objectType = rowValues[0]; - string propertyName = rowValues[1]; - string objectName = rowValues[2]; - // enumerate across language columns - for (int columnNumber = 3; (columnNumber < headers.Length); columnNumber++) { - string targetLanguage = SupportedLanguages.GetLanguageFromFullName(headers[columnNumber]).LanguageId; - string translatedValue = rowValues[columnNumber]; - if (!string.IsNullOrEmpty(translatedValue) && TranslationsManager.EnsureMetadataObjectExists(objectType, objectName)) { - TranslationsManager.SetDatasetObjectTranslation(objectType, propertyName, objectName, targetLanguage, translatedValue); + Cursor.Current = Cursors.WaitCursor; + + using (var workbook = new XLWorkbook(filePath)) + { + var worksheet = workbook.Worksheets.FirstOrDefault(); + + if (worksheet != null) + { + // Make sure cultures are defined in the model + + int columnCount = worksheet.CellsUsed().Max(cell => cell.Address.ColumnNumber); + + var cultureCount = columnCount - 3; + + for (int col = 3; col < columnCount; ++col) + { + string curLanguage = worksheet.Cell(1, col + 1).Value.GetText(); + var language = SupportedLanguages.GetLanguageFromFullName(curLanguage); + + if (language != null) + { + if (!model.Cultures.Contains(language.LanguageId)) + { + model.Cultures.Add(new Culture { Name = language.LanguageId }); + } + } } + + // Scan rows + + int rowCount = worksheet.CellsUsed().Max(cell => cell.Address.RowNumber); + + for (int row = 1; row < rowCount; ++row) + { + string objectType = worksheet.Cell(row + 1, 1).Value.GetText(); + string propertyName = worksheet.Cell(row + 1, 2).Value.GetText(); + string objectName = worksheet.Cell(row + 1, 3).Value.GetText(); + + for (int columnNumber = 3; columnNumber < columnCount; ++columnNumber) + { + string curLanguage = worksheet.Cell(1, columnNumber + 1).Value.GetText(); + var language = SupportedLanguages.GetLanguageFromFullName(curLanguage); + + if (language != null) + { + string targetLanguage = language.LanguageId; + var curValue = worksheet.Cell(row + 1, columnNumber + 1).Value; + + string translatedValue = !curValue.IsBlank ? curValue.GetText() : String.Empty; + + if (!string.IsNullOrEmpty(translatedValue) && TranslationsManager.EnsureMetadataObjectExists(objectType, objectName)) + { + TranslationsManager.SetDatasetObjectTranslation(objectType, propertyName, objectName, targetLanguage, translatedValue, saveModel:false); + } + } + } + } + + model.SaveChanges(); } } - - // close file and release resources - reader.Close(); - stream.Close(); - } catch (Exception ex) { UserInteraction.PromptUserWithError(ex); } - + finally + { + Cursor.Current = Cursors.Default; + } } public static void ImportLocalizedLabels(string filePath) { diff --git a/TranslationsBuilder/TranslationsBuilder.csproj b/TranslationsBuilder/TranslationsBuilder.csproj index 7eb4281..80b17e3 100644 --- a/TranslationsBuilder/TranslationsBuilder.csproj +++ b/TranslationsBuilder/TranslationsBuilder.csproj @@ -2,7 +2,7 @@ WinExe - net6.0-windows + net8.0-windows7.0 true Translations Builder Resources\TranslationsBuilder.ico @@ -14,6 +14,7 @@ + diff --git a/TranslationsBuilderInstaller/TranslationsBuilderInstaller.vdproj b/TranslationsBuilderInstaller/TranslationsBuilderInstaller.vdproj index ec39d33..414a9b1 100644 --- a/TranslationsBuilderInstaller/TranslationsBuilderInstaller.vdproj +++ b/TranslationsBuilderInstaller/TranslationsBuilderInstaller.vdproj @@ -95,10 +95,10 @@ "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)" "ProductCode" = "8:.NETFramework,Version=v4.7.2" } - "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.NetCore.DesktopRuntime.6.0.x64" + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.NetCore.DesktopRuntime.8.0.x64" { - "Name" = "8:.NET Desktop Runtime 6.0.11 (x64)" - "ProductCode" = "8:Microsoft.NetCore.DesktopRuntime.6.0.x64" + "Name" = "8:.NET Desktop Runtime 8.0.3 (x64)" + "ProductCode" = "8:Microsoft.NetCore.DesktopRuntime.8.0.x64" } } } @@ -225,7 +225,7 @@ } "{3C67513D-01DD-4637-8A68-80971EB9504F}:_7CBF58AB6A584CE8AD83661C46AFB597" { - "DefaultLocation" = "8:[ProgramFiles64Folder][Manufacturer]\\[ProductName]" + "DefaultLocation" = "8:[ProgramFiles64Folder]\\[ProductName]" "Name" = "8:#1925" "AlwaysCreate" = "11:FALSE" "Condition" = "8:" @@ -250,25 +250,25 @@ "Product" { "Name" = "8:Microsoft Visual Studio" - "ProductName" = "8:Translations Builder" - "ProductCode" = "8:{9738FFA7-A9B3-4F1B-A82C-1C35DBB1A7AE}" - "PackageCode" = "8:{04BFABB6-F527-4F47-B55B-D8337BAA4145}" + "ProductName" = "8:Power BI Translations Builder" + "ProductCode" = "8:{1D5AAC9B-98A6-48D6-BD12-2981837710A5}" + "PackageCode" = "8:{523FCE49-2881-4AE8-ACBA-794615B08C5A}" "UpgradeCode" = "8:{3024AE64-35C9-44A9-B343-EB1849B294C8}" "AspNetVersion" = "8:" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:TRUE" - "ProductVersion" = "8:2.0" - "Manufacturer" = "8:Power BI Dev Camp" + "ProductVersion" = "8:2.5" + "Manufacturer" = "8:samsonfr" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:" - "Title" = "8:Translations Builder Installer" + "Title" = "8:Power BI Translations Builder Installer" "Subject" = "8:" - "ARPCONTACT" = "8:Power BI Dev Camp" + "ARPCONTACT" = "8:samsonfr" "Keywords" = "8:" "ARPCOMMENTS" = "8:" - "ARPURLINFOABOUT" = "8:https://www.powerbidevcamp.net" + "ARPURLINFOABOUT" = "8:https://github.com/samsonfr/TranslationsBuilder" "ARPPRODUCTICON" = "8:_AC6C2C4CCE8249D1B985C0B00D412695" "ARPIconIndex" = "3:0" "SearchPath" = "8:" @@ -773,7 +773,7 @@ { "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_87A722ED67EE4E37AAA9168D104167BC" { - "SourcePath" = "8:..\\TranslationsBuilder\\obj\\Release\\net6.0-windows\\apphost.exe" + "SourcePath" = "8:..\\TranslationsBuilder\\obj\\Release\\net8.0-windows7.0\\apphost.exe" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_7CBF58AB6A584CE8AD83661C46AFB597"