' УПАКОВКА языкового PAK-файла Chromium ' Параметр командной строки - имя распакованного файла. ' Если параметр отсутствует, то по умолчанию ru.unp ' Упаковывает в файл с расширением pak Option Explicit Dim fso, f1, f2, filename, s, ID, txt, path, i, j, iCount, rc, idpos, txtpos Select Case WScript.Arguments.Count Case 0: filename = "ru_opera.unp" Case 1: filename = WScript.Arguments.Item(0) Case Else MsgBox "Недопустимое количество параметров командной строки!" WScript.Quit End Select Dim A(400000) Set fso = CreateObject("Scripting.FileSystemObject") path = "" Set f1 = fso.OpenTextFile(path + filename,1, False, 0) Set f2 = fso.OpenTextFile(path + Left(filename, InStr(1,filename, ".")) + "pak",2,True) Do While Not f1.AtEndOfStream s = UCase(f1.readline) If Left(s,9) = "ROWCOUNT=" Then rc = CInt(Mid(s,10,255)) Save2 rc, 8 ElseIf s = "[TRANSLATION]" Then Exit Do End If Loop idpos = 12 txtpos = 18 + rc * 6 For i = 1 To rc s = f1.ReadLine ID = Left(s, InStr(1, s, "=") - 1) txt = Mid(s, InStr(1, s, "=") + 2,65535) txt = Left(txt, Len(txt) - 1) txt = Replace(txt, Chr(8), Chr(13), 1) ' Восстановить переносы строк из костылей txt = Replace(txt, Chr(7), Chr(10), 1) ' Восстановить переносы строк из костылей Save2 ID, idpos Save4 txtpos, idpos + 2 SaveTXT txt, txtpos txtpos = txtpos + Len(txt) idpos = idpos + 6 Next A(idpos) = 0 ' Последний пустой указатель A(idpos + 1) = 0 Save4 txtpos, idpos + 2 f2.Write Chr(5) + Chr(0) + Chr(0) + Chr(0) + Chr(1) + Chr(0) + Chr(0) + Chr(0) + Chr(A(8)) + Chr(A(9)) + Chr(0) + Chr(0) For i = 12 To txtpos -1 f2.Write Chr(A(i)) Next f1.Close f2.Close WScript.Echo "OK" Sub Save4(num, offset) Dim n1, n2, n3, n4 n4 = Int(num / 16777216) n3 = Int(num / 65536) - n4 * 256 n2 = Int(num / 256) - n4 * 65536 - n3 * 256 n1 = num - Int(num /256) * 256 A(offset) = n1 A(offset + 1) = n2 A(offset + 2) = n3 A(offset + 3) = n4 End Sub Sub Save2(num, offset) Dim n1, n2 n2 = Int(num / 256) n1 = num - Int(num /256) * 256 A(offset) = n1 A(offset + 1) = n2 End Sub Sub SaveTXT(s, offset) Dim i, c c = Len(s) For i = 1 To c A(offset + i -1) = Asc(Mid(s,i,1)) Next End Sub |