diff --git a/PCK-Studio/Classes/IO/LOC/LOCFileWriter.cs b/PCK-Studio/Classes/IO/LOC/LOCFileWriter.cs index 09bb50ca..158cf2ce 100644 --- a/PCK-Studio/Classes/IO/LOC/LOCFileWriter.cs +++ b/PCK-Studio/Classes/IO/LOC/LOCFileWriter.cs @@ -24,7 +24,7 @@ namespace PckStudio.Classes.IO.LOC WriteInt(stream, type); WriteInt(stream, _locfile.Languages.Count); if (type == 2) WriteLocKeys(stream); - WriteLanguages(stream); + WriteLanguages(stream, type); WriteLanguageEntries(stream, type); } @@ -37,12 +37,27 @@ namespace PckStudio.Classes.IO.LOC WriteString(stream, key); } - private void WriteLanguages(Stream stream) + private void WriteLanguages(Stream stream, int type) { _locfile.Languages.ForEach(language => { WriteString(stream, language); - WriteInt(stream, 0); + + //Calculate the size of the language entry + + int size = 0; + size += sizeof(int); // null long + size += sizeof(byte); // null byte + size += (sizeof(short) + Encoding.UTF8.GetByteCount(language)); // language name string + size += sizeof(int); // key count + + foreach (var locKey in _locfile.LocKeys.Keys) + { + if (type == 0) size += (2 + Encoding.UTF8.GetByteCount(locKey)); // loc key string + size += (2 + Encoding.UTF8.GetByteCount(_locfile.LocKeys[locKey][language])); // loc key string + } + + WriteInt(stream, size); }); }