A predefined list of localizable columns introduced

This commit is contained in:
Simon Rozman 2016-09-16 18:51:47 +02:00
parent 2dd92906e3
commit d49be836da
2 changed files with 199 additions and 49 deletions

196
IDT.js
View File

@ -136,6 +136,156 @@ function IDT(path)
}
IDT.prototype.isLocalizable = function(col)
{
// Test against predefined list of columns.
switch (this.table.toLowerCase()) {
case "actiontext":
switch (this.columns[col].toLowerCase()) {
case "description":
case "template" : return true;
}
break;
case "control":
switch (this.columns[col].toLowerCase()) {
case "text":
case "help": return true;
}
break;
case "controlevent":
switch (this.columns[col].toLowerCase()) {
case "argument": return true;
}
break;
case "customaction":
switch (this.columns[col].toLowerCase()) {
case "target": return true;
}
break;
case "dialog":
switch (this.columns[col].toLowerCase()) {
case "title": return true;
}
break;
case "directory":
switch (this.columns[col].toLowerCase()) {
case "defaultdir": return true;
}
break;
case "error":
switch (this.columns[col].toLowerCase()) {
case "message": return true;
}
break;
case "feature":
switch (this.columns[col].toLowerCase()) {
case "title" :
case "description": return true;
}
break;
case "file":
switch (this.columns[col].toLowerCase()) {
case "filename":
case "language": return true;
}
break;
case "launchcondition":
switch (this.columns[col].toLowerCase()) {
case "description": return true;
}
break;
case "media":
switch (this.columns[col].toLowerCase()) {
case "diskprompt": return true;
}
break;
case "progid":
switch (this.columns[col].toLowerCase()) {
case "description": return true;
}
break;
case "property":
switch (this.columns[col].toLowerCase()) {
case "value": return true;
}
break;
case "publishcomponent":
switch (this.columns[col].toLowerCase()) {
case "appdata": return true;
}
break;
case "radiobutton":
switch (this.columns[col].toLowerCase()) {
case "text":
case "help": return true;
}
break;
case "registry":
switch (this.columns[col].toLowerCase()) {
case "value": return true;
}
break;
case "scheduledtask":
switch (this.columns[col].toLowerCase()) {
case "displayname":
case "description": return true;
}
break;
case "serviceinstall":
switch (this.columns[col].toLowerCase()) {
case "displayname":
case "description": return true;
}
break;
case "shortcut":
switch (this.columns[col].toLowerCase()) {
case "name" :
case "description": return true;
}
break;
case "uitext":
switch (this.columns[col].toLowerCase()) {
case "text": return true;
}
break;
case "verb":
switch (this.columns[col].toLowerCase()) {
case "command" :
case "argument": return true;
}
break;
case "wlanprofile":
switch (this.columns[col].toLowerCase()) {
case "name": return true;
}
break;
}
// Is this column localizable according to its type?
return this.types[col].charAt(0).toLowerCase() == "l";
}
IDT.prototype.save = function(path)
{
// Build output IDT file in memory.
@ -182,8 +332,8 @@ IDT.prototype.save = function(path)
// SIG // MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
// SIG // DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
// SIG // gjcCAR4wJAIBAQQQEODJBs441BGiowAQS9NQkAIBAAIB
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFDK3v7xPfQA4
// SIG // KZZoKH2KE80Twx3HoIISyDCCA+4wggNXoAMCAQICEH6T
// SIG // AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFFHlJC6w9pgr
// SIG // unXsafHb3Kze3WGyoIISyDCCA+4wggNXoAMCAQICEH6T
// SIG // 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
// SIG // CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
// SIG // cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
@ -337,30 +487,30 @@ IDT.prototype.save = function(path)
// SIG // OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
// SIG // MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
// SIG // AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
// SIG // DQEJBDEWBBT3K5DzXHaaaztTUWYcKscHz5goHTANBgkq
// SIG // hkiG9w0BAQEFAASCAQBCIQ7y8ZVmNZke0OJsfe38h/25
// SIG // VCuB1bCSqiqF7+el2gXbKcQSMSpbF+PqG6HjtzMiFncJ
// SIG // myApTJ+AyBh8ScoRwa+XoOeIV+TPwW2UKy1FUUJ7TAi7
// SIG // /R7LhYq2xuhcAt6S0kxXy/qDJhhhPSXovi1d1dlNHINT
// SIG // wPy9yPeTqD8eSug3xYvt6rsKtQEqJyITIjeU4YIQWDDw
// SIG // UfdCLhybrtbvyZ881KICrkol/u3DzPF6L9CiHayFYXUO
// SIG // ToJOGPiGOAedHLWFpFG0QdYZvQogtzZcYuFtZWbTx/ud
// SIG // SSXr5BOydkUZ0qjAQoIWuUZbdhGfPoVGQOPUzQVChKYj
// SIG // yn/1DQrfoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
// SIG // DQEJBDEWBBQq1dLcVq9BbKV5KMQ98reQvMJINjANBgkq
// SIG // hkiG9w0BAQEFAASCAQCEQ8DUukR0gIlI0xVrhSIbTkOg
// SIG // Igjh6jIeChBUVtvhjJUusK0k7PuAocrhfORC5g4DiuGY
// SIG // TWkFhgNZFD2Koi8VwG4Ex8nU5gAX280BOSDM7tPVm1nv
// SIG // 58y5PaxMETlx4HteDjSz9f4cdmRHz+rLtjRiL2WCmn5N
// SIG // jFfHzLfbvq/zdv/1d3ZcQv5stvM26oGRhsxJi9F+2/jQ
// SIG // o6363vmhiXfpOTdYORaH+KnzH3wuCTa72T65tqO3n+N+
// SIG // 7R3Is3hi6K3Eca3YcLq60FNTy0dOrYBYiqKl9PvkZZ54
// SIG // 7xw8QdNVBVxs9wBXT2XZCGmbQ72JLMuwnX3Nnra0HXj3
// SIG // 8aTHXhQuoYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
// SIG // AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
// SIG // bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
// SIG // bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
// SIG // RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
// SIG // MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
// SIG // hvcNAQkFMQ8XDTE2MDkxNjEyMzczMlowIwYJKoZIhvcN
// SIG // AQkEMRYEFHa81Osey4h4aGVWL2y16ek6c50BMA0GCSqG
// SIG // SIb3DQEBAQUABIIBAIyk3446yLyAYUB/wxL7SYuRdyBQ
// SIG // zVPGxWbW73lgTAPzWMqWVtkEOPEe1z6T1us5Ss9OFQ8g
// SIG // P3VbDUfvIxNA2q0a2Z+GgS8tyrlQK1WswLdv11mmVmGa
// SIG // c4+FG5pZu0KEHkzAhTfq6H6DPg+fz46OTCyxYaNIYzHp
// SIG // azs8tyylmjFS9jEo57Fo+Px23ISqEmBsGVx8vEMY0+N7
// SIG // UOh1sVj8XTHrZi9DHAvs+JX1o5XcYW+9tRiQshrXgba6
// SIG // QVSb21e5G7lPMPWD1tGLfbCqKhDYqHFCy5RnQbfYaWTh
// SIG // ZnjfmfQ9+/2MWbRdFNqscheuMcasYaEQWFsTiMV/p7D6
// SIG // MP2TGpo=
// SIG // hvcNAQkFMQ8XDTE2MDkxNjE2NTAyM1owIwYJKoZIhvcN
// SIG // AQkEMRYEFAnKqIQVMxZDqD0uAifxOwHFk/BnMA0GCSqG
// SIG // SIb3DQEBAQUABIIBADBE8FVrbFQGv080T3L0rMSvz8E4
// SIG // 2AEck2JAIvVXN0JZ603FlZiwO709lVxszK3v8MfFwd1N
// SIG // 0YFqIXWfmTU9G3k2EoSSAck+iDOQAkTOnKT6gP00TxHj
// SIG // rKQqiWKe8VPVLwJqXg6HfpX4Ap1udQI0C/iSWENsGJIO
// SIG // sO6Oo6lEeboysT/n6OZEbSVHpWwTeCDUQt6NLv/otT7R
// SIG // hUjy/r5G31i0zbt1nBLsxsXT2WN/B0czdQWfLzD327AA
// SIG // 57DcLuuGNgF2Jt38XOfbmAqYZjD8eoWW2XCdj3J5P/LB
// SIG // Ft7I/ZIWpL+qSSUJtVX6l2OCHkPzEUYHDbxauj4ieB4E
// SIG // LjGbE0k=
// SIG // End signature block

52
MSI.wsf
View File

@ -512,12 +512,12 @@
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.types[col].charAt(0).toUpperCase() == "L" && idt_src.data[key][col] != "")
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 (or there is no destination IDT).
for (var col in idt_src.types)
if (idt_src.types[col].charAt(0).toUpperCase() == "L" && idt_src.data[key][col] != "")
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]);
}
}
@ -567,7 +567,7 @@
// Translate records.
for (var key in idt_src.data) {
for (var col in idt_src.types) {
if (idt_src.types[col].charAt(0).toUpperCase() == "L" && idt_src.data[key][col] != "")
if (idt_src.isLocalizable(col) && idt_src.data[key][col] != "")
idt_src.data[key][col] = po.translate(idt_src.data[key][col]);
}
}
@ -609,8 +609,8 @@
** SIG ** MIIXmAYJKoZIhvcNAQcCoIIXiTCCF4UCAQExCzAJBgUr
** SIG ** DgMCGgUAMGcGCisGAQQBgjcCAQSgWTBXMDIGCisGAQQB
** SIG ** gjcCAR4wJAIBAQQQcAVhGs441BGiowAQS9NQkAIBAAIB
** SIG ** AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFBFS1Dc0BFx7
** SIG ** 6vYeYiyIGC1cPCcBoIISyDCCA+4wggNXoAMCAQICEH6T
** SIG ** AAIBAAIBAAIBADAhMAkGBSsOAwIaBQAEFEuDcHZyRyXZ
** SIG ** zF25+zdkgilPy7bQoIISyDCCA+4wggNXoAMCAQICEH6T
** SIG ** 6/t8xk5Z6kuad9QG/DswDQYJKoZIhvcNAQEFBQAwgYsx
** SIG ** CzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENh
** SIG ** cGUxFDASBgNVBAcTC0R1cmJhbnZpbGxlMQ8wDQYDVQQK
@ -764,31 +764,31 @@
** SIG ** OWQwCQYFKw4DAhoFAKBwMBAGCisGAQQBgjcCAQwxAjAA
** SIG ** MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisG
** SIG ** AQQBgjcCAQsxDjAMBgorBgEEAYI3AgEVMCMGCSqGSIb3
** SIG ** DQEJBDEWBBS+6SF1g2JrK4rp+O3L8qwB8cicdDANBgkq
** SIG ** hkiG9w0BAQEFAASCAQAUJ11IjJjmGNrCZkBHUPzPUspV
** SIG ** 9z7eS08u30ORQ4Rl9otiIg4HJUeEfnQyG2O3w1xmOvwJ
** SIG ** w1qeAgNttl4+Bj2mUBY8QFLy0HubXMLEPQBDTZ7f/pSg
** SIG ** yYE+pSqciCGCYrAFWkucH/ui0S/gfxZnBbM9K1AjRDRW
** SIG ** B9oMbRx9yY2URqHachNKZ+LTGBPhVuiLy245Nw4uuLe8
** SIG ** i9bX2kEV8XPUSanko0mtY7h06b4n2b90Buby+4TId9hC
** SIG ** BerBnjrAbYS0c+Ra3GMURtCbGbAzmg8ixR/kg0IPF1wu
** SIG ** QNqrhnw2yWJXhnTEZm5HPQVYISl8QkO3TFcfHBxkb/Oe
** SIG ** QRR/NYwboYICCzCCAgcGCSqGSIb3DQEJBjGCAfgwggH0
** 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 ** AgEBMHIwXjELMAkGA1UEBhMCVVMxHTAbBgNVBAoTFFN5
** SIG ** bWFudGVjIENvcnBvcmF0aW9uMTAwLgYDVQQDEydTeW1h
** SIG ** bnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIENBIC0g
** SIG ** RzICEA7P9DjI/r81bgTYapgbGlAwCQYFKw4DAhoFAKBd
** SIG ** MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZI
** SIG ** hvcNAQkFMQ8XDTE2MDkxNjEyMzgwM1owIwYJKoZIhvcN
** SIG ** AQkEMRYEFASd3svY6QexmPrwyTgYM37i8CbtMA0GCSqG
** SIG ** SIb3DQEBAQUABIIBAA5YzP22hUvXvFxoEB/NGRSxYN1r
** SIG ** ruCy/XfTOs6MaML1by7TpUR0ID6NxEibSEiL8LdjKl1F
** SIG ** eQUksNz3i7knlXzjbt76IWJIwszJg1kfhvpnBOk+lIW+
** SIG ** Yl75P+Is3XO/6B7W2S9zon8qlLg8aK3pjBvq/bCfhqrB
** SIG ** jY8IbgTY4nv5onMF4WaC5/MXI6/N2Eb6RWuH2Ywd7xlk
** SIG ** qiahhIey5Z8IZLuEVAH+PiZV89wf23t/OnmhKcgkNwHU
** SIG ** 7fe8PUq8H+2LB+kA43JWmgDoy5rjTxgr6u/KGBIn4wVg
** SIG ** +WqvhbRk/EF994ZtE5vMg4lqMTOiUmvJoTJVOZd6pQlL
** SIG ** K7/akzU=
** 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=
</signature>
</package>