diff options
author | glx22 <glx22@users.noreply.github.com> | 2020-05-17 19:11:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-17 19:11:53 +0200 |
commit | e31def197f3e15bf5b3c31c6f9ad53b3d1232e2d (patch) | |
tree | 221b8f1e61848ece638e1a0fad31d5c652afd6f0 | |
parent | 70ccd34fa02f74612279aafefacbed5f75af7c28 (diff) | |
download | openttd-e31def197f3e15bf5b3c31c6f9ad53b3d1232e2d.tar.xz |
Fix: properly support utf-8 in baseset translation vbscript (#8154)
-rw-r--r-- | media/baseset/translations.vbs | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/media/baseset/translations.vbs b/media/baseset/translations.vbs index fffb57748..8632ef069 100644 --- a/media/baseset/translations.vbs +++ b/media/baseset/translations.vbs @@ -63,10 +63,13 @@ Sub Lookup(ini_key, str_id, outfile) For Each file In folder.Files If UCase(FSO.GetExtensionName(file.Name)) = "TXT" Then Dim f - Set f = FSO.OpenTextFile(file.Path) + Set f = CreateObject("ADODB.Stream") + f.Charset = "utf-8" + f.Open + f.LoadFromFile(file.Path) - Do Until f.atEndOfStream - line = f.ReadLine() + Do Until f.EOS + line = f.ReadText(-2) If InStr(1, line, "##isocode ") = 1 Then p = Split(line) @@ -80,8 +83,9 @@ Sub Lookup(ini_key, str_id, outfile) End If i = i + 1 End If - Loop + + f.Close End If Next @@ -89,7 +93,7 @@ Sub Lookup(ini_key, str_id, outfile) ISort output For Each line In output - outfile.Write line & vbCrLf + outfile.WriteText line, 1 Next End Sub @@ -100,7 +104,9 @@ Dim infile Set infile = FSO.OpenTextFile(inputfile) Dim outfile -Set outfile = FSO.CreateTextFile(outputfile, True) +Set outfile = CreateObject("ADODB.Stream") +outfile.Charset = "utf-8" +outfile.Open Do Until infile.atEndOfStream @@ -109,15 +115,30 @@ Do Until infile.atEndOfStream If InStr(1, line, "ORIG_EXTRA.GRF ") = 1 Then p = Split(line, "=") If Trim(p(1)) = "" Then - outfile.Write("ORIG_EXTRA.GRF = " & GetExtraGrfHash() & vbCrLf) + outfile.WriteText "ORIG_EXTRA.GRF = " & GetExtraGrfHash(), 1 Else - outfile.Write(line & vbCrLf) + outfile.WriteText line, 1 End If ElseIf InStr(1, line, "!! ") = 1 Then p = Split(line) Lookup p(1), p(2), outfile Else - outfile.Write(line & vbCrLf) + outfile.WriteText line, 1 End If Loop + +' UTF-8 Text ADO Stream includes BOM, so we need to remove it +Dim outfile_noBOM +Set outfile_noBOM = CreateObject("ADODB.Stream") +outfile_noBOM.Type = 1 +outfile_noBOM.Open + +' Copy Text stream to Binary stream, skiping the BOM +outfile.Position = 3 +outfile.CopyTo outfile_noBOM +outfile.Close + +' Write the Binary stream +outfile_noBOM.SaveToFile outputfile, 2 +outfile_noBOM.Close |