Merge branch 'master' of https://github.com/Amebis/MSIBuild
This commit is contained in:
commit
2a3c4c5722
169
MSI.wsf
169
MSI.wsf
@ -456,12 +456,12 @@
|
||||
WScript.Quit(0);
|
||||
]]></script>
|
||||
</job>
|
||||
<job id="IDT2PO">
|
||||
<job id="IDTDiff">
|
||||
<runtime>
|
||||
<description>Extract strings to translate. If already translated IDT file is available, extract translations of matching rows (by IDT key column(s)).</description>
|
||||
<description>Extract strings to translate by comparing two IDT files.</description>
|
||||
<unnamed name="<output.po>" helpstring="Output PO file" required="true"/>
|
||||
<unnamed name="<source.idt>" helpstring="Original IDT file" required="true"/>
|
||||
<unnamed name="<destination.idt>" helpstring="Translated IDT file" required="false"/>
|
||||
<unnamed name="<destination.idt>" helpstring="Translated IDT file" required="true"/>
|
||||
<named name="L" helpstring="Language identifier" type="string" required="false"/>
|
||||
</runtime>
|
||||
<reference object="ADODB.Stream"/>
|
||||
@ -469,6 +469,78 @@
|
||||
<script language="JScript" src="IDT.js"/>
|
||||
<script language="JScript" src="PO.js"/>
|
||||
<script language="JScript" src="String.js"/>
|
||||
<script language="JScript"><![CDATA[
|
||||
if (WScript.Arguments.Unnamed.Length < 3) {
|
||||
WScript.Arguments.ShowUsage();
|
||||
WScript.Quit(1);
|
||||
}
|
||||
|
||||
var
|
||||
fso = WScript.CreateObject("Scripting.FileSystemObject"),
|
||||
po_path = WScript.Arguments.Unnamed(0);
|
||||
|
||||
try {
|
||||
// Open and parse IDT file(s).
|
||||
var
|
||||
idt_src_path = WScript.Arguments.Unnamed(1),
|
||||
idt_src = new IDT(idt_src_path),
|
||||
idt_dst = new IDT(WScript.Arguments.Unnamed(2));
|
||||
|
||||
// IDT files must represent identical table.
|
||||
if (idt_src.columns.toString() != idt_dst.columns.toString() ||
|
||||
idt_src.types .toString() != idt_dst.types .toString() ||
|
||||
idt_src.table != idt_dst.table ||
|
||||
idt_src.key .toString() != idt_dst.key .toString())
|
||||
throw new Error("IDT files are not compatible.");
|
||||
|
||||
var po = new POCatalog();
|
||||
|
||||
// Add header.
|
||||
po.push("",
|
||||
"MIME-Version: 1.0\n" +
|
||||
"Content-Type: text/plain; charset=" + po.charset + "\n" +
|
||||
"Content-Transfer-Encoding: 8bit\n" +
|
||||
(WScript.Arguments.Named.Exists("L") ? "Language: "+ WScript.Arguments.Named("L") +"\n" : ""), false);
|
||||
|
||||
// Build translations.
|
||||
for (var key in idt_src.data) {
|
||||
if (key in idt_dst.data) {
|
||||
// We found a record in both IDT files.
|
||||
for (var col in idt_src.types)
|
||||
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "")
|
||||
po.push(idt_src.data[key][col], idt_dst.data[key][col], false, "#: " + idt_src_path + ":" + idt_src.linenum[key]);
|
||||
} else {
|
||||
// The record is available in the source IDT file only.
|
||||
for (var col in idt_src.types)
|
||||
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "")
|
||||
po.push(idt_src.data[key][col], "", false, "#: " + idt_src_path + ":" + idt_src.linenum[key]);
|
||||
}
|
||||
}
|
||||
|
||||
// Save to file.
|
||||
po.save(po_path);
|
||||
} catch (err) {
|
||||
// In case of error, delete output file.
|
||||
if (fso.FileExists(po_path))
|
||||
fso.DeleteFile(po_path);
|
||||
|
||||
throw err;
|
||||
}
|
||||
|
||||
WScript.Quit(0);
|
||||
]]></script>
|
||||
</job>
|
||||
<job id="IDTExtract">
|
||||
<runtime>
|
||||
<description>Extract strings to translate.</description>
|
||||
<unnamed name="<output.po>" helpstring="Output PO file" required="true"/>
|
||||
<unnamed name="<source.idt>..." helpstring="Source IDT files" required="true"/>
|
||||
</runtime>
|
||||
<reference object="ADODB.Stream"/>
|
||||
<reference object="Scripting.FileSystemObject"/>
|
||||
<script language="JScript" src="IDT.js"/>
|
||||
<script language="JScript" src="PO.js"/>
|
||||
<script language="JScript" src="String.js"/>
|
||||
<script language="JScript"><![CDATA[
|
||||
if (WScript.Arguments.Unnamed.Length < 2) {
|
||||
WScript.Arguments.ShowUsage();
|
||||
@ -480,45 +552,34 @@
|
||||
po_path = WScript.Arguments.Unnamed(0);
|
||||
|
||||
try {
|
||||
// Open and parse IDT file(s).
|
||||
var
|
||||
idt_src_path = WScript.Arguments.Unnamed(1),
|
||||
idt_src = new IDT(idt_src_path),
|
||||
idt_dst;
|
||||
|
||||
if (WScript.Arguments.Unnamed.Length >= 3) {
|
||||
idt_dst = new IDT(WScript.Arguments.Unnamed(2));
|
||||
|
||||
// IDT files must represent identical table.
|
||||
if (idt_src.columns.toString() != idt_dst.columns.toString() ||
|
||||
idt_src.types .toString() != idt_dst.types .toString() ||
|
||||
idt_src.table != idt_dst.table ||
|
||||
idt_src.key .toString() != idt_dst.key .toString())
|
||||
throw new Error("IDT files are not compatible.");
|
||||
} else
|
||||
idt_dst = null;
|
||||
|
||||
var po = new POCatalog();
|
||||
|
||||
// Add header.
|
||||
po.push("",
|
||||
"MIME-Version: 1.0\n" +
|
||||
"Content-Type: text/plain; charset=" + po.charset + "\n" +
|
||||
"Content-Transfer-Encoding: 8bit\n" +
|
||||
(WScript.Arguments.Named.Exists("L") ? "Language: "+ WScript.Arguments.Named("L") +"\n" : ""), false);
|
||||
"Content-Transfer-Encoding: 8bit\n", false);
|
||||
|
||||
// Build translations.
|
||||
for (var i = 1, argc = WScript.Arguments.Unnamed.Length; i < argc; i++) {
|
||||
// Open and parse IDT file(s).
|
||||
var
|
||||
idt_src_path = WScript.Arguments.Unnamed(i),
|
||||
idt_src = new IDT(idt_src_path);
|
||||
|
||||
for (var key in idt_src.data) {
|
||||
if (idt_dst != null && (key in idt_dst.data)) {
|
||||
// We found a record in both IDT files.
|
||||
for (var col in idt_src.types)
|
||||
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "")
|
||||
po.push(idt_src.data[key][col], idt_dst.data[key][col], false, "#: " + idt_src_path + ":" + idt_src.linenum[key]);
|
||||
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "") {
|
||||
var src = idt_src.data[key][col];
|
||||
var t = po.search(src);
|
||||
if (t) {
|
||||
// Text-to-translate already present. Add source to the list.
|
||||
t["#"] += " " + idt_src_path + ":" + idt_src.linenum[key];
|
||||
} else {
|
||||
// The record is available in the source IDT file only (or there is no destination IDT).
|
||||
for (var col in idt_src.types)
|
||||
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "")
|
||||
po.push(idt_src.data[key][col], "", false, "#: " + idt_src_path + ":" + idt_src.linenum[key]);
|
||||
// Add text-to-translate.
|
||||
po.push(src, "", false, "#: " + idt_src_path + ":" + idt_src.linenum[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -609,8 +670,8 @@
|
||||
** SIG ** MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
|
||||
** SIG ** DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
|
||||
** SIG ** gjcCAR4wJAIBAQQQcAVhGs441BGiowAQS9NQkAIBAAIB
|
||||
** SIG ** AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFEuDcHZyRyXZ
|
||||
** SIG ** zF25+zdkgilPy7bQoIISyDCCA+4wggNXoAMCAQICEH6T
|
||||
** SIG ** AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFPyqg1blxmZh
|
||||
** SIG ** YaA24HdU6DcuolSfoIISyDCCA+4wggNXoAMCAQICEH6T
|
||||
** SIG ** 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
|
||||
** SIG ** CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
|
||||
** SIG ** cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
|
||||
@ -764,31 +825,31 @@
|
||||
** SIG ** OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
|
||||
** SIG ** MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
|
||||
** SIG ** AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
|
||||
** SIG ** DQEJBDEWBBTOklb60U5Cei+o8kkwNkAo539ocDANBgkq
|
||||
** SIG ** hkiG9w0BAQEFAASCAQBHQ/9ubHkHX3l29kS5kE0Gx7U0
|
||||
** SIG ** /vyXYN5KvRQ7I2cfTg1zgPbDyXos7RZ9EJjCXO98JVk6
|
||||
** SIG ** OFbmDbnMQbnR3kfxREJSWprYJRv718Sj4hFitqcdzPW6
|
||||
** SIG ** lyvLqKZwX0GN3/ipBV39T9P4YhXCDfJ5IEEbOSMnEqha
|
||||
** SIG ** McdHFAInOHEWKGDwGw7nWX+OgQmDYBpsCd1riFvqtG5N
|
||||
** SIG ** XotE4X8fjoh20tMJ4D0qfg41Hpwz27eicRT86uoOGWJA
|
||||
** SIG ** D+ffSDHQ2lCCrGYJNuYXOoiSYDbBfV1tR47KvWT0Tfmb
|
||||
** SIG ** 8vhzLwDUuUjHNVRjUBsD/sFbhfbK+hVEM7yDBuLoHWz5
|
||||
** SIG ** aj0m6uzooYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
|
||||
** SIG ** DQEJBDEWBBQK1AFx+KTksMdng2XH8zqIl5sa0TANBgkq
|
||||
** SIG ** hkiG9w0BAQEFAASCAQAatsBo1sDSD2iglC5/t/YTzoOx
|
||||
** SIG ** 3bMS78pZdRMJgsd2HuTLAoIR+EEI9oxYzcxEGhQVcwX6
|
||||
** SIG ** HbgzBpspzEJL8g69z8GniztNxas3H0+mI+PuKZt+h0l+
|
||||
** SIG ** P3BxiZVe7ai8FkcVhR0H4hZNldDV+rRHt7mKtxrybQOr
|
||||
** SIG ** aHS8x6yMH8B6SxdOeMyUd/TkW4q17bh25Zu0a5Fzjqmx
|
||||
** SIG ** MJbrzvgqpA9v/ltLyqJpcmoE6HIOSJc5QxKTdBcNmzpb
|
||||
** SIG ** OJ5QS3AmMBX/NjLY/WRqCok2pXytFrTlcmCmnRWjs54Y
|
||||
** SIG ** DB0mezF5VaqHUp4bxxlLcXuqb25vV6qy8nlN1ie+QtJL
|
||||
** SIG ** aOgJ/5OpoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
|
||||
** SIG ** AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
|
||||
** SIG ** bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
|
||||
** SIG ** bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
|
||||
** SIG ** RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
|
||||
** SIG ** MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
|
||||
** SIG ** hvcNAQkFMQ8XDTE2MDkxNjE2NTAyNVowIwYJKoZIhvcN
|
||||
** SIG ** AQkEMRYEFP/2E5ukiLIl+izsl9m1nHfxcfIHMA0GCSqG
|
||||
** SIG ** SIb3DQEBAQUABIIBAA+YrwcmRrAGzn5oELl5IHsYHShQ
|
||||
** SIG ** 3W5chZ1yUqwRU/LK6oo/cCk8bUseldq8PHV67axnVCzX
|
||||
** SIG ** aLlOOGXOggKIxB+s6vzcDZ7aJv/ssOU2GOFSXZoe78yV
|
||||
** SIG ** 4hGzOMYpULHz/OT6s4oD1oP/7JOcjd1XMK8L+trxJrJm
|
||||
** SIG ** BkJpc0f0B/EjBDcOialxi3KPftdQxEqHFet1Fbk02rCR
|
||||
** SIG ** 7a51w5fjLgkLwrEL8LF5g6iYBl0w2wlvldYh+ZrbJ1YU
|
||||
** SIG ** ATOYbfcD7H3Cu/XJUsFc+UBgQGA2unWxNa5F84crcmxV
|
||||
** SIG ** 0xQXnTLtuI06xLRBlmehNhWlV6olkWDYYa/OEaLDRBeq
|
||||
** SIG ** lb0K1jM=
|
||||
** SIG ** hvcNAQkFMQ8XDTE2MDkxOTA5MjUyMlowIwYJKoZIhvcN
|
||||
** SIG ** AQkEMRYEFOs5wO0WTiUofmt6BIjQukFVNedaMA0GCSqG
|
||||
** SIG ** SIb3DQEBAQUABIIBAEYwehr/b+AqLlCMPfLETZp8ZScC
|
||||
** SIG ** SxwAUc0pOpPY3qbZfvoV+CK1M6hOza5jmdi3owHKLCor
|
||||
** SIG ** Nl5hsZbnCm1SjOZ9q8fkl11Ps6m2KGH/lZEOdztSAHy0
|
||||
** SIG ** Cxy9fIPvxoOBbuQf4sLDR4W2ylRMv+Y67pFHv2Elg+f5
|
||||
** SIG ** MDz8OK+zUuccnYDceFI7H5XuKH72tSYeITcKb1iJuLfi
|
||||
** SIG ** B/8npGJnXL47vtyKacmykJ2sVS524DpQlqMSQEIXEz4U
|
||||
** SIG ** wfMhpshVydYTNVrgRRO9mov/k2VnJEl2H0BRcsXPgMUF
|
||||
** SIG ** Q2cx24QT526egKtEU0ldyN0nz+/g4/+iBAf2YfyXYfDK
|
||||
** SIG ** 2EBZSxI=
|
||||
</signature>
|
||||
</package>
|
||||
|
52
PO.js
52
PO.js
@ -192,6 +192,12 @@ POCatalog.prototype.push = function(key, trans, fuzzy, comment)
|
||||
}
|
||||
|
||||
|
||||
POCatalog.prototype.search = function(key)
|
||||
{
|
||||
return (key in this.data) ? this.data[key] : null;
|
||||
}
|
||||
|
||||
|
||||
POCatalog.prototype.translate = function(key)
|
||||
{
|
||||
if (!(key in this.data)) {
|
||||
@ -270,8 +276,8 @@ POCatalog.prototype.save = function(path)
|
||||
// SIG // MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
|
||||
// SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
|
||||
// SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
|
||||
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFIWWycuo7hWC
|
||||
// SIG // XD4eXBJhT5qNXjhRoIISyDCCA+4wggNXoAMCAQICEH6T
|
||||
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFOIhxP5qxoG4
|
||||
// SIG // L/0Jpyvl/dheNPSioIISyDCCA+4wggNXoAMCAQICEH6T
|
||||
// SIG // 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
|
||||
// SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
|
||||
// SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
|
||||
@ -425,30 +431,30 @@ POCatalog.prototype.save = function(path)
|
||||
// SIG // OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
|
||||
// SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
|
||||
// SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
|
||||
// SIG // DQEJBDEWBBRu3FF9mP0st28sz6ozxdOz3hoXGjANBgkq
|
||||
// SIG // hkiG9w0BAQEFAASCAQAAwzjZxcGwor+hr9BV4ToMMRKE
|
||||
// SIG // Ev3JQ8MzzA//8Mcc7hMu8tk6EwmsyvvujWKd35ZDlI6z
|
||||
// SIG // 5+gL+efrY/oYgu+SMSFkPUEx0rNxophdRqA/kBJ3mYjI
|
||||
// SIG // iWjY4d5PMDMQLRZcIAEm/nHZVwVw8TEX4Llpl/YO7ZoG
|
||||
// SIG // /JGnkLyzDvP2HOmKu6zWj69F3ICx6HcTuzBbe8ipW/2Q
|
||||
// SIG // TU+3biVCqw9F664Rx4JELBBz0Vy21HEhEAG4nOLzc0wY
|
||||
// SIG // v+A5aGNKxvT1B6v86+NSwc2BRjthy+tZyY7i3d2mqoXE
|
||||
// SIG // CLtvqlCDhRgmsAEuTriiA1NoTfpTpTqcqEsalbherJGQ
|
||||
// SIG // ZPBwqeopoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
|
||||
// SIG // DQEJBDEWBBQv+v/IHFo0ikn0Oyg+0/kbYp+LYzANBgkq
|
||||
// SIG // hkiG9w0BAQEFAASCAQCA8tXTcsCRhT/fAQ86SQbjmM4A
|
||||
// SIG // qstaH7me1R9BrzZPp3WKU4m1Bkp1fFMOfw7KAmshhJSW
|
||||
// SIG // Njt0sytBHBfW3awalYFiizBbqQlDzTXkQ8wAfxx+BdOr
|
||||
// SIG // xsO/CiTHMEkR5fRjR8U0kPG3om0rkytzXR0jr9/xaEwh
|
||||
// SIG // YhD02bez1Cre9IQE5aS3ZUssygM0XxhxVTotWnJmnmHu
|
||||
// SIG // wMaD8uMi7Pfyv1hqmkPwf5uOoOMAPC7gKUX39KF6Wm5q
|
||||
// SIG // LmSRBNxCaUxMqUhith7scDHvEL0i6JKSq+wZwuEJn9Ev
|
||||
// SIG // M0abwe4ltBPnFXagR+dmVbKboJuGTQ4ThKciofkGevlv
|
||||
// SIG // qo9zwpoloYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
|
||||
// SIG // AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
|
||||
// SIG // bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
|
||||
// SIG // bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
|
||||
// SIG // RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
|
||||
// SIG // MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
|
||||
// SIG // hvcNAQkFMQ8XDTE2MDkxNjEyMzczNFowIwYJKoZIhvcN
|
||||
// SIG // AQkEMRYEFKRwj4RX4soe1EoFkdcak0yL5smOMA0GCSqG
|
||||
// SIG // SIb3DQEBAQUABIIBAB4JKKplFtYkF6cigGfevY4aPAIA
|
||||
// SIG // S1ygZPaknt16zruQbKcqSxs/tGYzgw/Af0s6mpZGv6Gn
|
||||
// SIG // FiyK8aQ+ZxHmNnxQzjEtggHRAuf7uRNwK63RNIDgz35I
|
||||
// SIG // 6vqHQnZjCOlFEUYHPxqjqTJFua6OOoWsmNNpWVc3KO4K
|
||||
// SIG // MzUVyA3wqtxc/N0eq6y5BOkB+WMkrz3Si896uHrwkm2f
|
||||
// SIG // 03qUwPDoJLCdVIrGfzf+ktIEPsCHYPDHk6s/tCI+o4gQ
|
||||
// SIG // OfKUsbzrVwmbdEK4HnNsu/hjCGs6sT2mjgysJWO6kFN/
|
||||
// SIG // K/57qEOBFIjRkzE8WZS/D4OmrUTR552WiiLUb16NOWgy
|
||||
// SIG // J+F5oIk=
|
||||
// SIG // hvcNAQkFMQ8XDTE2MDkxOTA5MjQzM1owIwYJKoZIhvcN
|
||||
// SIG // AQkEMRYEFN0EJzHhISVqw9lvWoaKXBsGPpKhMA0GCSqG
|
||||
// SIG // SIb3DQEBAQUABIIBAAwhYaJpWoecig5IdF4Lh5hTGJ0m
|
||||
// SIG // hJwoXe+hgvbU7qJbBKQWbP+iVSLmwRU7Er7To0sf/vrA
|
||||
// SIG // SoFOTKR52GHvy/718YA18c2xvGJldnqfMmzS1RkuwlrL
|
||||
// SIG // 1Ca2/QvBmDvVHgZ8eHtVJ9GMpGnmtr3l30Wfs7PJy5XN
|
||||
// SIG // g4i8E1manA41ohAuzrHYbrpW1h9D69os64oWh2Ey0s6O
|
||||
// SIG // a3fcV/FjdnM3q7v4UK516KsdzECnGEc6IHdpbDw4ZYap
|
||||
// SIG // /VkHQ4lFhDqKv9bfG5yyjE0al1p6fkAc5GTdIe+P5KF9
|
||||
// SIG // /5X3ez70MA/HQX7XvSLmHAI5tBjjbGtPv94VdOn2Po2N
|
||||
// SIG // S+OQOx4=
|
||||
// SIG // End signature block
|
||||
|
Loading…
x
Reference in New Issue
Block a user