Lang cds
The language files in RIFT are used for localization.
They consist of a key which is used in other parts of RIFT and text for that key.
Files
There are language files for some of the supported languages.
Name |
---|
lang_english.cds |
lang_french.cds |
lang_russian.cds |
A reference C# implementation to read this data can be found here: https://github.com/imathrowback/telarafly/blob/master/Assets/RiftAssets/EnglishLang.cs
Format
The language files have the following format:
Header
Bytes/Offset | Content | Comment |
---|---|---|
4 bytes | 32bit integer | Number of language text entries |
1024 bytes | byte | Huffman Frequency values |
Entries Offsets
Following the header is an array of entries up to the amount read in the header. Each entry is variable in length.
Bytes/Offset | Content | Comment |
---|---|---|
4 bytes | 32bit integer | Entry Key |
variable | LEB128 | LEB128 encoded integer that represents the offset of the entry in the file |
Entries
Following the entries offset table are the actual entries up to the amount read in the header, they are in the same order as the keys above.
Bytes/Offset | Content | Comment |
---|---|---|
variable | LEB128 | Encoded integer that represents the compressed size of the data stream |
variable | LEB128 | Encoded integer that represents the uncompressed size of the data stream |
variable | binary serialized data | Data that represents a language entry, this data is compressed and represents data encoded in the binary serialization format as most other RIFT data: DAT_Format |
To decompress the data you must use the frequency table read earlier to create a Huffman Reader: https://github.com/imathrowback/telarafly/blob/master/Assets/DatParser/HuffmanReader.cs