Skip to content

Commit a26ae60

Browse files
author
Paul van Brenk
committed
Change locale for 'zh-*' and update xlf file for 'en'
1 parent 0cdee08 commit a26ae60

File tree

12 files changed

+260
-346
lines changed

12 files changed

+260
-346
lines changed

Common/Tools/VsctToXliff/Program.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,13 @@
1212
* ***************************************************************************/
1313

1414
using System;
15-
using System.Collections.Generic;
1615
using System.IO;
1716

1817
namespace VsctToXliff
1918
{
2019
class Program
2120
{
22-
private static readonly string[] Locales = new[] { "cs", "de", "en", "es", "fr", "it", "ja", "ko", "pl", "pt-BR", "ru", "tr", "zh-CN", "zh-TW" };
21+
private static readonly string[] Locales = new[] { "cs", "de", "en", "es", "fr", "it", "ja", "ko", "pl", "pt-BR", "ru", "tr", "zh-Hans", "zh-Hant" };
2322

2423
private static int Main(string[] args)
2524
{
@@ -77,8 +76,17 @@ private static void CreateVsctFiles(string sourceFile, string xlfDir)
7776

7877
foreach (var locale in Locales)
7978
{
80-
var translations = xlfFiles.LoadTranslatedElements(locale);
81-
vsctFile.WriteTranslatedFile(translations, locale);
79+
if (StringComparer.OrdinalIgnoreCase.Equals(locale, "en"))
80+
{
81+
// for english just copy the file to a new file name
82+
var destFileName = Path.Combine(targetDir, $"{rootName}.en{VsctFile.VsctExt}");
83+
File.Copy(sourceFile, destFileName, overwrite: true);
84+
}
85+
else
86+
{
87+
var translations = xlfFiles.LoadTranslatedElements(locale);
88+
vsctFile.WriteTranslatedFile(translations, locale);
89+
}
8290
}
8391
}
8492

Common/Tools/VsctToXliff/VsctFile.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ internal sealed class VsctFile
2323
private static readonly XNamespace NS = @"http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable";
2424
private static readonly string[] ChildNames = { "ButtonText", "ToolTipText", "MenuText", "CommandName" };
2525

26-
private const string VsctExt = ".vsct";
26+
public const string VsctExt = ".vsct";
2727

2828
public string FileName { get; }
2929

Common/Tools/VsctToXliff/XliffFile.cs

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public XliffFile(string targetFolder, string fileNameWithoutExtension)
4141
throw new ArgumentException("Expected a rooted path");
4242
}
4343

44-
if(string.IsNullOrEmpty(fileNameWithoutExtension))
44+
if (string.IsNullOrEmpty(fileNameWithoutExtension))
4545
{
4646
throw new ArgumentException($"{nameof(fileNameWithoutExtension)} should be set");
4747

@@ -53,20 +53,26 @@ public XliffFile(string targetFolder, string fileNameWithoutExtension)
5353

5454
public void WriteTranslationFile(string originalName, IEnumerable<ITranslationUnit> transUnits, string targetLanguage)
5555
{
56+
var fileElement = new XElement(XLIFF + "file",
57+
new XAttribute("original", originalName),
58+
new XAttribute("source-language", "en"),
59+
new XElement(XLIFF + "body",
60+
transUnits.Select(unit => GenerateTransElements(unit, targetLanguage))
61+
)
62+
);
63+
64+
if (!StringComparer.OrdinalIgnoreCase.Equals(targetLanguage, "en"))
65+
{
66+
fileElement.Add(new XAttribute("target-language", targetLanguage));
67+
}
68+
5669
var document = new XDocument(
5770
new XElement(XLIFF + "xliff",
5871
new XAttribute("xmlns", "urn:oasis:names:tc:xliff:document:1.2"),
5972
new XAttribute(XNamespace.Xmlns + "xsi", XSI),
6073
new XAttribute(XSI + "schemaLocation", "urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd"),
6174
new XAttribute("version", "1.2"),
62-
new XElement(XLIFF + "file",
63-
new XAttribute("original", originalName),
64-
new XAttribute("source-language", "en"),
65-
new XAttribute("target-language", targetLanguage),
66-
new XElement(XLIFF + "body",
67-
transUnits.Select(unit => GenerateTransElements(unit, targetLanguage))
68-
)
69-
)
75+
fileElement
7076
)
7177
);
7278

@@ -76,28 +82,34 @@ public void WriteTranslationFile(string originalName, IEnumerable<ITranslationUn
7682

7783
private XElement GenerateTransElements(ITranslationUnit transUnits, string targetLanguage)
7884
{
79-
return new XElement(XLIFF + "trans-unit",
85+
var element = new XElement(XLIFF + "trans-unit",
8086
new XAttribute("id", transUnits.Key),
8187
new XElement(XLIFF + "source",
8288
new XAttribute(XNamespace.Xml + "lang", "en"),
83-
transUnits.EnglishValue),
84-
new XElement(XLIFF + "target",
89+
transUnits.EnglishValue));
90+
91+
if (!StringComparer.OrdinalIgnoreCase.Equals(targetLanguage, "en"))
92+
{
93+
element.Add(new XElement(XLIFF + "target",
8594
new XAttribute(XNamespace.Xml + "lang", targetLanguage),
8695
new XAttribute("state", "needs-translation"),
8796
transUnits.EnglishValue)
8897
);
98+
}
99+
100+
return element;
89101
}
90102

91103
public IDictionary<string, string> LoadTranslatedElements(string targetLanguage)
92104
{
93105
var translations = new Dictionary<string, string>();
94106

95107
var fileName = Path.Combine(this.XliffFolder, targetLanguage, $"{this.FileNameWithoutExtension}{XliffExt}");
96-
if(File.Exists(fileName))
108+
if (File.Exists(fileName))
97109
{
98110
var document = XDocument.Load(fileName);
99111
var elements = document.Descendants(XLIFF + "trans-unit");
100-
foreach( var element in elements)
112+
foreach (var element in elements)
101113
{
102114
var id = element.Attribute("id").Value;
103115
var translated = element.Element(XLIFF + "target").Value;

xliff/en/InteractiveWindow.xlf

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,102 +1,78 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd" version="1.2">
3-
<file original="D:\dd\nodejstools\Nodejs\Product\InteractiveWindow\InteractiveWindow.vsct" source-language="en" target-language="en">
3+
<file original="D:\dd\nodejstools\Nodejs\Product\InteractiveWindow\InteractiveWindow.vsct" source-language="en">
44
<body>
55
<trans-unit id="menuIdConsoleContextMenu|ButtonText">
66
<source xml:lang="en">Interactive Console</source>
7-
<target xml:lang="en" state="needs-translation">Interactive Console</target>
87
</trans-unit>
98
<trans-unit id="menuIdConsoleContextMenu|CommandName">
109
<source xml:lang="en">Interactive Console</source>
11-
<target xml:lang="en" state="needs-translation">Interactive Console</target>
1210
</trans-unit>
1311
<trans-unit id="menuIdReplToolbar|ButtonText">
1412
<source xml:lang="en">Interactive Window</source>
15-
<target xml:lang="en" state="needs-translation">Interactive Window</target>
1613
</trans-unit>
1714
<trans-unit id="menuIdReplToolbar|CommandName">
1815
<source xml:lang="en">Interactive Window</source>
19-
<target xml:lang="en" state="needs-translation">Interactive Window</target>
2016
</trans-unit>
2117
<trans-unit id="cmdidResetRepl|ButtonText">
2218
<source xml:lang="en">Reset</source>
23-
<target xml:lang="en" state="needs-translation">Reset</target>
2419
</trans-unit>
2520
<trans-unit id="cmdidResetRepl|CommandName">
2621
<source xml:lang="en">cmdIdResetRepl</source>
27-
<target xml:lang="en" state="needs-translation">cmdIdResetRepl</target>
2822
</trans-unit>
2923
<trans-unit id="cmdidSmartExecute|ButtonText">
3024
<source xml:lang="en">Execute or Paste Input</source>
31-
<target xml:lang="en" state="needs-translation">Execute or Paste Input</target>
3225
</trans-unit>
3326
<trans-unit id="cmdidSmartExecute|CommandName">
3427
<source xml:lang="en">cmdidSmartExecute</source>
35-
<target xml:lang="en" state="needs-translation">cmdidSmartExecute</target>
3628
</trans-unit>
3729
<trans-unit id="cmdidReplHistoryPrevious|ButtonText">
3830
<source xml:lang="en">History Previous</source>
39-
<target xml:lang="en" state="needs-translation">History Previous</target>
4031
</trans-unit>
4132
<trans-unit id="cmdidReplHistoryPrevious|CommandName">
4233
<source xml:lang="en">cmdidReplHistoryPrevious</source>
43-
<target xml:lang="en" state="needs-translation">cmdidReplHistoryPrevious</target>
4434
</trans-unit>
4535
<trans-unit id="cmdidReplHistoryNext|ButtonText">
4636
<source xml:lang="en">History Next</source>
47-
<target xml:lang="en" state="needs-translation">History Next</target>
4837
</trans-unit>
4938
<trans-unit id="cmdidReplHistoryNext|CommandName">
5039
<source xml:lang="en">cmdidReplHistoryNext</source>
51-
<target xml:lang="en" state="needs-translation">cmdidReplHistoryNext</target>
5240
</trans-unit>
5341
<trans-unit id="cmdidReplSearchHistoryNext|ButtonText">
5442
<source xml:lang="en">Search History Next</source>
55-
<target xml:lang="en" state="needs-translation">Search History Next</target>
5643
</trans-unit>
5744
<trans-unit id="cmdidReplSearchHistoryNext|CommandName">
5845
<source xml:lang="en">cmdidReplHistoryNext</source>
59-
<target xml:lang="en" state="needs-translation">cmdidReplHistoryNext</target>
6046
</trans-unit>
6147
<trans-unit id="cmdidReplSearchHistoryPrevious|ButtonText">
6248
<source xml:lang="en">Search History Previous</source>
63-
<target xml:lang="en" state="needs-translation">Search History Previous</target>
6449
</trans-unit>
6550
<trans-unit id="cmdidReplSearchHistoryPrevious|CommandName">
6651
<source xml:lang="en">cmdidReplHistoryNext</source>
67-
<target xml:lang="en" state="needs-translation">cmdidReplHistoryNext</target>
6852
</trans-unit>
6953
<trans-unit id="cmdidReplClearScreen|ButtonText">
7054
<source xml:lang="en">Clear Screen</source>
71-
<target xml:lang="en" state="needs-translation">Clear Screen</target>
7255
</trans-unit>
7356
<trans-unit id="cmdidReplClearScreen|CommandName">
7457
<source xml:lang="en">cmdidReplClearScreen</source>
75-
<target xml:lang="en" state="needs-translation">cmdidReplClearScreen</target>
7658
</trans-unit>
7759
<trans-unit id="cmdidBreakLine|ButtonText">
7860
<source xml:lang="en">Break Line</source>
79-
<target xml:lang="en" state="needs-translation">Break Line</target>
8061
</trans-unit>
8162
<trans-unit id="cmdidBreakLine|CommandName">
8263
<source xml:lang="en">cmdidBreakLine</source>
83-
<target xml:lang="en" state="needs-translation">cmdidBreakLine</target>
8464
</trans-unit>
8565
<trans-unit id="cmdidReplClearScreen|ButtonText">
8666
<source xml:lang="en">Clear Screen</source>
87-
<target xml:lang="en" state="needs-translation">Clear Screen</target>
8867
</trans-unit>
8968
<trans-unit id="cmdidReplClearScreen|CommandName">
9069
<source xml:lang="en">Clear Screen</source>
91-
<target xml:lang="en" state="needs-translation">Clear Screen</target>
9270
</trans-unit>
9371
<trans-unit id="cmdidResetRepl|ButtonText">
9472
<source xml:lang="en">Reset</source>
95-
<target xml:lang="en" state="needs-translation">Reset</target>
9673
</trans-unit>
9774
<trans-unit id="cmdidResetRepl|CommandName">
9875
<source xml:lang="en">cmdIdResetRepl</source>
99-
<target xml:lang="en" state="needs-translation">cmdIdResetRepl</target>
10076
</trans-unit>
10177
</body>
10278
</file>

0 commit comments

Comments
 (0)