LOC

NameSize (per element)Description
version(int32)0x4indicates format version
Language Count(int32)0x4how many languages are within the file
KeysvariableKeys for languages(only if version == 2)
Language indexvariableindex of all languages within the file
Language ListvariableAll languages and strings within the file

Languages Index

NameSize (per element)Description
Language(String)variableindex of all languages within the file
Unknown Integer(int32)0x4it is unknown what this does, but there is a 4 byte space after every language.

(repeat per Language Count)

Language

NameSize (per element)Description
ReadByte(int32)0x4indicates weather or not to read a single byte following this element
unknown byte(byte)0x1to only be read if the previous integer is greater than 0
Language(string)variableLanguage to be used(should be located within languages index)
String Count(int32)0x4number of strings within the language
StringsvariableStrings within the language

(repeat per Language Count)

String

NameSize (per element)Description
Keyvariablewill attempt to either look up key based on previous list, based on current position within strings, or read a new string from the file as the key.
Value(string)variablestring entry contents

(repeat per String Count)

Keys

NameSize (per element)Description
Use Unique IDs(bool)0x1indicates if unique IDs will be used per-string
Key Count(int32)0x4how many Keys to be read
Key(*repeats per count)(Hex ID)0x4 // stringunique key for strings, may either be a 4 byte hexadecimal ID or String itself